主页 > 手机  > 

文字识别软件cnocr学习笔记

文字识别软件cnocr学习笔记
• 安装 pip install cnocr • 基础的使用方法

   首次运行会下载安装模型,如果没有梯子,会报错:

在网络上查找cnocr的模型资源,并下载到本地。 download.csdn.net/download/qq_33464428/89514689?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522751fb72b959dcac98e2fb460683254ea%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fcommercial.%2522%257D&request_id=751fb72b959dcac98e2fb460683254ea&biz_id=1&utm_medium=distribute.pc_search_result.none-task-download-2~all~insert_commercial~default-3-89514689-null-null.142^v101^pc_search_result_base5&utm_term=cnocr%20%E6%A8%A1%E5%9E%8B&spm=1018.2226.3001.4187.4

我放到了网盘:

链接: pan.baidu /s/1HQhyWNhWMjp09m-XTM97hQ

提取码: 6ddy 

模型的默认目录:

        Windows系统:C:\Users\当前用户\AppData\Roaming\cnstd\版本号\ppocr

        Linux系统:~/ ocr/版本号/

        把下载得到的模型解压,每个模型按文件夹保存在上述目录即可。

• ocr() 标准的多行文字检测识别

参数:         img_fp:图像文件的路径,也可以是图像的二进制数据(如使用 open().read() 读取的内容),或者是一个 numpy.ndarray 类型的图像数据(例如使用 cv2.imread() 读取的图像)。 返回值:返回一个包含识别结果的列表,列表中的每个元素是一个字典,字典包含两个键:         text:识别出的文本内容。         score:识别结果的置信度得分,取值范围是 0 到 1,得分越高表示识别结果越可靠。         position:(np.ndarray or None),检测出的文字对应的矩形框;np.ndarray, shape: (4, 2),对应 box 4个点的坐标值 (x, y) ; 示例代码:

from cnocr import CnOcr ocr = CnOcr() img_path = 'test.jpg' res = ocr.ocr(img_path) for line in res:     print(f"文本: {line['text']}, 置信度: {line['score']}") •  图像分辨率对速度的影响

使用不同的分辨率对ocr的生成时间做了如下测试:

分辨率       生成时间

3k*4k            28s 1.6k*1k         0.71s 900*500        0.29s 768*768        0.12s 800*300        0.33s 800150         0.7s

        看得出,当图像很大时,由于数据量巨大,所以生成时间很长,但是图像很小时,时间也变长。这是由于模型内部的输入图形的标准像素是768*768,所以使用768*768速度最快。

• ocr_for_single_line()   识别单行文本

        该方法适用于识别单行文本的图像,当图像中只有一行文本时,使用此方法可以获得更快的识别结果。 参数:

img_fp:与 ocr() 方法的 img_fp 参数含义相同。

返回值:

        返回一个元组,包含两个元素:

        第一个元素是识别出的文本内容。

        第二个元素是识别结果的置信度得分。

示例代码:

from cnocr import CnOcr ocr = CnOcr() img_path = 'single_line_test.jpg' text, score = ocr.ocr_for_single_line(img_path) print(f"文本: {text}, 置信度: {score}")

其他说明:

        模型选择:在初始化 CnOcr 类时,可以通过 model_name 参数选择不同的识别模型,以适应不同的识别需求。例如:         ocr = CnOcr(model_name='densenet_lite_136-fc')

• 速度:

对于800*150像素这样像素的图形,生成时间是0.01s级。

• 使用GPU:

要使用GPU,在创建ocr对象时使用以下参数: 

ocr = CnOcr(model_backend='pytorch', context='cuda') 或 ocr = CnOcr(model_backend='pytorch', context='gpu')

第一次使用GPU会出现报错:

解决办法:卸载并重新安装onnxruntime

pip uninstall onnxruntime pip install onnxruntime-gpu

经测试,使用RTX2080Ti,处理一个3024*4032像素的图像,时间为5秒,使用cpu为8秒,而处理一个768*768的图像,速度几乎没有区别。

•  自定义字符集

       在初始化 CnOcr 对象时指定 vocab 参数。这样,模型只会识别 vocab 中包含的字符。

from cnocr import CnOcr # 自定义字符集,只识别数字和字母 vocab = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' ocr = CnOcr(vocab=vocab) img_path = 'custom_charset_image.jpg' res = ocr.ocr(img_path) for line in res:     print(f"文本: {line['text']}, 置信度: {line['score']}") •  使用不同的模型

        Cnocr 提供了多种预训练模型,在初始化 CnOcr 对象时通过 model_name 参数选择不同的模型,以适应不同的识别需求。

from cnocr import CnOcr # 使用 densenet_lite_136-fc 模型 ocr = CnOcr(model_name='densenet_lite_136-fc') img_path = 'image.jpg' res = ocr.ocr(img_path) for line in res:     print(f"文本: {line['text']}, 置信度: {line['score']}") •  批量识别

如果有多个图像需要进行识别,可以编写一个循环来实现批量识别。

from cnocr import CnOcr import os ocr = CnOcr() image_dir = 'image_directory'  # 包含多个图像的目录 for filename in os.listdir(image_dir):     if filename.endswith(('.png', '.jpg', '.jpeg')):         img_path = os.path.join(image_dir, filename)         res = ocr.ocr(img_path)         print(f"图像: {filename}")         for line in res:             print(f"文本: {line['text']}, 置信度: {line['score']}")         print()

•  ocr_for_single_lines()    识别多个单行文本

        与 ocr_for_single_line() 类似,不过它接受的输入是一个由多个单行文本图像数据的列表。

标签:

文字识别软件cnocr学习笔记由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“文字识别软件cnocr学习笔记