PDFPatcher icon indicating copy to clipboard operation
PDFPatcher copied to clipboard

百度飞桨OCR可替换微软MODI

Open runqinshiye opened this issue 2 years ago • 27 comments

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

runqinshiye avatar Jan 05 '22 07:01 runqinshiye

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

wmjordan avatar Jan 05 '22 08:01 wmjordan

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

calcitem avatar Jan 15 '22 01:01 calcitem

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

wmjordan avatar Jan 15 '22 01:01 wmjordan

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

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

woaidianqian avatar Jan 15 '22 10:01 woaidianqian

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

lelandyang avatar Jan 30 '22 14:01 lelandyang

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

wmjordan avatar Jan 31 '22 02:01 wmjordan

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

wmjordan avatar Jan 31 '22 02:01 wmjordan

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

calcitem avatar Jan 31 '22 03:01 calcitem

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

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

lelandyang avatar Jan 31 '22 03:01 lelandyang

@calcitem , @lelandyang

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

wmjordan avatar Jan 31 '22 05:01 wmjordan

@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

huyang174 avatar Feb 18 '22 04:02 huyang174

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

wmjordan avatar Feb 18 '22 06:02 wmjordan

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

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

huyang174 avatar Feb 18 '22 16:02 huyang174

我尝试了下在正常更新的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

wmjordan avatar Mar 21 '22 12:03 wmjordan

@wmjordan 谢谢大佬!

huyang174 avatar Mar 22 '22 04:03 huyang174

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

heham avatar Apr 22 '23 07:04 heham

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

wmjordan avatar Apr 22 '23 07:04 wmjordan

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

heham avatar Apr 25 '23 12:04 heham

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

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

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

Charltsing avatar Apr 30 '23 17:04 Charltsing

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

wmjordan avatar May 01 '23 02:05 wmjordan

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

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

wmjordan avatar May 05 '23 01:05 wmjordan

不是开发者,之前在手机关注一个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

lelandyang avatar May 06 '23 05:05 lelandyang

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

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

Charltsing avatar May 06 '23 10:05 Charltsing

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

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

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

lelandyang avatar May 06 '23 12:05 lelandyang

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

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

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

heham avatar May 07 '23 01:05 heham

@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 avatar May 09 '23 06:05 wmjordan

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

wmjordan avatar Feb 04 '24 01:02 wmjordan