hcharbonnier / mangatranslation
PHP 漫画自动翻译器(与 Google Cloud Platform 兼容)
1.3.0
2021-12-01 21:32 UTC
Requires
- google/cloud-translate: ^1.7.1
- google/cloud-vision: ^0.24.0
- ksubileau/color-thief-php: ^1.4.1
Requires (Dev)
- phpstan/phpstan: ^0.12.17
- phpunit/phpunit: ^7
This package is auto-updated.
Last update: 2024-09-29 05:48:45 UTC
README
PHP 漫画自动翻译器库(与 Google Cloud Platform 兼容)
仅 CPU,无 cuda,无 opencv,无本地机器学习
警告
- 我不是开发者,这个项目运行良好,但代码质量可能不好...
- 为了获得可接受的结果,您的漫画/漫画原始质量必须接近完美!!
- 当从中文(漫画)翻译时,Google 翻译工作得很好,但从日语(漫画)翻译时则不太好
前端
如果您想测试库,可以使用以下 example.php 文件或使用专用前端: https://github.com/hcharbonnier/mangatranslation-frontend
翻译示例
源代码
翻译
工作流程摘要
- 打开图像(jpeg、png、gif 或 bmp)
- 检测文本框
- 检测字体大小
- 在文本框中 OCR 文本
- 从文本框中移除旧文本
- 检查 sqliteDB 是否已为我们已知的当前字符串翻译
- 使用 Google API 进行翻译(或免费的 Deepl API)
- 如果可能,扩展文本框
- 调整翻译字体大小以适应文本框
- 在相应的文本框中写入翻译
- 导出图像
已知问题
- 让我知道
安装
在您的项目中创建一个 composer.json 文件,并添加
{
"minimum-stability": "dev",
"require": {
"hcharbonnier/mangatranslation": ">=1.3.0"
}
}
然后安装依赖项
composer install mkdir uploads
需求
- php-7.4(未与 php<7.4 进行测试,但可能可以工作)
- php-gd
- php-openssl
- php-bcmath
- php-curl
- php-sqlite3
- 配置了翻译和视觉功能的 Google Cloud Platform 项目。(https://cloud.google.com/dataproc/docs/guides/setup-project)
- 如果您更喜欢 DeepL 翻译,则可以免费使用 DeepL 账户
开发者额外需求
- php-7.4-xml
- php-7.4-xmlrpc
- php-7.4-mbstring
示例
example.php
<?php require_once __DIR__ . '/vendor/autoload.php'; // Autoload files using Composer autoload use hcharbonnier\mangatranslation\MangaImage; $trans=new MangaImage($argv[1]); $trans->detect_block(); $trans->merge_near_block(); $trans->ocr(); $trans->translate("google"); // possible values are "google" (default) or "deepl" $trans->remove_empty_block(); $trans->clean_raw(); $trans->write_translation(); $trans->export($argv[2],90);
然后运行
$ export GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_GOOGLE_PROJECT.json
$ php example.php image.jpg translated.jpg
额外功能
Mangatranslation 可以与自定义前端集成以执行更好的翻译。此功能允许用户与过程交互
获取文本框列表
$trans->get_blocks() : array
手动指定额外的文本框
$trans->add_block($x1,$y1,$x2,$y2,$x3,$y3,$x4,$y4) : void
获取文本框 $id_block 的翻译
$trans->get_block_translation(int $id_block) : string
获取文本框 $id_block 的 OCR
$trans->get_block_ocr(int $id_block) : string
手动指定翻译
//to be call BEFORE translate() !!! $trans->set_block_translation(int $id_block,"Translated text") : void
手动指定清理后的原始图像
$trans->set_cleaned_raw("toto_clean.jpg") : void

