Commit e8ddaf82 authored by John's avatar John
Browse files

Commit

parent 4ad03ea8
Loading
Loading
Loading
Loading

README_JA.md

0 → 100644
+146 −0
Original line number Diff line number Diff line
# BallonTranslator
[简体中文](README.md) | [English](README_RU.md) | [Русский](README_RU.md) | 日本語

ディープラーニングを活用したマンガ翻訳支援ツール。

<img src="doc/src/ui0.jpg" div align=center>

<p align=center>
プレビュー
</p>

# 特徴
* 完全自動翻訳
  - 自動テキスト検出、認識、削除、翻訳をサポートし、全体的な性能はこれらのモジュールに依存します。
  - 文字配置は、原文の書式推定に基づいています。
  - 漫画やコミックでまともに動作します。
  - マンガ->英語、英語->中国語の組版が改善されました(バルーン領域の抽出に基づく)。

* 画像編集
  マスク編集とインペイントのサポート(PSのスポットヒーリングブラシツールのようなもの)

* テキストの編集
  リッチテキストフォーマットをサポートし、翻訳されたテキストはインタラクティブに編集することができます。

# 使用方法

Windowsユーザーは、[腾讯云](https://share.weiyun.com/xoRhz9i4)または[MEGA](https://mega.nz/folder/gmhmACoD#dkVlZ2nphOkU5-2ACb5dKw) or [Google Drive](https://drive.google.com/drive/folders/1uElIYRLNakJj-YS0Kd3r3HE-wzeEvrWd?usp=sharing)(note: you also need to download latest Ballonstranslator-1.3.xx from GitHub release and extract it to overwrite **Ballontranslator-1.3.0-core** or older installation to get the app updated.)

## ソースコードの実行

```bash
# まず、Python(<=3.9 )がシステムにインストールされている必要があります。
$ python --version

# このリポジトリのクローン
$ git clone https://github.com/dmMaze/BallonsTranslator.git ; cd BallonsTranslator

# macOSの場合、requirements_macOS.txtをインストール
$ pip install -r requirements.txt
```

NVIDIA GPUをお持ちの場合、GPUアクセラレーションを有効にするためにpytorch-cudaをインストールします。

```bash
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
```

[MEGA](https://mega.nz/folder/gmhmACoD#dkVlZ2nphOkU5-2ACb5dKw) or [Google Drive](https://drive.google.com/drive/folders/1uElIYRLNakJj-YS0Kd3r3HE-wzeEvrWd?usp=sharing)  から **data** フォルダをダウンロードし、BallonsTranslator/ballontranslatorに移動して、最後に以下を実行します
```bash
python ballontranslator
```


Sugoi Translator(日英のみ)を使用するには、[オフラインモデル](https://drive.google.com/drive/folders/1KnDlfUM9zbnYFTo6iCbnBaBKabXfnVJm)をダウンロードし、"sugoi_translator"をBallonsTranslator/ballontranslator/data/modelsに移動してください。

## 完全自動翻訳
**万が一、プログラムがクラッシュして情報が残らなかった場合に備えて、以下のgifを参考に、ターミナルで実行することをお勧めします。**また、初回実行時に希望するトランスレータを選択し、ソース言語とターゲット言語を設定してください。翻訳が必要な画像が入ったフォルダを開き、
「実行」ボタンをクリックして処理が完了するのを待ちます。
<img src="doc/src/run.gif">

このとき、フォントサイズや色などのフォントフォーマットはプログラムによって自動的に決定されますが、panel->Letteringで、対応するオプションを"decide by program"から"use global setting"に変更すれば、これらのフォーマットを事前に決定できます(グローバル設定とは、シーン内の
テキストブロックを編集していないときに右フォントフォーマットパネルで表示されるフォーマットのことです)。

## 画像編集

### 修復ツール
<img src="doc/src/imgedit_inpaint.gif">
<p align = "center">
画像編集モード、修復ツール
</p>

### 長方形ツール
<img src="doc/src/rect_tool.gif">
<p align = "center">
長方形ツール
</p>

不要なインペイント結果を"消去"するには、**右ボタン**を押した状態でインペイントツールまたは矩形ツールを使用します。
結果はアルゴリズム(gifの"方法1"と"方法2")がどれだけ正確にテキストマスクを抽出するかに依存します。複雑なテキストと背景の場合、パフォーマンスが低下する可能性があります。

## テキスト編集
<img src="doc/src/textedit.gif">
<p align = "center">
テキスト編集モード
</p>

<img src="doc/src/multisel_autolayout.gif" div align=center>
<p align=center>
テキストの一括書式設定と自動レイアウト
</p>

## ショートカット
* A/D または pageUp/Down でページをめくります。
* Ctrl+Z, Ctrl+Y でほとんどの操作を元に戻す/やり直すことができます。
* T でテキスト編集モード、(または下部のツールバーの「T」ボタン)W を押してテキストブロック作成モードを起動し、右ボタンをクリックしたままキャンバス上でマウスをドラッグすると、新しいテキストブロックが追加されます。(テキスト編集のgifを参照)。
* Pで画像編集モードへ。
* 画像編集モードでは、右下のスライダーでオリジナル画像の透明度を調整します。
* 下のツールバーの「OCR」と「A」ボタンは、OCRと翻訳を有効にするかどうかを制御し、それらを無効にした場合、プログラムはテキストの検出と削除を行いますだけです。
* 設定パネルで自動モジュールのパラメータを設定します。
* 画像のサイズを変更するには、Ctrl + +/。

<img src="doc/src/configpanel.png">


# Automation modules
このプロジェクトは[manga-image-translator](https://github.com/zyddnys/manga-image-translator)に大きく依存しており、オンラインサービスやモデルトレーニングは安くないので、プロジェクトの寄付を検討してください:
- Ko-fi: <https://ko-fi.com/voilelabs>
- Patreon: <https://www.patreon.com/voilelabs>
- 爱发电: <https://afdian.net/@voilelabs>

Sugoi translatorは、[mingshiba](https://www.patreon.com/mingshiba)によって作成されています。

## 文字検出
英語と日本語のテキスト検出をサポートし、学習コードと詳細は[comic-text-detector](https://github.com/dmMaze/comic-text-detector)に掲載されています

## OCR
 * mit_32pxのテキスト認識モデルは、manga-image-translatorのもので、英語と日本語の認識とテキスト色の抽出をサポートしています。
 * mit_48pxのテキスト認識モデルは、manga-image-translatorのもので、英語、日本語、韓国語の認識とテキストカラーの抽出をサポートしています。
 * [manga_ocr](https://github.com/kha-white/manga-ocr)[kha-white](https://github.com/kha-white)からです、

## 修復
  * AOTは、manga-image-translatorからです
  * patchmatchは[PyPatchMatch](https://github.com/vacancy/PyPatchMatch)のnondl algrithomで、このプログラムは私による[修正版](https://github.com/dmMaze/PyPatchMatchInpaint)を使用しています。


## 翻訳者

 * GFW によってブロックされていない場合は、goolge トランスレータの URL を *.cn から *.com に変更してください。
 * Caiyunの翻訳者は[token](https://dashboard.caiyunapp.com/)を必要とします
 * papago
 * DeepL & Sugoi translator(およびCT2変換)、[Snowad14](https://github.com/Snowad14)に感謝します

 新しいトランスレータを追加するには、[how_to_add_new_translator](doc/how_to_add_new_translator.md)を参照してください。これはBaseClassをサブクラスにして、2つのインターフェースを実装するだけでアプリケーションで使用できますので、プロジェクトへのコントリビュートは歓迎します。


## その他
* あなたのコンピュータにNvidia GPUがある場合、プログラムはデフォルトですべてのモデルのcudaアクセラレーションを有効にし、およそ6G GPUメモリを必要とします。
* ロシア語のローカライズを担当した[bropines](https://github.com/bropines)に感謝します。

## 完全自動翻訳結果のプレビュー
|            オリジナル            |         翻訳済み (中国語)         |         翻訳済み (英語)         |
| :-----------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: |
|![Original](ballontranslator/data/testpacks/manga/original2.jpg 'https://twitter.com/mmd_96yuki/status/1320122899005460481')| ![Translated (CHS)](doc/src/result2.png) | ![Translated (ENG)](doc/src/original2_eng.png) |
|![Original](ballontranslator/data/testpacks/manga/original3.jpg 'https://twitter.com/_taroshin_/status/1231099378779082754')| ![Translated (CHS)](doc/src/original3.png) | ![Translated (ENG)](doc/src/original3_eng.png) |
| ![Original](ballontranslator/data//testpacks/manga/AisazuNihaIrarenai-003.jpg) | ![Translated (CHS)](doc/src/AisazuNihaIrarenai-003.png) | ![Translated (ENG)](doc/src/AisazuNihaIrarenai-003_eng.png) |
|           ![Original](ballontranslator/data//testpacks/comics/006049.jpg)           | ![Translated (CHS)](doc/src/006049.png) | |

README_RU.md

0 → 100644
+143 −0
Original line number Diff line number Diff line
# BallonTranslator
[简体中文](README.md) | [English](README_EN.md) | Русский | [日本語](README_JA.md)

Еще один компьютерный инструмент для перевода комиксов/манги на основе глубокого обучения.

<img src="doc/src/ui0.jpg" div align=center>

<p align=center>
Пример интерфейса
</p>

# Особенности
* Полностью автоматизированный перевод  
  - Поддержка автоматического обнаружения, распознавания, удаления и перевода текста, общая производительность зависит от этих модулей.
  - Начертание букв основано на оценке форматирования оригинального текста.
  - Хорошо работает с мангой и комиксами.
  - Улучшенная верстка манга->английский, английский->китайский (основана на выделении облачков текста).
  
* Редактирование изображений  
  Поддержка редактирования масок и закраски (что-то вроде инструмента точечной лечебной кисти в PS) 
  
* Редактирование текста  
  Поддержка богатого форматирования текста, переведенные тексты можно редактировать в интерактивном режиме.

# Использование

Пользователи Windows могут загрузить Ballonstranslator-x.x.x-core.7z с сайта [腾讯云](https://share.weiyun.com/xoRhz9i4) или [MEGA](https://mega.nz/folder/gmhmACoD#dkVlZ2nphOkU5-2ACb5dKw) or [Google Drive](https://drive.google.com/drive/folders/1uElIYRLNakJj-YS0Kd3r3HE-wzeEvrWd?usp=sharing)(note: you also need to download latest Ballonstranslator-1.3.xx from GitHub release and extract it to overwrite **Ballontranslator-1.3.0-core** or older installation to get the app updated.)

## Запуск из исходного кода (работает слегка с ошибками)

```bash
# Во-первых, в вашей системе должен быть установлен Python(<=3.9 ).
$ python --version

# Клонируйте этот репозиторий
$ git clone https://github.com/dmMaze/BallonsTranslator.git ; cd BallonsTranslator

# Установка зависимостей
$ pip install -r requirements.txt
```

Установите pytorch-cuda, чтобы включить ускорение GPU, если у вас есть GPU NVIDIA.

```bash
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
```

Скачайте папку **data** с сайта [MEGA](https://mega.nz/folder/gmhmACoD#dkVlZ2nphOkU5-2ACb5dKw) or [Google Drive](https://drive.google.com/drive/folders/1uElIYRLNakJj-YS0Kd3r3HE-wzeEvrWd?usp=sharing) и переместите ее в BallonsTranslator/ballontranslator, наконец, выполните команду

```bash
python ballontranslator
```

## Полностью автоматизированный перевод
**Рекомендуется запускать программу в терминале на случай, если она аварийно завершила работу и не оставила никакой информации, см. следующий gif**.

Пожалуйста, выберите нужный переводчик и установите исходный и целевой языки при первом запуске приложения. Откройте папку с изображениями, которые необходимо перевести, нажмите кнопку "Run" и дождитесь завершения процесса.  
<img src="doc/src/run.gif">  

Форматы шрифтов, такие как размер шрифта, цвет, определяются программой автоматически в этом процессе, вы можете предопределить эти форматы, изменив соответствующие опции с "определять программой" на "использовать глобальные настройки" в панели конфигурации-> Работа с текстом. (глобальные настройки - это те форматы, которые отображаются на правой панели формата шрифта, когда вы не редактируете какой-либо текстовый блок в сцене).

## Редактирование изображений

### Инструмент закраски
<img src="doc/src/imgedit_inpaint.gif">
<p align = "center">
Режим редактирования изображений, инструмент закраски
</p>

### Инструмент "прямоугольник"
<img src="doc/src/rect_tool.gif">
<p align = "center">
Инструмент "прямоугольник"
</p>

Перетащите прямоугольник с нажатой левой кнопкой, чтобы стереть текст внутри поля, нажмите правую кнопку и перетащите, чтобы очистить закрашенный результат.  
Результат зависит от того, насколько точно алгоритм ("метод 1" и "метод 2" на рисунке) извлекает маску текста. Он может работать хуже на сложном тексте и фоне.  

## Редактирование текста
<img src="doc/src/textedit.gif">
<p align = "center">
Режим редактирования текста
</p>

<img src="doc/src/multisel_autolayout.gif" div align=center>
<p align=center>
Пакетное форматирование текста и авторазметка
</p>

## Сочетания клавиш
* A/D сменить страницу
* Ctrl+Z, Ctrl+Y для отмены/повторения большинства операций, обратите внимание, что стек отмены будет очищен после того, как вы перевернете страницу.
* T в режиме редактирования текста (или кнопка "T" на нижней панели инструментов) нажмите W, чтобы активировать режим создания текстового блока, затем перетащите мышь по холсту с нажатой правой кнопкой, чтобы добавить новый текстовый блок. (см. GIF редактирования текста)
* P в режим редактирования изображений.
* В режиме редактирования изображения используйте ползунок справа внизу для управления прозрачностью исходного изображения.
* Кнопки "OCR" и "A" в нижней панели инструментов управляют включением OCR и перевода, если вы отключите их, программа будет выполнять только обнаружение и удаление текста.  
* Установите параметры автоматических модулей в настройках
* Ctrl+ +/- или колесо прокрутки для масштабирования холста
* Ctrl+A для выделения всех текстовых блоков в интерфейсе

<img src="doc/src/configpanel.png">  


# Модули автоматизации
Этот проект в значительной степени зависит от [manga-image-translator](https://github.com/zyddnys/manga-image-translator), онлайн-сервис и обучение моделей стоит недешево, пожалуйста, рассмотрите возможность пожертвовать проект:  
- Ko-fi: <https://ko-fi.com/voilelabs>
- Patreon: <https://www.patreon.com/voilelabs>
- 爱发电: <https://afdian.net/@voilelabs>
  
## Обнаружение текста
Поддержка распознавания английского и японского текста, обучающий код и более подробную информацию можно найти на сайте [comic-text-detector](https://github.com/dmMaze/comic-text-detector)

## OCR
 * mit_32px модель распознавания текста из manga-image-translator, поддержка распознавания английского и японского языков и выделения цвета текста.
 * mit_48px модель распознавания текста от manga-image-translator, поддерживает распознавание на английском, японском и корейском языках и выделение цвета текста.
 * [manga_ocr](https://github.com/kha-white/manga-ocr) от [kha-white](https://github.com/kha-white), 

## Закрасчик
  * AOT взято с сайта manga-image-translator
  * patchmatch это не алгоритм глубокого обучения [PyPatchMatch](https://github.com/vacancy/PyPatchMatch), эту программу использовал [modified version](https://github.com/dmMaze/PyPatchMatchInpaint) для себя.
  

## Переводчики
 * Пожалуйста, измените url переводчика goolge с *.cn на *.com, если вы находитесь за пределами китая.    
 * Переводчику Caiyun требуется [token](https://dashboard.caiyunapp.com/)
 * Papago

 Чтобы добавить новый переводчик, пожалуйста, обратитесь к [Добавление других переводчиков](doc/add_translator_ru.md), это просто как подкласс BaseClass и реализация двух интерфейсов, затем вы можете использовать его в приложении. Вы можете внести свой вклад в проект.  


## Разное

* Если ваш компьютер оснащен графическим процессором Nvidia, программа по умолчанию включает ускорение cuda для всех моделей, что требует около 6G памяти GPU, вы можете уменьшить размер inpaint_size в панели конфигурации, чтобы избежать перегрузки памяти. 

Перевел на Русский [bropines](https://github.com/bropines)

## Предварительный просмотр результатов полностью автоматизированного перевода
|            Original            |         Translated (CHS)         |         Translated (ENG)         |
| :-----------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------: |
|![Original](ballontranslator/data/testpacks/manga/original2.jpg 'https://twitter.com/mmd_96yuki/status/1320122899005460481')| ![Translated (CHS)](doc/src/result2.png) | ![Translated (ENG)](doc/src/original2_eng.png) |
|![Original](ballontranslator/data/testpacks/manga/original3.jpg 'https://twitter.com/_taroshin_/status/1231099378779082754')| ![Translated (CHS)](doc/src/original3.png) | ![Translated (ENG)](doc/src/original3_eng.png) |
| ![Original](ballontranslator/data//testpacks/manga/AisazuNihaIrarenai-003.jpg) | ![Translated (CHS)](doc/src/AisazuNihaIrarenai-003.png) | ![Translated (ENG)](doc/src/AisazuNihaIrarenai-003_eng.png) |
|           ![Original](ballontranslator/data//testpacks/comics/006049.jpg)           | ![Translated (CHS)](doc/src/006049.png) | |
+89 −0
Original line number Diff line number Diff line
# -*- mode: python ; coding: utf-8 -*-

# macOS pyinstaller 打包

block_cipher = None


a = Analysis(
    ['__main__.py'],
    pathex=[
        './', 
        './dl', 
        './dl/inpaint', 
        './dl/ocr', 
        './dl/textdetector', 
        './dl/textdetector/ctd', 
        './dl/textdetector/yolov5', 
        './dl/translators', 
        './scripts', 
        './tests', 
        './ui', 
        './ui/framelesswindow', 
        './ui/framelesswindow/fw_qt6', 
        './ui/framelesswindow/fw_qt6/linux', 
        './ui/framelesswindow/fw_qt6/mac', 
        './ui/framelesswindow/fw_qt6/utils', 
        './ui/framelesswindow/fw_qt6/windows', 
        './utils'],
    binaries=[],
    datas=[('data', './data')],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='__main__',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)
coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='__main__',
)
app = BUNDLE(
    coll,
    name='BallonsTranslator.app',
    icon='icon.icns',
    bundle_identifier=None,
    info_plist={
      'CFBundleDisplayName': 'BallonsTranslator',
      'CFBundleName': 'BallonsTranslator',
      'CFBundlePackageType': 'APPL',
      'CFBundleSignature': 'BATR',
      'CFBundleShortVersionString': '1.3.34',
      'CFBundleVersion': '1.3.34',
      'CFBundleExecutable': '__main__',
      'CFBundleIconFile': 'icon.icns',
      'CFBundleIdentifier': 'dev.dmmaze.batr',
      'CFBundleInfoDictionaryVersion': '6.0',
      'LSApplicationCategoryType': 'public.app-category.graphics-design',
      'LSEnvironment': {'LANG': 'zh_CN.UTF-8'},
      }
)
+3 −0
Original line number Diff line number Diff line
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.14667 9.00001L8.14665 14L8.85376 14L13.8538 9.00001L13.1467 8.2929L9.00021 12.4393L9.00022 2.00001L8.00022 2.00001L8.00022 12.4393L3.85378 8.2929L3.14667 9.00001Z" fill="#424242"/>
</svg>
+3 −0
Original line number Diff line number Diff line
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.7002 8.64L8.20024 11.14H7.50024L5.00024 8.64L5.70024 7.93L7.35024 9.57V4H8.35024V9.57L10.0002 7.92L10.7002 8.64Z" fill="#424242"/>
</svg>
Loading