LunaTranslator OCRインターフェース設定完全ガイド ― オンラインAPI・ローカルPP-OCR・GPU/OpenVINO高速化まで
2026/9/15 12:24:34 网站建设 项目流程

LunaTranslator OCRインターフェース設定完全ガイド ― オンラインAPI・ローカルPP-OCR・GPU/OpenVINO高速化まで

【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator

本文は、ビジュアルノベル翻訳ツールLunaTranslatorのOCR(文字認識)機能に焦点を当て、オンラインOCRサービス(百度・腾讯・有道・火山・讯飞・Google Cloud Vision・ocrspace・大規模モデル汎用インターフェース)の認証情報設定と、オフラインの内蔵PP-OCRモデルの導入・高速化(GPU / OpenVINO)を、公式ドキュメント(docs/ja/useapis/ocrapi.md)とリポジトリの実装コードを突き合わせながら体系的に解説する。読者は本ガイドを読み終えると、任意のOCRエンジンをLunaTranslatorに組み込み、認識精度と速度を実用レベルに最適化するための具体的な手順と設定値を把握できる。

オンラインOCRの全体像

LunaTranslatorのOCR設定は「オンラインOCR」と「オフラインOCR」の2系統に分かれる。オンラインOCRは各クラウドベンダーのAPIキーを入力するだけで高精度な認識が得られる反面、通信と課金が必要になる。一方オフラインOCRはモデルファイルをローカルに配置して完全オフラインで動作する。

オンラインOCRとして登録可能なエンジンは、デフォルト設定ファイル src/LunaTranslator/defaultconfig/ocrsetting.json から次の8系統が確認できる:

| エンジン | 実装ファイル | 主な設定項目 | | - | - | - | | 百度(Baidu) | baiduocr_X.py | API Key / Secret Key / app_id / app_key / 接口 | | 腾讯(Tencent) | txocr.py | SecretId / SecretKey / ProjectId / Region / interface | | 有道(Youdao) | youdaocr.py | APP_KEY / APP_SECRET / interface1 | | 火山引擎(Volcengine) | volcengine.py | Access Key ID / Secret Access Key | | 讯飞(Xunfei) | xunfei.py | APPId / APISecret / APIKey / interface | | Google Cloud Vision | googlecloudvision.py | key | | ocrspace | ocrspace.py | apikey / interface | | 大規模モデル汎用インターフェース | chatgptlike.py | model / apiurl / SECRET_KEY ほか |

どのサービスも、各ベンダーの公式コンソールでアプリケーションを作成し、発行されたキーを対応する設定欄に入力すれば使用できる。キー欄はいずれも"issecret": trueが指定されており、UI上で伏せ字表示される。各エンジンの細かな仕様は以下の各論で解説する。

オンラインOCRエンジン各論

百度(Baidu)

百度は公式ドキュメントで百度智能云 OCR(汎用文字認識)と画像翻訳の2系統を提供しており、LunaTranslatorはさらに百度翻訳開放平台の画像翻訳を含む計6つのインターフェースを選択できる。ocrsetting.json のbaiduocr_Xに定義された「接口」のリストは次のとおり:

  • 0百度智能云_OCR_通用文字识别(標準版)→general_basic
  • 1百度智能云_OCR_通用文字识别(標準含位置版)→general
  • 2百度智能云_OCR_通用文字识别(高精度版)→accurate_basic
  • 3百度智能云_OCR_通用文字识别(高精度含位置版)→accurate
  • 4百度智能云_图片翻译(百度智能云の画像翻訳 API)
  • 5百度翻译开放平台_图片翻译(翻译开放平台の画像翻訳 API)

実装を見ると、0〜3https://aip.baidubce.com/rest/2.0/ocr/v1/配下の各エンドポイントへ OAuth2.0 の access_token を取得してからPOSTする方式(baiduocr_X.py のget_access_token/ocr_x)、4mt/pictrans/v15api/trans/sdk/pictureを利用しており、画像翻訳系は結果に翻訳テキストと座標(box)が返り、OCRResultisocrtranslate=Trueが付与される。なお百度智能云系はdetect_direction(方向検出)に縦書き設定verticalocrを連動させており、言語自動検出にも対応している(detect_language)。

腾讯(Tencent)

腾讯はOCR 通用印刷体识别(汎用印刷体認識)と图片翻译(画像翻訳)の2インターフェースを持つ。設定項目はSecretId/SecretKeyに加え、画像翻訳に必要なProjectId、アクセス地域Region(ap-beijing / ap-guangzhou / ap-hongkong / ap-seoul / ap-shanghai / ap-singapore)、そしてinterface0=OCR、1=图片翻译)である。

