ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

LunaTranslator OCR 接口设置全指南:在线 OCR、内置 PP-OCR 与 GPU/OpenVINO 加速实战

LunaTranslator OCR 接口设置全指南:在线 OCR、内置 PP-OCR 与 GPU/OpenVINO 加速实战 LunaTranslator OCR 接口设置全指南在线 OCR、内置 PP-OCR 与 GPU/OpenVINO 加速实战【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator导读本篇技术指南围绕视觉小说翻译器 LunaTranslator 的 OCR光学字符识别接口设置展开覆盖在线 OCR百度、腾讯、有道、火山、讯飞、Google Cloud Vision、OCRSpace、大模型通用接口与离线 OCR内置 PP-OCR 系列模型、SnippingTool、manga-ocr、WeChat/QQ OCR、WindowsOCR、Tesseract 5两大体系。读完本文你将掌握各 OCR 引擎的适用场景与 API 配置方式理解内置 PP-OCR 各模型档位的精度/速度取舍并学会通过 GPUDML与 OpenVINO 推理加速高精度模型。文中所有结论均可在当前仓库源码src/LunaTranslator/ocrengines/、src/LunaTranslator/defaultconfig/ocrsetting.json等中逐行验证。一、OCR 在 LunaTranslator 中的定位LunaTranslator 是一款视觉小说翻译器其核心工作流是获取文本 → 翻译 → 展示译文。对于无法通过 Hook 直接抓取文本的游戏例如使用图片呈现对话、无法注入的游戏引擎OCR 是唯一的文本获取手段。OCR 的结果会进入与 Hook 文本相同的下游管线语言识别、分词、词典查询、翻译、后处理最终以覆盖字幕或替换文本的形式展示。从源码结构看src/LunaTranslator/ocrengines/目录下每个文件对应一个 OCR 引擎全部继承自 baseocrclass.py 中的baseocr基类统一实现init()与ocr(imagebinary)两个接口并共享OCRResult结果对象。这意味着无论使用哪个引擎返回的文本块含坐标框都会经过统一的后处理管线如竖排自适应、文本行合并用户可以无缝切换引擎而无需关心下游差异。在 textinput_ocr.py 的设置界面中与 OCR 结果后处理相关的全局开关包括verticalocr竖排文本方向可选横向 / 竖向 / 自适应默认2即自适应ocrmergelines是否合并邻近文本行默认开启ocrmergelines_distance行合并的间距阈值默认0.4。这些参数在 baseocrclass.py 中被实际消费OCRResult在构造时会根据verticalocr决定按横向还是竖向聚合文本块若为自适应模式还会通过__guessvertial依据文本框宽高比自动推断排版方向__nearmergeboxs则依据文本框之间的欧氏距离与阈值合并过近的行块从而避免一句台词被拆成多行。二、在线 OCR 引擎在线 OCR 通过调用云端 API 完成文字识别不需要下载模型、不占用本地算力适合对识别精度要求高、且网络条件稳定的场景。缺点是需要注册对应平台账号、申请密钥并且部分引擎按调用量计费。所有在线引擎均在 ocrsetting.json 中声明了默认参数与参数类型argstype。密钥类参数一律标注issecret: true在设置界面会以密文输入框展示。多引擎共用接口时LunaTranslator 还支持通过多 API Key机制密钥以|分隔实现轮询与故障转移。1. 百度百度在文档中提供了三条接入路径在 ocrsetting.json 中对应baiduocr_X引擎的接口下拉项共 6 个| 接口序号 | 对应服务 | 说明 | | - | - | - | | 0 | 百度智能云 OCR · 通用文字识别标准版 | 返回纯文本不返回坐标 | | 1 | 百度智能云 OCR · 通用文字识别标准含位置版 | 返回文本与位置框 | | 2 | 百度智能云 OCR · 通用文字识别高精度版 | 纯文本精度更高 | | 3 | 百度智能云 OCR · 通用文字识别高精度含位置版 | 文本 位置框 | | 4 | 百度智能云 · 图片翻译 | 直接返回目标语言译文 | | 5 | 百度翻译开放平台 · 图片翻译 | 直接返回目标语言译文 |配置参数接口 0~3 使用百度智能云 OCR 的API Key与Secret Key通过 OAuth 换取access_token见 baiduocr_X.py 的get_access_token接口 4 复用同一对密钥接口 5 使用百度翻译开放平台的app_id与app_key。源码实现要点baiduocr_X.py标准版/高精度版的四个接口分别对应百度 REST 端点general_basic、general、accurate_basic、accurate请求体中的detect_direction直接取自全局配置verticalocr! 0时开启方向检测接口 0/1 且源语言为自动时会发送detect_languageTrue让百度自动检测语种接口 4/5 的图片翻译返回带坐标框的译文文本源码中以OCRResult(boxs..., texts..., isocrtranslateTrue)标记为OCR 直译结果后续会走不翻译的展示路径。2. 腾讯腾讯云在文档中给出两个入口OCR 通用印刷体识别与图片翻译对应txocr引擎的接口下拉项。配置参数ocrsetting.jsonSecretId/SecretKey腾讯云 API 密钥ProjectId仅图片翻译接口需要对应腾讯云项目 IDRegion区域节点可选ap-beijing、ap-guangzhou、ap-hongkong、ap-seoul、ap-shanghai、ap-singapore默认ap-beijing接口OCR_通用印刷体识别或图片翻译。源码实现要点txocr.py图片翻译走腾讯云 TMT机器翻译服务使用 HMAC-SHA256 签名调用ImageTranslate动作请求体包含Source/Target语言、Base64 编码的图片Data以及Scene: doc场景参数通用印刷体识别则通过腾讯云 OCR 服务的语言映射表把 LunaTranslator 的Languages枚举映射为腾讯云语言代码如中文→zh、日文→jap、韩文→kor。3. 有道有道在文档中给出统一入口网易有道 AI 开放平台对应youdaocr引擎。配置参数ocrsetting.jsonAPP_KEY应用 IDAPP_SECRET应用密钥接口OCR_通用文字识别或图片翻译。注意有道 OCR 的密钥字段名与有道词典本地 OCRyoudaodictocr无需密钥、通过有道词典客户端提供识别能力不同配置时不要混淆。4. 火山引擎火山引擎对应volcengine引擎仅需两个参数ocrsetting.jsonAccess Key IDSecret Access Key。文档指向火山引擎官方文档通用文字识别/翻译相关页面实际能力覆盖文字识别与图片翻译。5. 讯飞讯飞对应xunfei引擎配置参数ocrsetting.jsonAPPId/APISecret/APIKey讯飞开放平台三要素接口通用文字识别 intsig内部值hh_ocr_recognize_doc或印刷文字识别多语种内部值ocr。6. Google Cloud Vision对应googlecloudvision引擎仅需一个参数keyGoogle Cloud API Key。源码实现要点googlecloudvision.py调用vision.googleapis.com/v1/images:annotatefeatures指定TEXT_DETECTION图片以 Base64 形式放入请求体响应解析时逐block → paragraph → word → symbol重组文本并取每段的boundingBox四角顶点构造坐标框从而支持OCR 后按坐标换行/合并的完整后处理。7. OCRSpace对应ocrspace引擎参数ocrsetting.jsonapikeyOCRSpace API Key接口pro或free免费档有调用限额pro 档更快更稳定。8. 大模型通用接口OCR大模型通用接口与 翻译设置国产大模型 中的配置方式完全相同即使用多模态大模型如 GPT-4V 类直接看图识字。对应chatgptlike引擎其默认参数与含义ocrsetting.jsonapiurlAPI 接口地址默认https://api.openai.com/v1兼容 OpenAI 格式的各类国产/自建大模型网关model模型名可在设置中通过list_models动态拉取SECRET_KEYAPI Keymax_tokens最大生成 token 数默认 1024可调范围 1~1,000,000Temperature默认 0与top_p默认 0.3采样参数配Temperature.use/top_p_use开关OCR 任务建议保持较低随机性以获得稳定识别结果use_custom_prompt/custom_prompt自定义提示词默认提示模板为Recognize the {srclang} text in the picture.可针对生僻字体或特殊版面改写reasoning_effort思考强度none/minimal/low/medium/high/xhigh默认medium仅在支持推理的模型上生效thinking.type思考模式开关disabled/enabledfrequency_penalty频率惩罚0~2默认 0customparams透传其他自定义请求参数。从 chatgptlike.py 看该引擎还内置了智谱 GLM 的专用 OCR 端点open.bigmodel.cn/api/paas/v4/files/ocr可通过自定义接口地址接入。大模型 OCR 的最大优势是对复杂版面、手写体、竖排文本的鲁棒性远高于传统 OCR代价是需要消耗 token 额度、延迟较高。三、离线 OCR 引擎离线 OCR 完全在本机执行不依赖网络、无调用费用、隐私性最好是本地单机使用的首选。离线引擎分为内置 OCR与其他离线引擎两类。1. 内置 OCRPP-OCR 系列内置 OCR 使用 PaddleOCR 生态的PP-OCR系列模型通过 onnxruntime 推理。软件自带PP-OCRv5_mobile面向简体中文、繁体中文、英文、日文的轻量级模型开箱即用若需识别其他语言或追求更高精度可在设置中下载对应模型。可用模型一览设置界面提供多档模型检测模块 Hmean 与识别模块 Avg Accuracy 均为官方基准数据体积为模型包大小| 模型 | 检测模块 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 |选型建议追求速度与轻量PP-OCRv6_tiny仅 5.45MB适合低配机器中日英三语日常使用自带的PP-OCRv5_mobile已够用追求极限精度、不介意速度与体积PP-OCRv6_medium或PP-OCRv5_server148MB配合下文GPU/OpenVINO 加速手段使用韩语korean_PP-OCRv5_mobile识别精度高达 88.0%俄语等东斯拉夫语言eslav_PP-OCRv5_mobile拉丁字母语言latin_PP-OCRv5_mobile。模型管理与下载机制模型管理逻辑集中在 local.py 的localmodels类中模型存放于files/ocrmodel与cache/ocrmodel两个目录每个模型目录必须包含det.onnx、rec.onnx、dict.txt三个文件检测模型、识别模型、字典以及info.json元信息含name、languages等字段否则不会被识别为合法模型设置界面的选择模型窗口会先请求远程Resource/ocr_models模型清单若网络不可用则回退到本地已安装模型列表每个模型条目都会标记是否已安装前缀√未安装时可点击下载按钮在线拉取并解压到cache/ocrmodel下载过程带进度条与 MD5 校验运行时checkchange()会监听模型目录变化与线程数/GPU 配置变化自动热切换模型local.py。内置 OCR 的运行参数内置 OCR 的默认参数ocrsetting.jsonmodel默认PP-OCRv5_mobilethread推理线程数默认 4可在 1~16 之间调节local.py 的线程数选择框gpu是否启用 GPU 推理默认falseluidGPU 设备逻辑 IDLUID默认 0 表示自动选择最佳 GPUdevice_type推理设备类型默认CPU。提高高精度模型识别效率的两大手段高精度模型PP-OCRv6_medium、PP-OCRv5_server识别更准但速度较慢文档给出了两种加速方案手段一使用 GPUDirectML推理适用前提软件版本为 Win10 版或系统为 Windows 11操作在内置 OCR 设置中开启使用 GPU程序会自动枚举本机 GPU 并允许选择具体设备源码佐证GPU 枚举逻辑在 localocr.cpp 中实现通过CreateDXGIFactory2EnumAdapters1遍历显卡并用EnumAdapterByGpuPreference(DXGI_GPU_PREFERENCE_HIGH_PERFORMANCE)选出高性能 GPU当luid 0时自动绑定最佳 GPU否则按AdapterLuid精确匹配用户选择的设备localocr.cpp。Python 侧通过GetDeviceInfoD3D12()探测 D3D12 设备列表并把luid传入LocalOCR构造器local.py注意GPU 加速依赖 DMLDirectML执行提供程序若当前系统/版本不支持设置窗口会提示当前软件或操作系统版本不支持使用GPU。手段二使用 OpenVINO 推理适用前提Intel 的 CPU / NPU / GPU操作步骤下载 onnxruntime-openvino 包版本 1.24.1解压后将其runtimes/win-x64/native目录下的所有 DLL 覆盖到LunaTranslator/files/DLL64目录即把 onnxruntime 的 OpenVINO 执行提供程序替换进软件在内置 OCR 设置中选择 OpenVINO 推理设备即可源码佐证local.py通过OcrIsProviderAvailable(OpenVINO)检测当前 onnxruntime 是否包含 OpenVINO 提供程序并通过GetOpenVINODeviceTypes()枚举可用设备CPU/NPU/GPU随后以device_type参数传入LocalOCR完成推理引擎切换。技术说明onnxruntime 通过执行提供程序Execution Provider抽象不同硬件后端DML与OpenVINO是其中两个常用选项。内置 OCR 默认仅携带 CPU 提供程序因此 GPU/OpenVINO 加速需要替换 DLL 或依赖系统自带 DML两步中的至少一步这也是文档中要求覆盖 DLL64 目录的原因。2. 其他离线 OCR 引擎SnippingTool调用 Windows 自带截图工具Snipping Tool的 OCR 能力无需额外模型。系统要求仅支持 Win10Win11 操作系统使用前提如果是最新版的 Windows 11 系统则可以直接使用否则需要在设置中安装该模块适用场景系统原生 OCR安装零成本适合临时使用精度与可控性弱于 PP-OCR 系。manga-ocrmangaocr专为日文漫画优化的 OCR 引擎对漫画手写体、拟声词等场景识别效果极佳。注意事项此 OCR 引擎对横向文本识别效果不佳竖排文本是漫画主流排版该引擎为此优化使用方式需要下载独立的 CPU 或 GPU 整合包本地 HTTP 服务默认端口 5665LunaTranslator 通过http://127.0.0.1:{Port}/image接口把截图发送给该服务并取回识别文本mangaocr.py端口配置设置中Port默认 5665可调范围 1~65535ocrsetting.json需与整合包实际监听端口保持一致。国内用户整合包无法启动的常见问题与解决首次运行start.bat时整合包会尝试从 huggingface.co 下载模型国内网络环境容易失败。解决方案有两种代理上网开启代理可能需要在 TUN 模式下运行以直连 huggingface更换国内镜像用 VS Code 打开整合包文件夹利用全局搜索把其中所有huggingface.co替换为hf-mirror.com替换项较多需等待片刻保存后重新运行start.bat模型会从国内镜像站下载无需代理。无论哪种方式启动成功的标志是控制台出现* Running on http://127.0.0.1:5665字样——首次运行需等待模型下载之后每次启动需等待模型加载加载完成后 LunaTranslator 即可正常调用。WeChat/QQ OCR复用本机安装的微信或新版 QQ 的 OCR 能力无需注册任何 API。使用前提本机已安装微信或新版 QQ适用场景零成本白嫖社交软件内置 OCR适合预算为零的轻量需求精度与稳定性受宿主程序版本影响。WindowsOCR调用 Windows 系统 OCR对应 Windows 10/11 的文本提取能力。系统要求仅支持 Win10Win11官方评价文档明确标注效果太差不推荐使用语言包管理查询、安装、移除 OCR 语言包需在 Windows 系统设置中操作微软 PowerToys Text Extractor 的支持语言列表即为该系统 OCR 的语言覆盖范围语言包缺失时某些语种会识别失败。Tesseract 5经典开源 OCR 引擎 Tesseract 5。安装来源官方 GitHub Releases 发布页下载对应版本官方评价文档同样明确标注效果太差不推荐使用——Tesseract 对游戏 UI 字体、日文竖排、艺术字等场景的鲁棒性不足在 LunaTranslator 场景下建议优先使用 PP-OCR 系列。四、OCR 引擎选型速查| 场景 | 推荐引擎 | 理由 | | - | - | - | | 中日英三语、离线、无网络 | 内置 OCRPP-OCRv5_mobile | 开箱即用零配置 | | 离线、追求最高精度 | PP-OCRv6_medium / PP-OCRv5_server GPU/OpenVINO | 精度最高配合加速手段 | | 韩语专精 | korean_PP-OCRv5_mobile | 识别精度 88% | | 俄语等东斯拉夫语言 | eslav_PP-OCRv5_mobile | 专用语言模型 | | 日文漫画竖排为主 | manga-ocr | 漫画场景特化 | | 复杂版面/手写体 | 大模型通用接口chatgptlike | 多模态大模型鲁棒性最强 | | 无 API 预算的日常使用 | WeChat/QQ OCR | 复用已安装软件能力 | | 临时应急 | SnippingTool | 系统自带安装零成本 | | 不推荐 | WindowsOCR、Tesseract 5 | 文档明确标注效果差 |五、小结与进阶指引OCR 引擎的选择本质上是精度、速度、成本、隐私四者的权衡在线引擎精度高但依赖网络与密钥离线引擎完全本地化但需管理模型体积大模型 OCR 版面鲁棒性最强但延迟与 token 成本最高。内置 PP-OCR 体系则提供了从 5.45MBtiny到 148MBserver的完整精度梯度配合 DML/OpenVINO 加速可兼顾精度与帧率。若需进一步深入OCR 结果的后处理竖排自适应、行合并阈值、文本纠错替换实现在 baseocrclass.py 与 textinput_ocr.py相关 OCR 参数界面可对照 OCR 参数说明大模型通用接口的详细参数说明与翻译设置完全一致各引擎默认参数与密钥字段声明见 ocrsetting.jsonOCR 识别文本的进一步清洗可参考 文本处理 与 后处理配置。【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进