Python OCR 文字检测使用模型:读光-文字检测-DBNet行检测模型-中英-通用领域

时间:2024-06-02 20:37:13

介绍

什么是OCR?

OCR是“Optical Character Recognition”的缩写,中文意为“光学字符识别”。它是一种技术,可以识别和转换打印在纸张或图像上的文字和字符为机器可处理的格式,如计算机文本文件。通过使用OCR技术,可以快速地将纸质文档数字化,从而使文本可以被编辑、搜索和分析。这项技术广泛应用于各种场合,如图书馆和档案馆的文献数字化、 pdf 文件的文本搜索、以及扫描文档中的条形码和二维码等。

阿里云文字识别OCR(读光OCR)

阿里云文字识别OCR(读光OCR),是一款由阿里巴巴达摩院打造的OCR产品,用于识别图片、文档、卡证等文件所包含的文字信息。

行检测模型

行检测模型(Row Detection Model)是一种用于识别图像中垂直方向上排列的文本行的算法模型。在光学字符识别(OCR)领域,行检测是预处理阶段的一个重要步骤,它旨在从图像中提取出文本行,以便后续可以对每一行进行字符分割和字符识别。

行检测模型通常需要处理以下几个问题:

文本行定位、文本行分割、文本行校正、噪声消除。

我们这里使用的是 “阿里云文字识别OCR(读光OCR)” 的模型放到本地来进行识别测试。

前置条件

1、准备电脑环境(我当前用的是 4060 显卡)
2、安装环境(conda、python)
3、下载模型(通过下方链接地址下载模型)

https://www.modelscope.cn/models/iic/cv_resnet18_ocr-detection-db-line-level_damo/summary

在这里插入图片描述
在这里插入图片描述

克隆下来后。

在这里插入图片描述

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
ocr_detection = pipeline(Tasks.ocr_detection, model='damo/cv_resnet18_ocr-detection-db-line-level_damo')
result = ocr_detection('input_image.png')
print(result)
  1. from modelscope.pipelines import pipeline
    这行代码从modelscope.pipelines模块导入了pipeline函数。pipeline函数是ModelScope提供的一个高级API,它可以用来组合和运行预训练模型,实现各种机器学习任务,如OCR检测。
  2. from modelscope.utils.constant import Tasks
    这行代码从modelscope.utils.constant模块导入了Tasks常量。Tasks是一个预定义的常量,它包含了ModelScope支持的各种任务类型,例如图像分类、文本分类、机器翻译等。通过导入Tasks,可以方便地访问这些任务类型。
  3. ocr_detection = pipeline(Tasks.ocr_detection, model='damo/cv_resnet18_ocr-detection-db-line-level_damo')
    这行代码创建了一个OCR检测的管道。pipeline函数接收两个参数:任务类型和模型名称。在这里,任务类型是Tasks.ocr_detection,表示执行OCR检测任务;模型名称是'damo/cv_resnet18_ocr-detection-db-line-level_damo',这是一个特定的OCR检测模型,由阿里巴巴的达摩院提供。
  4. result = ocr_detection('input_image.png')
    这行代码通过之前创建的OCR检测管道处理一个名为'input_image.png'的图片文件。处理的结果存储在result变量中,这个变量通常包含检测到的文本信息和其他相关数据。
  5. print(result)
    这行代码打印出result变量的内容。这通常用于调试和验证OCR检测的结果。输出会显示图片中检测到的文本行,以及可能的额外信息,如文本行的位置、置信度等。

运行结果:

在这里插入图片描述

常见问题。

缺少包:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述