关于easyocr、paddleocr、cnocr之比较

关于easyocr、paddleocr、cnocr之比较cnocr是用来做中文OCR的Python3包。cnocr自带了训练好的识别模型,安装后即可直接使用。cnocr主要针对的是排版简单的印刷体文字图片,如截图图片,扫描件等。cnocr目前…

cnocr是用来做中文OCR的Python 3包。cnocr自带了训练好的识别模型,安装后即可直接使用。cnocr主要针对的是排版简单的印刷体文字图片,如截图图片,扫描件等。cnocr目前内置的文字检测和分行模块无法处理复杂的文字排版定位。如果要用于场景文字图片的识别,需要结合其他的场景文字检测引擎使用。

EasyOCR 是一个使用 Java 语言实现的 OCR 识别引擎(基于Tesseract)。借助几个简单的API,即能使用Java语言完成图片内容识别工作。并集成了图片清理、识别 CAPTCHA 验证码图片,票据等内容的一体化工作。EasyOCR不仅可以为消费者提供服务,更主要面向开发,能够提供本地化的开发SDK集成,与 C/S,B/S 及 Android 移动端项目进行原生集成。

PaddleOCR是一个与OCR相关的开源项目,不仅支持超轻量级中文OCR预测模型,总模型仅8.6M(单模型支持中英文数字组合识别、竖排文本识别、长文本识别,其中检测模型DB(4.1M)+识别模型CRNN(4.5M)),而且提供多种文本检测训练算法(EAST、DB)和多种文本识别训练算法(Rosetta、CRNN、STAR-Net、RARE)。

easyocr、paddleocr、cnocr是目前比较常见的开源OCR组件,提供了标注、训练、调用等功能,对于高清、标准的图片和证件照的识别问题都不大,但对于拍摄效果、角度、以及物件本身的模糊问题识别的效果,还是有很大区别的。

关于easyocr、paddleocr、cnocr之比较

个人测试情况如下:

测试项 easyocr paddleocr cnocr
效率 极差 一般
识别准确度 一般 极差

代码示例如下

import easyocr
# 创建reader对象
reader = easyocr.Reader(['ch_sim','en'],gpu=False)
# 读取图像
result = reader.readtext('C:\Python\Pycharm\dzp.jpg')
# 结果
# print(result)
# [([[317, 131], [485, 131], [485, 175], [317, 175]], '晶序列号', 0.8012555837631226),
#  ([[1127, 147], [1319, 147], [1319, 183], [1127, 183]], '031094', 0.2800997197628021),
#  ([[],[],[],[]],' ',0.0),
for box_info in result:
    print('坐标=', box_info[0])
    print('文字=', box_info[1])
    print('概率=', box_info[2])
    # 坐标= [[317, 131], [485, 131], [485, 175], [317, 175]]
    # 文字= 晶序列号
    # 概率= 0.8012555837631226
from cnstd import CnStd
from cnocr import CnOcr
std = CnStd()
cn_ocr = CnOcr()
box_info_list = std.detect('C:\Python\Pycharm\dzp.jpg')
#print('box_info_list=',box_info_list)
for box_info in box_info_list:
    # {'box': array([[320, 934],[790, 934],[790, 976],[320, 976]]),
    #  'score': 1.0,
    #  'cropped_img': array([[[83, 85, 82],[84, 86, 83],[81, 87, 83]],
    #        [[86, 88, 85],[84, 86, 83],[83, 85, 82],[],[],[]]
    #        ], dtype=uint8)}
    cropped_img = box_info['cropped_img']  # 检测出的文本框
    ocr_res = cn_ocr.ocr_for_single_line(cropped_img)
    print('ocr result: %s' % ''.join(ocr_res))
    # ocr result:
    # ocr result: 更痤国盔
    # ocr result: 开擅查立
    # ocr result: oN
    # ocr result: H
    # ocr result: Hv
    # ocr result: !/油面人
from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # need to run only once to download and load model into memory
img_path = 'C:\Python\Pycharm\dzp.jpg'
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line)
    # [[[272.0, 121.0], [486.0, 126.0], [486.0, 175.0], [272.0, 171.0]], ['产品序列号', 0.9959299]]
    # [[[272.0, 168.0], [436.0, 173.0], [436.0, 216.0], [272.0, 211.0]], ['制造年月', 0.9986]]

对于各OCR组件训练标注和完整开发过程尚未学习,估计训练后不同组件识别率会有很大提升空间,此外效率与GPU服务器也有很大关系,后续慢慢尝试吧

今天的文章关于easyocr、paddleocr、cnocr之比较分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/32278.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注