tianruoocr-cl
由于精力有限,本软件目前暂不进行任何维护。推荐使用 Umi-ocr,我使用后发现非常不错,至少比我的好多了。有时间和精力可能会再来维护。
简介
天若OCR开源版本的本地版,采用Chinese-lite和paddle-ocr识别,不再需要网络连接。
推荐使用paddle-ocr识别,可以在识别结果中切换接口。
本软件的开发离不开以下仓库和软件的帮助,在此表示衷心的感谢:
https://github.com/DayBreak-u/chineseocr_lite/tree/onnx/dotnet_projects/OcrLiteOnnxCs
软件适用于64位系统,支持Win10/Win7,未测试Win11,需要.NET 4.7.2环境。
本程序主要依靠复制粘贴完成,如果有高手能帮忙改进就更好了。
中文识别率相当不错。
线程数设置为4,可以修改。
本软件不设置任何捐赠渠道,欢迎大家传播使用。软件作者是机械专业学生,编程能力有限,大部分问题都是通过自行搜索解决的,欢迎交流讨论问题。
注意事项
- 编译时需要引用Microsoft.ML.OnnxRuntime.dll。为了兼容Win7,可以使用我编译好的版本(在dll和runtime文件夹中),也可以自行编译,需要将对应的onnxruntime.dll放在运行文件夹中。如果不使用Win7,可以直接通过NuGet安装。
- 已将NuGet包管理更改为PackageReference,应该不再需要packages文件夹。编译前请先安装NuGet的相关包。
- 编译时请注意AdvRichTextBox.Designer.cs文件,必须重写。该文件在切换过程中可能会被系统自动覆盖,需要手动复制回来。
常见问题
Win7无法使用,基本无解(V1.3版本已支持Win7)- 如遇到
Exception from HRESULT: 0x8007007E
错误,可使用DirectX修复工具进行修复,通常能够解决启动问题。 - 请尝试安装VC++运行库和.NET 4.7.2。
- 谷歌翻译功能基本不会维护,
建议使用百度翻译(已添加其他翻译选项),更加稳定可靠。
当前使用的模型
模型名称 | 检测模型 | 识别模型 | 分类模型 |
---|---|---|---|
Chinese-lite | 默认 | 默认 | 默认 |
paddle-ocr | ch_PP-OCRv3_det_infer.onnx | ch_PP-OCRv2_rec_infer.onnx | ch_ppocr_mobile_v2.0_cls |
翻译功能说明
翻译相关问题说明
- 目前离线翻译基于Python搭建模型和建立服务器,本软件只负责与搭建的网站对接。因此需要一定的Python基础和运行环境,如果无法运行请尝试自行解决,作者也无能为力。
- 由于离线翻译网站的特性,实际上可以自行搭建服务器,只要满足POST格式即可。POST需要两个参数:"mod"和"text"。mod可以是zh2en、en2zh、ja2zh、zh2ja,分别代表相应的语言对;text为待翻译文本。直接返回翻译结果即可。
- 对于谷歌翻译无法使用的情况,请大家各显神通。
- 如需添加其他翻译接口,请确保翻译接口:1.易于申请(例如,微软翻译需要信用卡,我无法申请);2.API接口友好,至少我能学习使用;3.接口不是限时的(例如有道翻译,只有少量免费额度用完就失效,不符合我偶尔使用也能保持有效的需求)。
- 离线翻译耗时较长,没有GPU加速。理论上可以实现GPU加速,但我尚未实现。
服务器搭建说明
- 服务器搭建需要以下环境(参考链接):
- Python 3.8
- Flask
- Gevent
- Transformers
- SentencePiece
- PyTorch
- 安装完成后运行translation.py。首次运行会下载离线识别包,大小约1GB多,运行时占用内存也约1GB,请根据电脑配置考虑。如果已有下载好的模型,可以修改脚本中的path变量指向本地地址,注意路径中不能包含中文字符。之后无需再次下载。
- 在软件设置中的"翻译API-离线翻译-网址"输入:http://127.0.0.1:16888/wesky-translater(如果搭建在其他服务器上,请将127.0.0.1替换为相应IP地址)。
其他说明
- 如果有技术高手能够打包,请与我联系,我会将信息添加到文章中。
- 如遇到奇怪问题,联系我可能也无法解决,受限于作者知识水平有限。
下载链接
https://github.com/wangfreexx/wangfreexx-tianruoocr-cl-paddle/releases
未来计划
离线翻译- 重构截图功能
- 增加图片二值化处理,提高识别率
版本更新说明
v1.3.9(2023年5月30日)
- 更新ZXING库,现在能够识别条形码
- 添加了用户自定义宽高的设置,可以在其他功能中设置长宽高,但需注意程序有最小尺寸限制,小于最小值时设置不生效,当所有设置值为0时程序会使用默认尺寸
v1.3.8.2(2023年4月14日)
- 删除了部分无用图标,如拆分、朗读等
- 修正了静默识别和静默复制自动处理文本的问题,除非在界面默认合并(合并图标右键变红),否则复制到剪贴板的是原始文本(保留换行)
v1.3.8.1(2023年1月4日)
- 优化高分辨率屏幕适配,可在设置中单独设置图标和文字缩放倍数,实现界面放大
v1.3.8(2023年1月4日)
- 默认取消静默识别
- 初步适配高分辨率屏幕,可在设置中调整缩放倍数以放大界面,除翻译界面文字缩放存在问题外,其他均可正常缩放
- 新增按钮,可在末尾添加换行
- 代理功能现可使用,仅对谷歌翻译有效,其他翻译服务无效
v1.3.7(2022年11月21日)
注意: 默认开启静默识别,请在设置中修改,下个版本将取消此默认设置
- 将OCR识别和翻译字体修改为微软雅黑
- 添加腾讯、彩云(均需API)和离线翻译(详见翻译说明)
- 添加静默识别和默认复制选项
- 在设置中添加版本号以便识别
- 解决识别后的文字在创建文件夹时提示非法字符的问题
- 由于更新影响存储结构,更新时需删除Data-my.Config,让程序自行重新生成,请合理保留配置
- 重新编译ShareX.ScreenCaptureLib.dll,修复快捷键A保存图片无法使用的问题(如不生效,请更新至最新的1.3.7版本,之前上传的1.3.7未修正此问题)
v1.3.6(2022年11月8日)
- 修复百度翻译只能翻译第一行的问题
- 修复每次识别后多出一行换行符的问题
- 将识别后字体切换为微软雅黑,但翻译字体未变
v1.3.5(2022年8月14日)(非重要更新,非区域问题可不下载)
- 彻底抛弃ini结构,采用xml结构utf8存储配置,适应不同语言环境(非unicode语言为中文以外的情况)
- 修改paddle默认参数以适应小框识别问题 I5LRD0
v1.3.4(2022年8月10日)
- 彻底解决paddle识别率不高的问题
- 不再使用fody合并dll
v1.3.3(2022年8月7日)
- 更新paddle为v3模型,与RapidOCR一致
- 关于之前反馈的模型识别率降低问题,我认为已解决(实际未解决,心态崩溃。即使替换模型也不如1.2.5版本,不知何故。只要切换一次cl再切回paddle,paddle又恢复正常,心情确实很糟糕。决定有空好好研究,但不是现在)
- 将nuget包管理更改为PackageReference,更新emgu等库
- 解决了在不同语言环境下读取ini文件的问题,ini文件现在采用unicode编码
v1.3.2(2022年3月11日)
- 修改了模型名称,方便更新替换。同时更新了paddle的模型,与RapidOCR一致,准确率有所提升。
v1.3.1(2022年1月29日)
- 修正了开启默认合并行导致数据丢失的问题
- 使用fody合并dll,减少文件数量
v1.3(2021年12月27日)
- Win7现在也能使用了!(详见更新说明)
- 修复段落合并功能的bug
- 尝试解决识别文本与显示不一致的问题,即识别框出现大量重复文字的bug(实际没有这些文字,只是显示问题)
- 谷歌翻译采用"ZZK-1989"大佬的方法,速度更快,且支持段落识别,但翻译成功与否取决于网络流畅程度
- 切换模型和修改模型不再需要重启应用,只需随意切换一次模型即可(将载入模型放在了切换模型的位置)
v1.2.6
- 修正一个编译bug(具体情况是编译识别为空)
- 改进段落合并功能,拆分按钮现在不会清空文字,但仍然无用
- 采用64位编译
v1.2.5
- 恢复之前删除的百度在线OCR功能,现可使用,并加入错误检测,避免崩溃
- 段落翻译增加延时,避免IP被封
v1.2.4
- 添加保留段落翻译功能,不再合并段落翻译,切换接口即可,由于单独翻译,速度可能稍慢
v1.2.3
- 添加参数帮助(注释)
v1.2.2
- 修复无法重启的bug
v1.2.1
- 修复无法切换模型的bug,初始paddle模型选择英文
v1.2
- 更新翻译接口,现在谷歌和百度可以使用!换行会自动处理成连贯文本,方便PDF处理。百度需申请API
- 添加几个轻量模型(日文和英文专用),切换需重启
- 修复部分bug,清理部分源码
应该不会再更新了!
V1.1
- 添加paddle-ocr支持,模型较小,速度快!
- 可以切换接口了,虽然工程中名字仍为其他名称,但编译出的版本不会显示搜狗和腾讯
- 优化内存占用(每次识别完自动清理内存)
V1.0
- 添加Chineseocr-lite支持,使用原搜狗接口选项
一些随想
v1.3.8
感觉很多"伪"需求(之所以称为伪是因为我认为用不到),精力有限,不再更新,除了部分bug修复。当然,如果能有偿还是可以考虑,只是有违初衷。
v1.3.7
封校带来的更新,现在可以完全离线使用了,满足了我最初的愿望。
v1.3.6
关于本人目前正处于研三关键时期,最近精力有限,无法及时解决各种问题。而且本身不是程序员出身,对很多问题其实我也无能为力。全面重构没有必要,本来就是以满足离线使用为主。之后会想办法加入离线翻译,实现完全离线。
v1.3.4
一杯茶一包烟,一个bug调一天。Paddle识别率不高的原因是因为模型设置的参数没有初始化,导致第一次使用时程序识别效果不佳,但切换一下模型相当于初始化后就好了。具体问题在438行,调用的参数错误。
v1.3.3
Win7编译后需要手动替换onnxruntime.dll,版本为1.6,VS NuGet中的不支持Win7,需要从GitHub上下载支持的版本。尝试解决读取ini文件的问题,本来想改成UTF-8格式读取,但试了很久都不行,花了大概3天一无所获。不过今天用了别人的库一下就解决了...........还是Ctrl+V好用。
v1.3
Win7支持源于逛吾爱论坛时看到有大佬做出了类似ncnn和onnx的天若本地版,目的就是解决我的不支持Win7的问题。可惜没有开源,但大佬提供了思路。顺着大佬思路,我也自己编译了onnxruntime。得益于微软的开源,编译很简单。然后又修正了库的引用,在Win7上真的跑起来了(我用了虚拟机)。我编译的是onnxruntime 1.5.2版本,1.6我试了好像不支持了,具体不清楚。当然大佬还做了其他差异化的东西,例如二维码、局域网网页调用,我就没做了,自己还是太菜。应该不会再更新了,算是圆满了。这个项目其实只是简单粘贴复制,方法很粗糙,希望有朝一日能给大家提供一点微薄的帮助。
项目支持者随时间变化
许可证
GPL-3.0 许可证