実装上はOCR系がocr.tencentcloudapi.comへのHMAC-SHA1署名付きGET(txocr.py のocr_ocr)、画像翻訳系がtmt.tencentcloudapi.comへのTC3-HMAC-SHA256署名付きPOST(ocr_fy)という異なる署名方式を内部的に使い分けており、OCR結果は四角形ポリゴン座標付きで返る。言語コードはlangocrマッピング(zh / jap / kor / spa / fre / ger / por / vie / rus / ita / hol / swe / hun / tha / ara、未対応は auto)が参照される。

有道(Youdao)

有道のOCRエンジン(youdaocr)はAPP_KEY(应用ID)とAPP_SECRET(应用密钥)を必要とし、interface10=OCR通用文字识别、1=图片翻译 を切り替える。設定例は次のとおり:

"youdaocr": { "args": { "interface1": 0, "APP_KEY": "", "APP_SECRET": "" } }

また有道には辞書用に別途youdaodictocrTranslateスイッチのみ)も存在する点に注意したい。

火山引擎(Volcengine)

火山引擎OCRはAccess Key IDSecret Access Keyの2項目のみを入力すればよいシンプルな構成で、火山引擎コンソールで発行したキーをそのまま設定する。

讯飞(Xunfei)

讯飞OCRはAPPId/APISecret/APIKeyの3点セットを要求し、interfaceで次の2択を選ぶ:

  • hh_ocr_recognize_doc(通用文字识别 intsig)
  • ocr(印刷文字识别(多语种))

ocrsetting.json では"interface": "hh_ocr_recognize_doc"がデフォルト値である。

Google Cloud Vision

Google Cloud Vision OCRは APIキー1本(key)のみで利用できる。Google CloudコンソールでVision APIを有効化して発行したキーを設定欄に入力する。

ocrspace

ocrspace はapikeyinterfacepro/free)の2項目で構成される。無料枠(free)で試用し、必要に応じて pro へ切り替えるのが典型的な運用だ。

大規模モデル汎用インターフェース

