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

LunaTranslator OCRインターフェース設定完全ガイド ― オンラインAPI・ローカルPP-OCR・GPU/OpenVINO高速化まで 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_basic1百度智能云_OCR_通用文字识别標準含位置版→general2百度智能云_OCR_通用文字识别高精度版→accurate_basic3百度智能云_OCR_通用文字识别高精度含位置版→accurate4百度智能云_图片翻译百度智能云の画像翻訳 API5百度翻译开放平台_图片翻译翻译开放平台の画像翻訳 API実装を見ると、0〜3はhttps://aip.baidubce.com/rest/2.0/ocr/v1/配下の各エンドポイントへ OAuth2.0 の access_token を取得してからPOSTする方式baiduocr_X.py のget_access_token/ocr_x、4はmt/pictrans/v1、5はapi/trans/sdk/pictureを利用しており、画像翻訳系は結果に翻訳テキストと座標boxが返り、OCRResultにisocrtranslateTrueが付与される。なお百度智能云系はdetect_direction方向検出に縦書き設定verticalocrを連動させており、言語自動検出にも対応しているdetect_language。腾讯Tencent腾讯はOCR 通用印刷体识别汎用印刷体認識と图片翻译画像翻訳の2インターフェースを持つ。設定項目はSecretId/SecretKeyに加え、画像翻訳に必要なProjectId、アクセス地域Regionap-beijing / ap-guangzhou / ap-hongkong / ap-seoul / ap-shanghai / ap-singapore、そしてinterface0OCR、1图片翻译である。実装上はOCR系がocr.tencentcloudapi.comへのHMAC-SHA1署名付きGETtxocr.py のocr_ocr、画像翻訳系がtmt.tencentcloudapi.comへのTC3-HMAC-SHA256署名付きPOSTocr_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应用密钥を必要とし、interface1で0OCR通用文字识别、1图片翻译 を切り替える。設定例は次のとおりyoudaocr: { args: { interface1: 0, APP_KEY: , APP_SECRET: } }また有道には辞書用に別途youdaodictocrTranslateスイッチのみも存在する点に注意したい。火山引擎Volcengine火山引擎OCRはAccess Key IDとSecret Access Keyの2項目のみを入力すればよいシンプルな構成で、火山引擎コンソールで発行したキーをそのまま設定する。讯飞Xunfei讯飞OCRはAPPId/APISecret/APIKeyの3点セットを要求し、interfaceで次の2択を選ぶhh_ocr_recognize_doc通用文字识别 intsigocr印刷文字识别多语种ocrsetting.json ではinterface: hh_ocr_recognize_docがデフォルト値である。Google Cloud VisionGoogle Cloud Vision OCRは APIキー1本keyのみで利用できる。Google CloudコンソールでVision APIを有効化して発行したキーを設定欄に入力する。ocrspaceocrspace はapikeyとinterfacepro/freeの2項目で構成される。無料枠freeで試用し、必要に応じて pro へ切り替えるのが典型的な運用だ。大規模モデル汎用インターフェース大規模モデルLLM汎用インターフェースは、OCRを画像→テキストのマルチモーダル推論として扱う方式で、設定方法は翻訳側の大規模モデル汎用インターフェースと完全に同じである。詳細は 大規模モデル汎用インターフェース設定ガイド を参照のこと。ocrsetting.json のchatgptlikeにはmodelデフォルト gpt-4、apiurlデフォルトhttps://api.openai.com/v1、SECRET_KEYAPI Key、max_tokensデフォルト 1024、Temperatureデフォルト 0、top_p0.3、frequency_penalty、reasoning_effort、thinking.type、use_custom_prompt/custom_promptカスタムプロンプト、プレースホルダーはRecognize the {srclang} text in the picture.などの高度なパラメータが定義されており、customparamsで任意の追加パラメータも渡せる。オフラインOCR内蔵ローカルOCRPP-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クラスが担う。仕組みを整理するとモデル一覧の取得__loadlangsがdynamiclink(Resource/ocr_models)からモデル情報name / languages / link などをJSONで取得し、取得失敗時はローカルに既存のモデル一覧へフォールバックする。ダウンロードdownloadxがストリーミングでモデルファイルをcache/ocrmodel/URLのmd5に保存し、進捗バーでダウンロード率を表示した後、zipをcache/ocrmodel/配下へ展開する。モデルの検証localmodelsクラスは各モデルディレクトリにdet.onnx検出、rec.onnx認識、dict.txt辞書の3ファイルが揃っていることを必須条件として検証し、info.jsonから言語情報を読み込む。認識対象ディレクトリはfiles/ocrmodelとcache/ocrmodelの2箇所がスキャンされる。起動時の切り替えOCR.checkchangeが設定変更を検知すると、選択モデルのdet.onnx/rec.onnx/dict.txtパスを C 側のLocalOCRsrc/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 のスピンボックスで設定可能gpuGPU推論を有効にするスイッチluidGPU利用時のデバイスID0 がデフォルト。GetDeviceInfoD3D12()で列挙したデバイス一覧から選択し、GPUオフ時は無効化されるdevice_typeOpenVINO利用時のデバイスCPU / NPU / GPU などこれらはすべてLocalOCRのコンストラクタへそのまま渡され、threadとgpu/luidの組み合わせが変化したときだけモデルを再ロードする仕組みになっている。GPUDirectML推論で高速化高精度モデルは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 へ差し替えることで認識を高速化できる。手順は以下のとおりonnxruntime-openvinoIntel.ML.OnnxRuntime.OpenVINO 1.24.1 のNuGetパッケージをダウンロードする。解凍後、runtimes/win-x64/native内のすべてのファイルをLunaTranslator/files/DLL64へ上書きコピーするonnxruntimeのOpenVINO版DLLを差し込む。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エンジンを選択できる。それぞれ特徴と制約が明確なので、用途に応じて使い分ける。SnippingToolWindows 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-OCRのPathから検出し、tesseract.exe --list-langsで利用可能な言語パックを列挙する。言語コードはlangmapによりマッピングされ日本語jpn、簡体中文chi_sim、繁体中文chi_tra、英語eng、韓国語korなど約20言語、縦書き設定に応じて_vert言語コードと--psm5 / 6を使い分ける。verticalocrが自動判定の場合はまず--psm 0のOSD方向検出を実行し、縦書きと判定された場合のみ_vertモデルへ切り替える実装となっている。まとめLunaTranslatorのOCRは、クラウドAPIを利用する「オンラインOCR」と、完全オフラインで動く「内蔵PP-OCR」および各種ローカルエンジンという二層構造になっており、用途に応じて柔軟に切り替えられる。実用上の推奨パスを整理するととりあえずオフラインで使う同梱の PP-OCRv5_mobile をそのまま使用。認識精度を上げるPP-OCRv6_medium や PP-OCRv5_server へ切り替え、GPUDirectMLまたは 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),仅供参考