zoukankan      html  css  js  c++  java
  • Python重构ocr的cnocr中文ocr识别技术

    简介

    由于国内爱因互动 Ein+项目需求,项目组内部成员对ocr技术进行了重构,开发出了python的cnocr库。

    cnocr是用来做中文OCR的Python3包。cnocr自带了训练好的识别模型,安装后即可直接使用。

    cnocr主要针对的是排版简单的印刷体文字图片,如截图图片,扫描件等。cnocr目前内置的文字检测和分行模块无法处理复杂的文字排版定位。如果要用于场景文字图片的识别,需要结合其他的场景文字检测引擎使用。

    安装

    sudo pip3 install cnocr               
    

    注意事项

    首次使用cnocr时,系统会自动从Dropbox下载zip格式的模型压缩文件,并存于~/.cnocr目录。下载后的zip文件代码会自动对其解压,然后把解压后的模型相关文件放于 ~/.cnocr/models 目录。

    如果系统不能自动从 Dropbox 成功下载zip文件,则需要手动下载此zip文件并把它放于~/.cnocr目录。下载地址是 百度云盘:https://pan.baidu.com/s/1s91985r0YBGbk_1cqgHa1Q (提取码为 pg26 )

    使用

    单行识别

    如果明确知道要预测的图片中只包含了单行文字,可以使用函数CnOcr.ocr_for_single_line(img_fp)进行识别。和 CnOcr.ocr()相比,CnOcr.ocr_for_single_line()结果可靠性更强,因为它不需要做额外的分行处理。

    # 参数说明 
    输入参数 img_fp: 可以是需要识别的单行文字图片文件路径(如上例);或者是已经从图片文件中读入的数组,
    类型可以为mx.nd.NDArray 或 np.ndarray,取值应该是[0,255]的整数,维数应该是(height, width)或(height, width, channel)。
    如果没有channel,表示传入的就是灰度图片。第三个维度channel可以是1(灰度图片)或者3(彩色图片)。如果是彩色图片,它应该是RGB格式的。 返回值:为一个list,类似这样['你', '好', 'U', 'O', 'S']。 示例1: from cnocr import CnOcr ocr = CnOcr() res = ocr.ocr_for_single_line('examples/1.png') print("Predicted Chars:", res) 示例2: import mxnet as mx from cnocr import CnOcr ocr = CnOcr() img_fp = 'examples/1.png' img = mx.image.imread(img_fp, 1) res = ocr.ocr_for_single_line(img) print("Predicted Chars:", res)

    多行识别

    函数CnOcr.ocr_for_single_lines(img_list)可以对多个单行文字图片进行批量预测。函数CnOcr.ocr(img_fp)和CnOcr.ocr_for_single_line(img_fp)内部其实都是调用的函数CnOcr.ocr_for_single_lines(img_list)。

    # 参数说明 
    输入参数 img_list: 为一个list;其中每个元素是已经从图片文件中读入的数组,类型可以为mx.nd.NDArray 或 np.ndarray,
    取值应该是[0,255]的整数,维数应该是(height, width)或(height, width, channel)。如果没有channel,表示传入的就是灰度图片。
    第三个维度channel可以是1(灰度图片)或者3(彩色图片)。如果是彩色图片,它应该是RGB格式的。 返回值:为一个嵌套的list,类似这样[['第', '一', '行'], ['第', '二', '行'], ['第', '三', '行']]。 示例: import mxnet as mx from cnocr import CnOcr ocr = CnOcr() img_fp = 'examples/multi-line_cn1.png' img = mx.image.imread(img_fp, 1).asnumpy() line_imgs = line_split(img, blank=True) line_img_list = [line_img for line_img, _ in line_imgs] res = ocr.ocr_for_single_lines(line_img_list) print("Predicted Chars:", res)

    关于cnocr更多技术

    cnocr技术

  • 相关阅读:
    ASP.NET MVC构建RESTful服务时返回Unauthorized(401)状态
    [原]jQuery Tab插件,用于在Tab中显示iframe,附源码和详细说明
    [转]线程间操作无效: 从不是创建控件“ *** ”的线程访问它。
    ASP.NET MVC中RESTful原教旨主义者的两个实现细节
    [原]C#绘制等值线二 等值线追踪
    Nginx+iptables 防DDOS,恶意访问,采集器
    Nginx+iptables屏蔽访问Web页面过于频繁的IP(防DDOS,恶意访问,采集器)
    解决CC攻击,Linux VPS,登录SSH,登录进VPS控制面板
    Inno Setup打包程序默认选择创建桌面图标
    苹果笔记本连接黑莓设置
  • 原文地址:https://www.cnblogs.com/qinlangsky/p/13491556.html
Copyright © 2011-2022 走看看