天若ocr开源版本的本地版,采用Chinese-lite和paddle-ocr识别,再也不用网络啦
推荐paddle-ocr识别,可以在识别结果里面切换接口
本软件离不开以下仓库、软件的帮助,在此表达崇高的感谢:
https://github.com/DayBreak-u/chineseocr_lite/tree/onnx/dotnet_projects/OcrLiteOnnxCs
软件为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 |
- 目前离线翻译建立在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
- torch
- 安装好后运行translation.py,第一次会下载离线识别包,比较大,1个多G,且运行占用内存也1个G,请自行考虑电脑,如果有下载好的模型可以更改脚本中path位置到本地地址,注意路径中不能有中文,之后不需要再次下载
- 在软件设置翻译api-离线翻译-网址中输入网址http://127.0.0.1:16888/wesky-translater(如果是搭建在其他服务器上,替换127.0.0.1为相应ip)
- 如果有大佬能够打包,请联系我,我放到文中
- 如果出现奇怪问题,联系我也没用,受限于作者知识水平有限
https://github.com/wangfreexx/wangfreexx-tianruoocr-cl-paddle/releases
离线翻译- 重构截图
- 增加图片二值化,提高识别率
- 优化适配高分辨率屏幕,可以在设置中单独设置图标和文字缩放倍数,可以放大界面
- 默认取消静默识别
- 假装适配高分辨率屏幕,可以在设置中设置缩放倍数,可以放大界面,除了翻译界面文字不知道为啥不缩放外,其他均会缩放
- 添加按钮可以在末尾添加换行
- 代理可以使用,仅针对谷歌翻译有用,其他无效
注意: 默认是静默识别,请去设置里面修改,将在下个版本取消默认
- 修改ocr识别、翻译字体为微软雅黑
- 添加腾讯、彩云(均需要api)、离线翻译(具体查看翻译说明)
- 添加静默识别和默认复制选项
- 在设置上添加版本号好识别
- 解决识别后的文字在创建文件夹提示非法字符的bug
- 由于更新东西影响存储结构,更新需要删除Data-my.Config,让程序自己重新生成,请合理保留配置
- 重新编译ShareX.ScreenCaptureLib.dll,修正快捷键A保存图片不能使用的bug(如果不行,请更新最新的1.3.7(之前上传的1.3.7没有修正))
- 修复百度翻译只能翻译第一行的bug
- 修复每次识别后多出一行换行符号的bug
- 切换识别后为微软雅黑字体,但翻译字体没动
- 彻底抛弃ini结构,采用xml结构utf8储存配置,适应不同语言环境(非unicode语言为中文以外的情况)
- 修改paddle默认参数适应小框识别的问题 I5LRD0
- 彻底解决paddle识别率不高的bug
- 不再使用fody合并dll
- 更新了paddle为v3模型,与RapidOCR一致,
- 关于之前反馈的模型识别率更低了的问题,我自认为解决了(并没有解决,心态爆炸,就算替换模型也不如1.2.5版本,咋回事啊,那咋整啊,但是只要切换一次cl再切回paddle,paddle又好使了,心态确实不好了,我决定有空好好弄下,但不是现在)
- 更改nuget包管理为PackageReference,更新emgu等库
- 解决了在不同语言环境下读取ini文件的问题,ini文件现在编码为unicode编码
- 修改了模型名称,方便更新替换。同时更新了paddle的模型,与RapidOCR一致,准确率有提升的。
- 修正了开启默认合并行数据丢失的问题
- 使用fody合并dll,减小文件数量
- Win7也能用了!(详请见更新说明)
- 段落合并功能bug修复
- 尝试解决识别文本和显示不一样的bug,也就是识别框出现很多重复文字的bug(实际没有这些文字,只是显示而已)
- 谷歌翻译采用“ZZK-1989”大佬的方式,更加快速,且支持段落识别,但是能不能翻译全凭网络流畅与否
- 切换模型和修改模型不再需要重启应用,只需要随便切换一次模型即可(将载入模型放在了切换模型的位置)
- 修正一个编译bug(具体情况是编译识别为空)
- 更加合理的段落合并功能,拆分按钮现状不会清空文字了,但是依然没用
- 采用64位编译
- 把原来删除的百度在线ocr给撤销回来了,现在可以使用了,并且加入了错误检测,避免崩溃
- 段落翻译增加了延时,避免ip被封
- 添加了保留段落翻译,不再合并段落翻译,切换接口即可,由于单独翻译,速度可能稍慢
- 添加了参数帮助(注释)
- 修复了不能重启的bug
- 修复了不能切换模型的bug,初始paddle模型是选的英文
- 更新了翻译接口,现在谷歌和百度可以用了!换行会自动处理成量起来的,方便pdf。百度需要申请API
- 添加了几个轻量模型(日文和英文专精),切换需要重启
- 修复了部分bug,清理了部分源码
应该不会再更新了!
- 添加了paddle-ocr支持,模型并不大,速度快!
- 可以切换接口了,虽然工程里面名字还是其他名字,但是编译出来的不会显示搜狗和腾讯了
- 优化了内存占用(每次识别完自动清理内存)
- 添加了Chineseocr-lite支持,使用原来搜狗的接口选项
感觉很多“伪”需求(之所以说伪是因为我觉得用不到),精力有限,不再更新,除了部分bug修复,当然如果能有偿还是可以考虑,只是违背初心
封校带来的更新,可以彻底离线了,满足我当初的愿望了
关于本人目前正在研三关键时期,最近精力有限,无法及时解决各种问题,且本身不是程序员出生,对于很多问题其实我也无能为力,全部重构没有必要,本来就是满足离线为主,之后会想办法加入离线翻译,彻底离线。
一杯茶一包烟,一个bug调一天,paddle识别不高的原因是因为模型所设置参数没有初始化,导致第一次时候程序识别不行,但是切换下模型相当于初始化又好了。。。。具体问题在438行,调用的参数错误
win7编译后需要手动替换onnxruntime.dll,版本为1.6,vs nuget中的不支持win7,github上下载的支持。尝试解决读取ini文件的问题,本来想改成utf8格式读取,但是试了很久都不行,用了大概3天一无所获,不过今天用了别人的库一下就没问题了...........还是crtlv好用
win7支持源自与逛吾爱时看到有大佬做出来ncnn和onnx的差不多的天若本地版,目的就是解决我的不支持win7的问题,可惜没有开源,但是大佬提供了思路,然后顺着大佬思路,我也自己编译了onnxruntime,得益于微软的开源,编译很简单,然后又修正了下库的引用,在win7上真的跑起来了(我用了虚拟机)。我编译的是onnxruntime 1.5.2版本,1.6我试了好像不支持了,具体不清楚。当然大佬还做了其他差异化的东西,例如二维码,局域网网页调用,我就没做了,自己还是太菜,应该不会再更新了,算是圆满了,这个项目其实只是简单粘贴复制,方法很菜,希望有朝一日能给大家提供一点微薄的帮助。