天若ocr开源版本的本地版,采用Chinese-lite和paddle-ocr识别,再也不用网络啦
推荐paddle-ocr识别,可以在识别结果里面切换接口
本软件离不开以下仓库、软件的帮助,在此表达崇高的感谢:
https://gitee.com/ZZK-1989/tianruoocr
https://github.com/DayBreak-u/chineseocr_lite/tree/onnx/dotnet_projects/OcrLiteOnnxCs
https://github.com/RapidAI/RapidOCR
软件为64位系统使用,win10/win7都行,没有测试win11,需要.net4.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
可以使用dx修复工具进行修复,一般能够启动 - 请尝试安装vc++运行库,net4.7.2
目前模型
模型名称 | det模型 | rec模型 | cls模型 |
---|
Chinese-lite | 默认 | 默认 | 默认 |
paddle-ocr | ch_PP-OCRv3_det_infer.onnx | ch_PP-OCRv2_rec_infer.onnx | ch_ppocr_mobile_v2.0_cls |
下载地址
https://gitee.com/wanglifree/tianruoocr-cl/releases?https://github.com/wangfreexx/wangfreexx-tianruoocr-cl-paddle/releases
版本更新说明
v1.3.5(2022.8.14)(非重要更新,非区域问题可不下载)
- 彻底抛弃ini结构,采用xml结构utf8储存配置,适应不同语言环境(非unicode语言为中文以外的情况)
- 修改paddle默认参数适应小框识别的问题 I5LRD0
v1.3.4(2022.8.10)
- 彻底解决paddle识别率不高的bug
- 不再使用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,也就是识别框出现很多重复文字的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.4
一杯茶一包烟,一个bug调一天,paddle识别不高的原因是因为模型所设置参数没有初始化,导致第一次时候程序识别不行,但是切换下模型相当于初始化又好了。。。。具体问题在438行,调用的参数错误
v1.3.3
win7编译后需要手动替换onnxruntime.dll,版本为1.6,vs nuget中的不支持win7,github上下载的支持。尝试解决读取ini文件的问题,本来想改成utf8格式读取,但是试了很久都不行,用了大概3天一无所获,不过今天用了别人的库一下就没问题了...........还是crtlv好用
v1.3
win7支持源自与逛吾爱时看到有大佬做出来ncnn和onnx的差不多的天若本地版,目的就是解决我的不支持win7的问题,可惜没有开源,但是大佬提供了思路,然后顺着大佬思路,我也自己编译了onnxruntime,得益于微软的开源,编译很简单,然后又修正了下库的引用,在win7上真的跑起来了(我用了虚拟机)。我编译的是onnxruntime 1.5.2版本,1.6我试了好像不支持了,具体不清楚。当然大佬还做了其他差异化的东西,例如二维码,局域网网页调用,我就没做了,自己还是太菜,应该不会再更新了,算是圆满了,这个项目其实只是简单粘贴复制,方法很菜,希望有朝一日能给大家提供一点微薄的帮助。