大規模モデル(LLM)汎用インターフェースは、OCRを画像→テキストのマルチモーダル推論として扱う方式で、設定方法は翻訳側の大規模モデル汎用インターフェースと完全に同じである。詳細は 大規模モデル汎用インターフェース設定ガイド を参照のこと。ocrsetting.json のchatgptlikeにはmodel(デフォルト gpt-4)、apiurl(デフォルトhttps://api.openai.com/v1)、SECRET_KEY(API Key)、max_tokens(デフォルト 1024)、Temperature(デフォルト 0)、top_p(0.3)、frequency_penaltyreasoning_effortthinking.typeuse_custom_prompt/custom_prompt(カスタムプロンプト、プレースホルダーはRecognize the {srclang} text in the picture.)などの高度なパラメータが定義されており、customparamsで任意の追加パラメータも渡せる。

オフラインOCR:内蔵ローカルOCR(PP-OCR)

オフラインOCRの中心となるのが、local.py で実装された内蔵OCRである。PP-OCRv5_mobile(中・日・英語対応の軽量認識モデル)が同梱されており、インストール直後からオフラインで動作する。他の言語を認識したい場合や他のモデルを使いたい場合は、設定画面からモデルをダウンロードして切り替える必要がある。

モデル一覧と精度指標

設定では以下のモデルが提供される。高精度モデル(例:PP-OCRv6_medium、PP-OCRv5_server)は非常に高い認識精度を達成できる一方、認識速度は相対的に遅くなる。

| モデル | 検出モジュール Hmean(%) | 認識モジュール Avg Accuracy(%) | 対応言語 | サイズ(MB) | | - | - | - | - | - | | PP-OCRv6_small | 84.1 | 81.3 | 任意 | 25.2 | | PP-OCRv6_medium | 86.2 | 83.2 | 任意 | 99.7 | | PP-OCRv6_tiny | 80.6 | 73.5 | 任意 | 5.45 | | PP-OCRv5_mobile | 79.0 | 81.29 | 簡体字中国語、繁体字中国語、英語、日本語 | 17.7 | | PP-OCRv5_server | 83.8 | 86.38 | 簡体字中国語、繁体字中国語、英語、日本語 | 148 | | eslav_PP-OCRv5_mobile | 79.0 | 81.6 | 東スラヴ語群 | 11.2 | | korean_PP-OCRv5_mobile | 79.0 | 88.0 | 韓国語 | 12.2 | | latin_PP-OCRv5_mobile | 79.0 | 84.7 | ラテン文字言語 | 11.3 |

モデルのダウンロードと切り替えの仕組み

モデル管理は local.py のquestion/localmodelsクラスが担う。仕組みを整理すると:

  1. モデル一覧の取得__loadlangsdynamiclink("Resource/ocr_models")からモデル情報(name / languages / link など)をJSONで取得し、取得失敗時はローカルに既存のモデル一覧へフォールバックする。
  2. ダウンロードdownloadxがストリーミングでモデルファイルをcache/ocrmodel/<URLのmd5>に保存し、進捗バーでダウンロード率を表示した後、zipをcache/ocrmodel/配下へ展開する。
  3. モデルの検証localmodelsクラスは各モデルディレクトリにdet.onnx(検出)、rec.onnx(認識)、dict.txt(辞書)の3ファイルが揃っていることを必須条件として検証し、info.jsonから言語情報を読み込む。認識対象ディレクトリはfiles/ocrmodelcache/ocrmodelの2箇所がスキャンされる。
  4. 起動時の切り替えOCR.checkchangeが設定変更を検知すると、選択モデルのdet.onnx/rec.onnx/dict.txtパスを C++ 側のLocalOCR(src/NativeImpl/CVUtils/localocr.cpp)へ渡してエンジンを再構築する。

設定項目:thread / gpu / luid / device_type

デフォルト設定は ocrsetting.json のlocal節に次のように定義されている:

"local": { "args": { "model": "PP-OCRv5_mobile", "thread": 4, "gpu": false, "luid": 0, "device_type": "CPU" } }
  • model:使用するPP-OCRモデル名(上記表から選択)
  • thread:推論スレッド数。UI上は 1〜16 のスピンボックスで設定可能
  • gpu:GPU推論を有効にするスイッチ
  • luid:GPU利用時のデバイスID(0 がデフォルト)。GetDeviceInfoD3D12()で列挙したデバイス一覧から選択し、GPUオフ時は無効化される
  • device_type:OpenVINO利用時のデバイス(CPU / NPU / GPU など)

これらはすべてLocalOCRのコンストラクタへそのまま渡され、threadgpu/luidの組み合わせが変化したときだけモデルを再ロードする仕組みになっている。

GPU(DirectML)推論で高速化

高精度モデルはCPUだけでは遅いため、まずGPU推論の利用を検討する。使用しているソフトウェアのバージョンがWin10版であるか、OSがWindows 11の場合、設定から直接GPUでモデルを実行できる。実装上はOcrIsProviderAvailable("DML")(DirectMLプロバイダの有無)をチェックし、利用可能であればGetDeviceInfoD3D12()でD3D12対応GPUの一覧を取得して選択UIを表示する(local.py のcustomwidget.__load)。サポート外の環境では「現在のソフトウェアまたはOSバージョンではGPUを使用できない」旨が表示される。

OpenVINO推論で加速

IntelのCPU / NPU / GPUを使用している場合、推論エンジンを OpenVINO へ差し替えることで認識を高速化できる。手順は以下のとおり:

  1. onnxruntime-openvino(Intel.ML.OnnxRuntime.OpenVINO 1.24.1 のNuGetパッケージ)をダウンロードする。
  2. 解凍後、runtimes/win-x64/native内のすべてのファイルをLunaTranslator/files/DLL64へ上書きコピーする(onnxruntimeのOpenVINO版DLLを差し込む)。
  3. LunaTranslatorのOCR設定を開き、OcrIsProviderAvailable("OpenVINO")が真になった環境で、GetOpenVINODeviceTypes()が列挙したデバイス(CPU / NPU / GPU など)からdevice_typeを選択する。

縦書き対応と後処理パイプライン

内蔵OCRは baseocrclass.py の共通基盤を通して結果を整形する。ここで重要なのは縦書き(verticalocr)処理で、0=横書き固定、1=縦書き固定、2=自動判定(デフォルト)の3モードがある。自動判定モードでは、認識された各文字ブロックの「幅÷高さ」の累積値が1未満なら縦書きと推定する(OCRResult.__guessvertial)。縦書きの場合は行のソート方向が反転し、_sort_text_linesで座標ベースの行マージと並び替えが行われる。

またocrmergelines(デフォルト有効)により近接ブロックの統合(__nearmergeboxs、距離閾値ocrmergelines_distanceデフォルト0.4)が行われ、ocrerrorfixが有効ならOCR誤字の置換ルール(\b単語\bの正規表現置換、非ASCII文字は単純置換)が適用される。認識結果はOCRResultParsedにより座標・縦書きフラグ・エンジン名・所要時間(timecost)付きのJSONへ整形され、翻訳パイプラインへ受け渡される。

その他のオフラインOCRエンジン

内蔵PP-OCRのほか、以下のオフラインOCRエンジンを選択できる。それぞれ特徴と制約が明確なので、用途に応じて使い分ける。

SnippingTool

Windows 10 / 11 の切り取りツールに内蔵されたOCRエンジンを流用する方式で、Windows 10およびWindows 11オペレーティングシステムのみをサポートする。最新版のWindows 11であればそのまま利用できるが、それ以外の環境では設定画面からMicrosoft.ScreenSketchパッケージをダウンロード・インストールする必要がある。実装(SnippingTool.py)ではoneocr.dll/oneocr.onemodel/onnxruntime.dllの3ファイルをcache/SnippingToolに用意し、ネイティブ実装経由でSnippingToolサブプロセスを起動して認識する。画像はRGBA8888形式に変換され、50×50px未満の画像は自動的に拡大されてから渡される。

manga-ocr

漫画(縦書き・手書き文字)向けに特化した日本語OCRエンジンで、mangaocr.py が実装している。横書きテキストの認識には不向きである点に注意。別途配布される統合パッケージ(CPU版 / GPU版)を起動し、LunaTranslatorはhttp://127.0.0.1:{Port}/image?image_path=...へ認識依頼を投げるクライアントとして動作する。Portのデフォルトは5665で、1〜65535の範囲で変更可能(ocrsetting.json のmangaocr節を参照)。

国内ネットワーク環境で統合パッケージが起動しない場合の対処法も知っておくとよい。初回起動時のstart.batはHugging Faceからモデルをダウンロードしようとするため、国内では失敗しやすい。この場合は、統合パッケージのフォルダをVS Codeで開き、検索機能でhuggingface.coをすべてhf-mirror.comへ置換してからstart.batを再実行すれば、国内ミラー経由でモデルを取得できる。起動後に* Running on http://127.0.0.1:5665と表示されればサービス正常稼働の合図であり、初回のモデルダウンロードと毎回のモデル読み込みには時間がかかる点に注意する。

WeChat / QQ OCR

微信(WeChat)または最新版QQがインストールされていれば利用できるOCRで、追加のAPIキー登録が不要という利点がある。実装は weixinocr.py が担う。

WindowsOCR

[!WARNING]効果が低すぎるため、使用は推奨されない。Windows 10 / 11 のみサポート。

Windowsに内蔵されたOCRを利用する方式(windowsocr.py)だが、認識精度の観点から非推奨と明記されている。言語パックのクエリ・インストール・削除方法は Microsoft PowerToys の Text Extractor ドキュメントに記載されている対応言語一覧に従う。

Tesseract5

[!WARNING]効果が低すぎるため、使用は推奨されない。

Tesseract OCR 5 を呼び出す方式(tesseract5.py)。インストール先はレジストリSOFTWARE\Tesseract-OCRPathから検出し、tesseract.exe --list-langsで利用可能な言語パックを列挙する。言語コードはlangmapによりマッピングされ(日本語=jpn、簡体中文=chi_sim、繁体中文=chi_tra、英語=eng、韓国語=korなど約20言語)、縦書き設定に応じて_vert言語コードと--psm(5 / 6)を使い分ける。verticalocrが自動判定の場合はまず--psm 0のOSD(方向検出)を実行し、縦書きと判定された場合のみ_vertモデルへ切り替える実装となっている。

まとめ

LunaTranslatorのOCRは、クラウドAPIを利用する「オンラインOCR」と、完全オフラインで動く「内蔵PP-OCR」および各種ローカルエンジンという二層構造になっており、用途に応じて柔軟に切り替えられる。実用上の推奨パスを整理すると:

  • とりあえずオフラインで使う:同梱の PP-OCRv5_mobile をそのまま使用。
  • 認識精度を上げる:PP-OCRv6_medium や PP-OCRv5_server へ切り替え、GPU(DirectML)または OpenVINO で推論を高速化。Intel環境なら OpenVINO、それ以外のWindows 11環境ならD3D12 GPUが選択肢になる。
  • 漫画・縦書き中心:manga-ocr(縦書き特化)またはSnippingToolを併用。
  • 多言語・業務品質が欲しい:百度・腾讯・有道・火山・讯飞・Google Cloud VisionなどのオンラインAPIを利用。画像翻訳APIを選べば翻訳テキスト込みの結果が座標付きで得られる。
  • 汎用LLMをOCRに使いたい:大規模モデル汎用インターフェースを 翻訳設定ガイド と同じ手順で構成する。

各エンジンの設定値・既定値は src/LunaTranslator/defaultconfig/ocrsetting.json、認識結果の後処理(縦書き判定・行マージ・誤字修正)の詳細は baseocrclass.py を参照すれば、挙動の全容を把握できる。

【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询