Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

百度飞桨OCR可替换微软MODI #17

Open
runqinshiye opened this issue Jan 5, 2022 · 27 comments
Open

百度飞桨OCR可替换微软MODI #17

runqinshiye opened this issue Jan 5, 2022 · 27 comments
Labels
❤️ 好建议 改进 New feature or request 识字 关于文本识别功能

Comments

@runqinshiye
Copy link

runqinshiye commented Jan 5, 2022

使用文字识别功能需要安装 Microsoft Office 2003(或2007)的 Document Imaging 组件(MODI)需要依赖微软office组件,近几天关注到基于百度飞桨OCR已经有大佬完成C#封装并可离线部署,期待可以双剑合璧。参考连接:
https://mp.weixin.qq.com/s/U6gLjz1kbnftLWnVbWDkow
https://github.com/sdcb/paddlesharp

@wmjordan wmjordan added the 改进 New feature or request label Jan 5, 2022
@wmjordan
Copy link
Owner

wmjordan commented Jan 5, 2022

MODI 在 Windows 10 好像已经用不了了。
这个看起来不错,希望可以用它替代 MODI。

@wmjordan wmjordan added ❤️ 好建议 识字 关于文本识别功能 labels Jan 5, 2022
@calcitem
Copy link
Contributor

那么这样就具有类似 https://www.abbyy.cn/finereader/features/ 这样的基于 AI 的 OCR 了,确实不错😊

@wmjordan
Copy link
Owner

之前看了一下,识别功能再加上模型,大约有一百多兆之多,有点麻烦。我看看是否可能尽量避免 PDF 补丁丁直接依赖这个库,让它保持一定的独立性,让用户可以按需安装。

@woaidianqian
Copy link

使用文字识别功能需要安装 Microsoft Office 2003(或2007)的 Document Imaging 组件(MODI)需要依赖微软office组件,近几天关注到基于百度飞桨OCR已经有大佬完成C#封装并可离线部署,期待可以双剑合璧。参考连接:
https://mp.weixin.qq.com/s/U6gLjz1kbnftLWnVbWDkow
https://github.com/sdcb/paddlesharp

这个插件只支持64位系统,看来32位系统真的该淘汰了

@lelandyang
Copy link

其实最有名的OCR库莫过于Tesseract,从4.x开始就使用了AI模型,中文支持不错,成熟度高于Paddle,另外,由于是Google的国际上知名项目,被作者弃坑的概率比较小。

@wmjordan
Copy link
Owner

我很早之前就留意到 Tesseract,但是运行速度超慢,更重要的是识别效果很差。不知道近年来有何改进。

@wmjordan
Copy link
Owner

wmjordan commented Jan 31, 2022

刚才找了一个网站测试 Tesseract 的中文识别效果,这个网站的源代码和 Tesseract 的版本同步得应该比较快。识别速度还是很慢,效果还是很不好,远不如十几二十年前的 MODI。我之前测试过百度的文本识别,速度很快(通过网络上传一幅图片,识别出结果,到在其网站上显示出结果,用最耗计算资源的最高精度模式,速度也不比本机运行 MODI 慢),而且效果的确很好。即使是弃坑了,也堪为我等所用。

@calcitem
Copy link
Contributor

看起来百度似乎是有免费调用API的次数限制: https://ai.baidu.com/ai-doc/OCR/9k3h7xuv6

@lelandyang
Copy link

看起来百度似乎是有免费调用API的次数限制: https://ai.baidu.com/ai-doc/OCR/9k3h7xuv6

自从redhat公司discontinue了CentOS,我就感觉商业公司收费项目的开源版本要悠着点用。:-D

@wmjordan
Copy link
Owner

@calcitem , @lelandyang

@runqinshiye 已经给出了离线调用百度文字识别模块的开源项目包,我已经下载测试编译通过了。我稍微测试了一下,识别速度也很快。
简体汉字的识别准确率可能达不到在线 ai.baidu.com 那么高,但也能识别宋体、黑体、楷体文本,以及中英文混合文本,怎样都比 Tesseract 好(它连文字PDF转出来的图片的识别率都很低,遑论扫描图片和其它场景的图片了)。
繁体横排文本的识别率比较低,竖排文本的识别率就更低了,远不如 MODI,可能他们训练的模型样本还不太够。

