3

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

 2 years ago
source link: https://www.v2ex.com/t/827757
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  Python

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

  passMeBy · 9 小时 14 分钟前 · 683 次点击

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

16 条回复    2022-01-12 17:39:05 +08:00

yangyaofei

yangyaofei      7 小时 13 分钟前

cnn 的快速实现结果是可能不稳定的, 好像是有办法关闭, 但是那种应该是不影响到性能

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

感觉图像被压缩的可能性更大一点....

clemente0620

clemente0620      7 小时 3 分钟前

paddle 有集成好的方案

zerohzd

zerohzd      6 小时 4 分钟前

发票 OCR 我们用的 textin

passMeBy

passMeBy      5 小时 59 分钟前

@yangyaofei 都是在默认在 CPU 上跑的,没有特别修改参数。也试过用同个图片,但跑出来的结果也是不一样,cnstd 在 detect 的时候,会对图片进行 resize ,但也都是默认值[768,768](这个我再调下参数试试)。大佬说 CNN 的问题,就不清楚如何下手了,希望大佬有时间可以来分享下这块知识。

passMeBy

passMeBy      5 小时 57 分钟前

@zerohzd 免费吗?

yangyaofei

yangyaofei      5 小时 33 分钟前

@passMeBy 这个我就不太清楚了, CNN 的那个是原来做实验的时候要把 CNN 设置一个随机数定死(具体忘记了),然后才能让跑分一致,但是那个一般不会影响特别大. cnocr 现在好像是 pytorch 了,当时用的时候因为是 mxnet 转 onnx 不好用就放弃了. 上面说的 paddleOCR 是比较好的方案,虽然也有坑. 现在感觉就是生产环境 onnx 天下第一,paddlepaddle 框架的话,除了脏话没啥想说的

sujin190

sujin190      5 小时 30 分钟前

@yangyaofei #6 随机数定死是初始参数一致,在训练的时候修改模型是可以前后对比模型效果,不至于因为初始参数影响模型训练效果吧,训练好的模型都是定值参数,不会受影响的吧

sujin190

sujin190      5 小时 25 分钟前

可以 md5 下两边模型看看是不是同一个,说不定模型不一样呢,而且 CNN 网络在 resize 的图片比例不一样需要 padding 的话,如果模型训练时没有加入 padding 识别的话,识别率会不是很行,似乎还有如果你训练图片完全用的正拍,但是生产环境使用时有旋转或者偏移似乎也会识别率不行,要能有效识别都要加入样本才行

lixile

lixile      5 小时 18 分钟前

提个题外话 默认语言设置 导致不同的语言偏好
从而导致识别权重的部分(生成 or 临时的)阈值有差异

passMeBy

passMeBy      4 小时 54 分钟前

@yangyaofei
@clemente0620 paddleocr 速度太慢,跟 easyocr 有的一拼。

passMeBy

passMeBy      4 小时 46 分钟前

@sujin190 图片是正经图片,都是正正方方的。模型正不正经,可以按大佬说的方式校验一下。
@lixile 我也查一查,后续再反馈大佬。

gengchun

gengchun      4 小时 3 分钟前

提一句。

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

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

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

票据识别,我还看过接口,其实中小规模用的话,采购云厂商的就行了,何必自己开发。超大规模自己开发可能还能收回成本。

passMeBy

passMeBy      3 小时 47 分钟前

@gengchun 大佬是如何提取的,之前试过直接读取,但是只能读取到发票上那些彩色文本,那些黑色字体(机打文本)读取不了。这才采用 ocr 。

gengchun

gengchun      3 小时 28 分钟前

@passMeBy 首先,你是电子发票吗?电子发票的话,直接读 qrcode ,百分之百识别。其它的信息我是结合 pdfminer 的。到目前也没有太多问题。不过我的量也少。当然各地的发票都试了一下,到现在也没有太多问题。

真的一个月几千到十万张,我是会推荐采购云厂商的,毕竟性价比在那里摆着。

passMeBy

passMeBy      3 小时 7 分钟前

右上角有二维码,算电子发票吗? qrcode 的作用是为了读取票据的那些抬头信息吗?好像也只能读到这些。

yangyaofei

yangyaofei      2 小时 18 分钟前

@sujin190 有影响的 https://pytorch.org/docs/stable/notes/randomness.html 但是应该不会影响最终性能(89 -> 88 这种区别)

@passMeBy paddleOCR 的小模型还挺快的,我这边一般都是一张文档 3 秒(CPU), 大模型和小模型精度在我的使用场景下基本没差...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK