cnocr 部署在不同机器上,中文识别率不一样。

2022-01-12 10:43:25 +08:00
 passMeBy

在论坛上搜了大佬们推荐的 ocr 工具,最后使用了 cnocr+cnstd 来识别发票上的文字,开发环境 python install 之后文本识别率提高的,符合业务场景要求。但是部署到生成环境(也是采用 pip install 的方式),中文识别率就变得很低。对比过环境上的模型,都是采用默认的模型( densenet_lite_136-fc )。 有没有用过的大佬来帮忙分析一下,目前想不出还有其他的影响因素。

3041 次点击
所在节点    Python
17 条回复
yangyaofei
2022-01-12 12:43:54 +08:00
cnn 的快速实现结果是可能不稳定的, 好像是有办法关闭, 但是那种应该是不影响到性能

也有可能是一个是 cpu 一个是 gpu 再加上导致不一样, 但是也不至于到影响精度的程度.....

感觉图像被压缩的可能性更大一点....
clemente0620
2022-01-12 12:54:44 +08:00
paddle 有集成好的方案
zerohzd
2022-01-12 13:53:20 +08:00
发票 OCR 我们用的 textin
passMeBy
2022-01-12 13:58:28 +08:00
@yangyaofei 都是在默认在 CPU 上跑的,没有特别修改参数。也试过用同个图片,但跑出来的结果也是不一样,cnstd 在 detect 的时候,会对图片进行 resize ,但也都是默认值[768,768](这个我再调下参数试试)。大佬说 CNN 的问题,就不清楚如何下手了,希望大佬有时间可以来分享下这块知识。
passMeBy
2022-01-12 14:00:00 +08:00
@zerohzd 免费吗?
yangyaofei
2022-01-12 14:24:09 +08:00
@passMeBy 这个我就不太清楚了, CNN 的那个是原来做实验的时候要把 CNN 设置一个随机数定死(具体忘记了),然后才能让跑分一致,但是那个一般不会影响特别大. cnocr 现在好像是 pytorch 了,当时用的时候因为是 mxnet 转 onnx 不好用就放弃了. 上面说的 paddleOCR 是比较好的方案,虽然也有坑. 现在感觉就是生产环境 onnx 天下第一,paddlepaddle 框架的话,除了脏话没啥想说的
sujin190
2022-01-12 14:27:28 +08:00
@yangyaofei #6 随机数定死是初始参数一致,在训练的时候修改模型是可以前后对比模型效果,不至于因为初始参数影响模型训练效果吧,训练好的模型都是定值参数,不会受影响的吧
sujin190
2022-01-12 14:32:14 +08:00
可以 md5 下两边模型看看是不是同一个,说不定模型不一样呢,而且 CNN 网络在 resize 的图片比例不一样需要 padding 的话,如果模型训练时没有加入 padding 识别的话,识别率会不是很行,似乎还有如果你训练图片完全用的正拍,但是生产环境使用时有旋转或者偏移似乎也会识别率不行,要能有效识别都要加入样本才行
lixile
2022-01-12 14:38:58 +08:00
提个题外话 默认语言设置 导致不同的语言偏好
从而导致识别权重的部分(生成 or 临时的)阈值有差异
passMeBy
2022-01-12 15:03:26 +08:00
@yangyaofei
@clemente0620 paddleocr 速度太慢,跟 easyocr 有的一拼。
passMeBy
2022-01-12 15:11:27 +08:00
@sujin190 图片是正经图片,都是正正方方的。模型正不正经,可以按大佬说的方式校验一下。
@lixile 我也查一查,后续再反馈大佬。
gengchun
2022-01-12 15:54:21 +08:00
提一句。

去年有个小小的需求,要识别发票。

结果发现直接用 pdf 提取就可以满足,根本不需要调用 OCR ,……

现在程序跑到现在好像还行,……

票据识别,我还看过接口,其实中小规模用的话,采购云厂商的就行了,何必自己开发。超大规模自己开发可能还能收回成本。
passMeBy
2022-01-12 16:10:45 +08:00
@gengchun 大佬是如何提取的,之前试过直接读取,但是只能读取到发票上那些彩色文本,那些黑色字体(机打文本)读取不了。这才采用 ocr 。
gengchun
2022-01-12 16:29:35 +08:00
@passMeBy 首先,你是电子发票吗?电子发票的话,直接读 qrcode ,百分之百识别。其它的信息我是结合 pdfminer 的。到目前也没有太多问题。不过我的量也少。当然各地的发票都试了一下,到现在也没有太多问题。

真的一个月几千到十万张,我是会推荐采购云厂商的,毕竟性价比在那里摆着。
passMeBy
2022-01-12 16:50:04 +08:00
右上角有二维码,算电子发票吗? qrcode 的作用是为了读取票据的那些抬头信息吗?好像也只能读到这些。
yangyaofei
2022-01-12 17:39:05 +08:00
@sujin190 有影响的 https://pytorch.org/docs/stable/notes/randomness.html 但是应该不会影响最终性能(89 -> 88 这种区别)

@passMeBy paddleOCR 的小模型还挺快的,我这边一般都是一张文档 3 秒(CPU), 大模型和小模型精度在我的使用场景下基本没差...
princelai
2022-01-13 10:15:24 +08:00
我用的 paddle,用的 GPU 部署,挺快的啊,毫秒级别

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/827757

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX