cnocr 部署在不同机器上,中文识别率不一样。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
passMeBy
V2EX    Python

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

  •  
  •   passMeBy 2022-01-12 10:43:25 +08:00 3762 次点击
    这是一个创建于 1367 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    17 条回复    2022-01-13 10:15:24 +08:00
    yangyaofei
        1
    yangyaofei  
       2022-01-12 12:43:54 +08:00
    cnn 的快速实现结果是可能不稳定的, 好像是有办法关闭, 但是那种应该是不影响到性能

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

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

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

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

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

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

    真的一个月几千到十万张,我是会推荐采购云厂商的,毕竟性价比在那里摆着。
    passMeBy
        15
    passMeBy  
    OP
       2022-01-12 16:50:04 +08:00
    右上角有二维码,算电子发票吗? qrcode 的作用是为了读取票据的那些抬头信息吗?好像也只能读到这些。
    yangyaofei
        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), 大模型和小模型精度在我的使用场景下基本没差...
    princelai
        17
    princelai  
       2022-01-13 10:15:24 +08:00
    我用的 paddle,用的 GPU 部署,挺快的啊,毫秒级别
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1033 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 18:29 PVG 02:29 LAX 11:29 JFK 14:29
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86