PaddleOCR,图像检测识别

简介

        OCR(optical character recognition)文字识别是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,然后用字符识别方法将形状翻译成计算机文字的过程;即,对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。

安装教程

https://github.com/PaddlePaddle/PaddleOCR/blob/static/doc/doc_ch/installation.mdhttps://github.com/PaddlePaddle/PaddleOCR/blob/static/doc/doc_ch/installation.md

框架结构

1、configs文件夹

这个文件夹下是方向分类、文本检测、文字识别的配置文件。配置文件中描述的内容包括如何训练、模型结构、优化器、训练参数、训练数据来源等。

2、deploy文件夹
这个文件夹主要是部署相关内容,也是最后需要学习的地方,暂时可以略过。

3、doc文件夹
这个文件夹包括一些测试图片。还有一个很重要的PP-OCR论文。

4、inference文件夹
这个文件夹下放着3个模型,分别是方向分类模型、文本检测模型、文本识别模型。

5、inference_results文件夹
这个文件夹是运行脚本后生成的目录,里面存放的是结果标注显示图片。

6、ppocr文件夹
这个文件夹是ppocr的主干,具体内容如下:

data:数据加载、数据扩充。

losses:分类、检测、识别模型的损失函数。

metrics:

modeling:模型组建,包含:模型结构、backbone、heads、necks、transforms。

optimizer:学习率、学习策略、优化器、正则化。

postprocess:后处理。

utils:实用工具。

7、PPOCRLabel文件夹
标注工具文件夹,等用的时候再详细笔记。

8、StyleText文件夹
风格迁移文件夹用于生成样本数据,扩充训练样本。

9、Tools文件夹
包括训练、推理、评估的python脚本。可以通在根目录下写shell文件直接调用。

本小节转自:paddleocr 使用教程_落花逐流水的博客-优快云博客_paddleocr

具体使用

比如有一张图片如下

  •  检测、分类、识别全流程
from paddleocr import PaddleOCR, draw_ocr
from PIL import Image


# Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换
# 参数依次为`ch`, `en`, `french`, `german`, `korean`, `japan`。
ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory
img_path = 'E:\\PaddleOCR-static\\doc\\imgs\\6.jpg'
result = ocr.ocr(img_path, cls=True)
for line in result:
    print(line)

# 显示结果
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in line]
print(boxes)
txts = [line[1][0] for line in line]
print(txts)
scores = [line[1][1] for line in line]
print(scores)
im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')
  • line的结构是一个list,每个item包含文本框,文字和识别置信度
[[[[614.0, 51.0], [753.0, 51.0], [753.0, 159.0], [614.0, 159.0]], ('38', 0.9994012117385864)], [[[640.0, 163.0], [729.0, 163.0], [729.0, 204.0], [640.0, 204.0]], ('包邮', 0.8606153130531311)], [[[349.0, 415.0], [433.0, 415.0], [433.0, 448.0], [349.0, 448.0]], ('OlAY', 0.7505984306335449)], [[[339.0, 449.0], [445.0, 449.0], [445.0, 484.0], [339.0, 484.0]], ('玉兰油', 0.9756715297698975)], [[[325.0, 486.0], [462.0, 486.0], [462.0, 503.0], [325.0, 503.0]], ('NaturalWhite', 0.927595317363739)], [[[341.0, 505.0], [446.0, 504.0], [446.0, 522.0], [341.0, 523.0]], ('白里透红系列', 0.9458746314048767)], [[[289.0, 526.0], [495.0, 523.0], [495.0, 547.0], [289.0, 550.0]], ('日间润白 SPF24/PA++', 0.9534435868263245)], [[[329.0, 554.0], [454.0, 553.0], [454.0, 571.0], [329.0, 572.0]], ('水养防晒美白霜', 0.9256204962730408)], [[[11.0, 710.0], [315.0, 715.0], [314.0, 781.0], [10.0, 776.0]], ('专柜正品', 0.9986205697059631)], [[[437.0, 716.0], [747.0, 716.0], [747.0, 785.0], [437.0, 785.0]], ('假一赔十', 0.9869048595428467)]]
  • boxes是文本框,即文本的矩形
