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技术

  • 相关阅读:
    Win32 键盘事件
    好用的Markdown 编辑器及工具
    如何激发您孩子的学习动力和兴趣
    横扫芯片后,紫光欲进军公有云 数百亿资金已到位(大事表)
    C#更改控制台文本颜色
    I/O多路复用
    Python 安装 httpie
    Elasticsearch 5.0
    认证架构
    注册微信小程序
  • 原文地址:https://www.cnblogs.com/qinlangsky/p/13491556.html
Copyright © 2011-2022 走看看