@huyang174
Copy link

huyang174 commented Feb 18, 2022

@wmjordan 大佬你好,请问你是否可以考虑兼容马健提取的MODI组件呢?
我发现安装他的组件之后用PDF补丁丁会显示支持法文识别,但是在识别英文图片的时候会报错误编号:-959971327
Object hasn't been initialized and can't be used yet。
网上找了几个英文的sharepoint designer 2007安装之后没法正常用PDF补丁丁的文字识别功能。
马健提取的MODI组件只有40兆,用他的FreePic2Pdf效果还是很好的,只是没办法直接在pdf上识别并叠加可搜索层,需要抽取成图片之后再处理。
MODI 说明链接:https://www.cnblogs.com/stronghorse/p/4913447.html

@wmjordan
Copy link
Owner

wmjordan commented Feb 18, 2022

@huyang174
在 Windows 7 和早期的 Windows 10 上,安装了 MODI 是能使用的,但是到不知道哪个 Windows 版本开始就用不了。
FreePic2Pdf 在 Windows 10 上还能用 MODI 吗?

@huyang174
Copy link

huyang174 commented Feb 18, 2022

@wmjordan
FreePic2Pdf 在我的Windows 10 家庭中文版 21H2 19044.1526 上面MODI功能工作正常。
我尝试了下在正常更新的Win7上用马健提取的MODI跑PDF补丁丁,可以正常识别,只是可选文字识别语言还是只有法文。、
看起来是Win10的锅了
image

刚刚用识别出来的结果叠加到PDF上,效果有点惨:
image

@wmjordan
Copy link
Owner

我尝试了下在正常更新的Win7上用马健提取的MODI跑PDF补丁丁,可以正常识别,只是可选文字识别语言还是只有法文

有个好消息,今天晚上我成功在我电脑上让 PDF 补丁丁调用 MODI 了。
我下载的那个安装包是把 MODI 的文件装到电脑了,但是没有完整地写入注册表信息,导致找不到中文的识别语言。

参考马健先生的 MODI 说明链接:https://www.cnblogs.com/stronghorse/p/4913447.html
将下面的代码保存为一个reg文件,导入注册表,在 PDF 补丁丁里就能找到简繁中文和英文三种语言了。
image

当然,要使用 MODI,还必须使用管理员来启动 PDF 补丁丁,否则还是会遇到调用失败的问题。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Installer\Components\61BA386016BD0C340BBEAC273D84FD5F]
"1028"=hex(7):76,00,55,00,70,00,41,00,56,00,4f,00,65,00,64,00,40,00,24,00,21,\
00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\
5f,00,31,00,30,00,32,00,38,00,3c,00,00,00,00,00
"2052"=hex(7):76,00,55,00,70,00,41,00,56,00,53,00,2e,00,7d,00,58,00,25,00,21,\
00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\
5f,00,32,00,30,00,35,00,32,00,3c,00,00,00,00,00
"1033"=hex(7):76,00,55,00,70,00,41,00,56,00,54,00,28,00,38,00,41,00,24,00,21,\
00,21,00,21,00,21,00,21,00,4d,00,4b,00,4b,00,53,00,6b,00,4f,00,43,00,52,00,\
5f,00,31,00,30,00,33,00,33,00,3e,00,26,00,61,00,45,00,4d,00,61,00,65,00,2c,\
00,37,00,71,00,39,00,2a,00,44,00,58,00,64,00,55,00,40,00,45,00,50,00,69,00,\
3d,00,00,00,00,00

@huyang174
Copy link

@wmjordan 谢谢大佬!

@wmjordan wmjordan pinned this issue Apr 9, 2023
@heham
Copy link

heham commented Apr 22, 2023

希望可以用paddle替代了,毕竟安卓上都有app使用离线的识别功能了,而且速度和准确率也还不错

@wmjordan
Copy link
Owner

我将PaddleSharp部署到本机,下载了模型和相关的依赖文件后发现:光是库文件和模型就已经差不多要400MB了。
不知道有没有人能精简一下,减少依赖的库?