[[[614.0, 51.0], [753.0, 51.0], [753.0, 159.0], [614.0, 159.0]], [[640.0, 163.0], [729.0, 163.0], [729.0, 204.0], [640.0, 204.0]], [[349.0, 415.0], [433.0, 415.0], [433.0, 448.0], [349.0, 448.0]], [[339.0, 449.0], [445.0, 449.0], [445.0, 484.0], [339.0, 484.0]], [[325.0, 486.0], [462.0, 486.0], [462.0, 503.0], [325.0, 503.0]], [[341.0, 505.0], [446.0, 504.0], [446.0, 522.0], [341.0, 523.0]], [[289.0, 526.0], [495.0, 523.0], [495.0, 547.0], [289.0, 550.0]], [[329.0, 554.0], [454.0, 553.0], [454.0, 571.0], [329.0, 572.0]], [[11.0, 710.0], [315.0, 715.0], [314.0, 781.0], [10.0, 776.0]], [[437.0, 716.0], [747.0, 716.0], [747.0, 785.0], [437.0, 785.0]]]
  • txts是识别出来的信息
['38', '包邮', 'OlAY', '玉兰油', 'NaturalWhite', '白里透红系列', '日间润白 SPF24/PA++', '水养防晒美白霜', '专柜正品', '假一赔十']
  • scores是识别置信度
[0.9994012117385864, 0.8606153130531311, 0.7505984306335449, 0.9756715297698975, 0.927595317363739, 0.9458746314048767, 0.9534435868263245, 0.9256204962730408, 0.9986205697059631, 0.9869048595428467]
  • 结果可视化展示

### PaddleOCR 的文本检测识别功能 PaddleOCR 是百度飞桨推出的一款开源 OCR 工具,支持多种语言的文本检测识别。以下是关于其使用教程以及示例代码。 #### 安装依赖库 为了使用 PaddleOCR 进行文本检测识别,首先需要安装必要的依赖库。可以通过以下命令完成环境配置[^4]: ```bash pip install paddleocr pip install paddlepaddle ``` #### 初始化 PaddleOCR 对象 在实际应用中,可以初始化 `PaddleOCR` 类来设置参数。例如,启用角度分类器 (`use_angle_cls`) 并指定目标语言为中文 (`lang='ch'`) 可通过如下方式实现[^2]: ```python from paddleocr import PaddleOCR # 初始化 PaddleOCR 实例 ocr = PaddleOCR(use_angle_cls=True, lang='ch') ``` #### 示例代码:执行文本检测识别 下面是一个完整的示例代码,用于加载图片文件并提取其中的文本内容[^1]: ```python from PIL import Image import matplotlib.pyplot as plt from paddleocr import PaddleOCR # 初始化 PaddleOCR ocr = PaddleOCR(use_angle_cls=True, lang='ch') # 加载图像 image_path = 'example.jpg' result = ocr.ocr(image_path, cls=True) # 显示结果 for line in result: print(line) # 绘制检测框 (可选) image = Image.open(image_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] plt.figure(figsize=(10, 10)) ax = plt.gca() image_plot = plt.imshow(image) for box, txt in zip(boxes, txts): poly = np.array(box).reshape((-1, 1, 2)).astype(np.int32) ax.add_patch(plt.Polygon(poly.reshape((-1, 2)), color="red", fill=False, linewidth=2)) plt.show() ``` 上述代码实现了以下几个主要步骤: - **加载模型**:创建了一个 `PaddleOCR` 实例。 - **读取图片**:调用了 `.ocr()` 方法处理输入图片。 - **解析结果**:打印每条检测到的文本及其位置坐标。 - **可视化**:绘制了检测框以便直观查看效果。 #### 效果展示 运行以上代码后,程序会返回一系列包含文本区域的位置信息和对应的字符内容。这些数据可用于进一步分析或存储。如果希望提高性能或者自定义行为,则可以根据具体需求调整参数设置[^3]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值