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 · 175 天前 · 2027 次点击
    这是一个创建于 175 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

    @passMeBy paddleOCR 的小模型还挺快的,我这边一般都是一张文档 3 秒(CPU), 大模型和小模型精度在我的使用场景下基本没差...
    princelai
        17
    princelai  
       174 天前
    我用的 paddle,用的 GPU 部署,挺快的啊,毫秒级别
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1133 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 19:44 · PVG 03:44 · LAX 12:44 · JFK 15:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.