@heham
Copy link

heham commented Apr 25, 2023

不是开发者,之前在手机关注一个autoX的工具,自带有paddle可离线ocr,似乎不大,整个安装包也就几十M,估计paddle占不超过20M甚至10M,或许是精简的模型,大模型可能大点,项目地址https://github.com/kkevsekk1/AutoX,供参考

@Charltsing
Copy link

各种OCR我都测试过了,唯一推荐的方法是使用在线接口。

可以试试白描的,这个支持网页提交,也就是说,我们可以直接利用它的api

其它还有很多,有些用多了需要交费,有些需要自己破解加密参数,都很麻烦。

@wmjordan
Copy link
Owner

wmjordan commented May 1, 2023

白描的识别准确率的确很高,可惜只有文本,没有文字的坐标和尺寸。

@wmjordan
Copy link
Owner

wmjordan commented May 5, 2023

不是开发者,之前在手机关注一个autoX的工具,自带有paddle可离线ocr,似乎不大,整个安装包也就几十M,估计paddle占不超过20M甚至10M,或许是精简的模型,大模型可能大点,项目地址https://github.com/kkevsekk1/AutoX,供参考

@heham 模型大一些还可以理解。问题是 PaddleSharp 依赖的库本身就已经达到一百多兆了。 😝

@lelandyang
Copy link

不是开发者,之前在手机关注一个autoX的工具,自带有paddle可离线ocr,似乎不大,整个安装包也就几十M,估计paddle占不超过20M甚至10M,或许是精简的模型,大模型可能大点,项目地址https://github.com/kkevsekk1/AutoX,供参考

@heham 模型大一些还可以理解。问题是 PaddleSharp 依赖的库本身就已经达到一百多兆了。 stuck_out_tongue_closed_eyes

我觉得不一定需要使用PaddleSharp,PanddleOCR支持C语言binding,由此我们可以直接使用C#调用C的接口识别。
参考:
[1] https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/deploy/cpp_infer/docs/windows_vs2019_build.md
[2] https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html#python
[3] https://paddleinference.paddlepaddle.org.cn/quick_start/c_demo.html

@Charltsing
Copy link

我想起个阿里的智能图片翻译,这个api提供ocr功能,我记得可以返回位置和文本

因为图片编辑器需要这个信息来做编辑

@lelandyang
Copy link

我想起个阿里的智能图片翻译,这个api提供ocr功能,我记得可以返回位置和文本

因为图片编辑器需要这个信息来做编辑

我认为这个违背了开源免费,自主可控原则。毕竟有些人的PDF可能是公司或者个人的机密文件,不能上传的。

@heham
Copy link

heham commented May 7, 2023

不是开发者,之前在手机关注一个autoX的工具,自带有paddle可离线ocr,似乎不大,整个安装包也就几十M,估计paddle占不超过20M甚至10M,或许是精简的模型,大模型可能大点,项目地址https://github.com/kkevsekk1/AutoX,供参考

@heham 模型大一些还可以理解。问题是 PaddleSharp 依赖的库本身就已经达到一百多兆了。 😝

不太懂,原来也看到有人给做的ocr插件,总共就20来M的样子,可能是paddle lite

@wmjordan
Copy link
Owner

wmjordan commented May 9, 2023

@lelandyang

是不一定需要使用 PaddleSharp。PaddleSharp这个.NET的库其实也很小,主要问题是它所依赖的C库巨大。

我觉得不一定需要使用PaddleSharp,PanddleOCR支持C语言binding,由此我们可以直接使用C#调用C的接口识别。 参考: [1] https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/deploy/cpp_infer/docs/windows_vs2019_build.md [2] https://paddleinference.paddlepaddle.org.cn/user_guides/download_lib.html#python [3] https://paddleinference.paddlepaddle.org.cn/quick_start/c_demo.html

@wmjordan
Copy link
Owner

wmjordan commented Feb 4, 2024

有没有网友知道在哪里可以下载到识别率比较高、至少支持 GB2312 全字符集的 Tesseract 训练数据呢?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
❤️ 好建议 改进 New feature or request 识字 关于文本识别功能
Projects
None yet
Development

No branches or pull requests

8 participants