在论坛上搜了大佬们推荐的 ocr 工具,最后使用了 cnocr+cnstd 来识别发票上的文字,开发环境 python install 之后文本识别率提高的,符合业务场景要求。但是部署到生成环境(也是采用 pip install 的方式),中文识别率就变得很低。对比过环境上的模型,都是采用默认的模型( densenet_lite_136-fc )。 有没有用过的大佬来帮忙分析一下,目前想不出还有其他的影响因素。
1
yangyaofei 2022-01-12 12:43:54 +08:00
cnn 的快速实现结果是可能不稳定的, 好像是有办法关闭, 但是那种应该是不影响到性能
也有可能是一个是 cpu 一个是 gpu 再加上导致不一样, 但是也不至于到影响精度的程度..... 感觉图像被压缩的可能性更大一点.... |
2
clemente0620 2022-01-12 12:54:44 +08:00
paddle 有集成好的方案
|
3
zerohzd 2022-01-12 13:53:20 +08:00
发票 OCR 我们用的 textin
|
4
passMeBy OP @yangyaofei 都是在默认在 CPU 上跑的,没有特别修改参数。也试过用同个图片,但跑出来的结果也是不一样,cnstd 在 detect 的时候,会对图片进行 resize ,但也都是默认值[768,768](这个我再调下参数试试)。大佬说 CNN 的问题,就不清楚如何下手了,希望大佬有时间可以来分享下这块知识。
|
6
yangyaofei 2022-01-12 14:24:09 +08:00
@passMeBy 这个我就不太清楚了, CNN 的那个是原来做实验的时候要把 CNN 设置一个随机数定死(具体忘记了),然后才能让跑分一致,但是那个一般不会影响特别大. cnocr 现在好像是 pytorch 了,当时用的时候因为是 mxnet 转 onnx 不好用就放弃了. 上面说的 paddleOCR 是比较好的方案,虽然也有坑. 现在感觉就是生产环境 onnx 天下第一,paddlepaddle 框架的话,除了脏话没啥想说的
|
7
sujin190 2022-01-12 14:27:28 +08:00
@yangyaofei #6 随机数定死是初始参数一致,在训练的时候修改模型是可以前后对比模型效果,不至于因为初始参数影响模型训练效果吧,训练好的模型都是定值参数,不会受影响的吧
|
8
sujin190 2022-01-12 14:32:14 +08:00
可以 md5 下两边模型看看是不是同一个,说不定模型不一样呢,而且 CNN 网络在 resize 的图片比例不一样需要 padding 的话,如果模型训练时没有加入 padding 识别的话,识别率会不是很行,似乎还有如果你训练图片完全用的正拍,但是生产环境使用时有旋转或者偏移似乎也会识别率不行,要能有效识别都要加入样本才行
|
9
lixile 2022-01-12 14:38:58 +08:00
提个题外话 默认语言设置 导致不同的语言偏好
从而导致识别权重的部分(生成 or 临时的)阈值有差异 |
10
passMeBy OP |
11
passMeBy OP |
12
gengchun 2022-01-12 15:54:21 +08:00
提一句。
去年有个小小的需求,要识别发票。 结果发现直接用 pdf 提取就可以满足,根本不需要调用 OCR ,…… 现在程序跑到现在好像还行,…… 票据识别,我还看过接口,其实中小规模用的话,采购云厂商的就行了,何必自己开发。超大规模自己开发可能还能收回成本。 |
13
passMeBy OP @gengchun 大佬是如何提取的,之前试过直接读取,但是只能读取到发票上那些彩色文本,那些黑色字体(机打文本)读取不了。这才采用 ocr 。
|
14
gengchun 2022-01-12 16:29:35 +08:00
@passMeBy 首先,你是电子发票吗?电子发票的话,直接读 qrcode ,百分之百识别。其它的信息我是结合 pdfminer 的。到目前也没有太多问题。不过我的量也少。当然各地的发票都试了一下,到现在也没有太多问题。
真的一个月几千到十万张,我是会推荐采购云厂商的,毕竟性价比在那里摆着。 |
15
passMeBy OP 右上角有二维码,算电子发票吗? qrcode 的作用是为了读取票据的那些抬头信息吗?好像也只能读到这些。
|
16
yangyaofei 2022-01-12 17:39:05 +08:00
@sujin190 有影响的 https://pytorch.org/docs/stable/notes/randomness.html 但是应该不会影响最终性能(89 -> 88 这种区别)
@passMeBy paddleOCR 的小模型还挺快的,我这边一般都是一张文档 3 秒(CPU), 大模型和小模型精度在我的使用场景下基本没差... |
17
princelai 2022-01-13 10:15:24 +08:00
我用的 paddle,用的 GPU 部署,挺快的啊,毫秒级别
|