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 使用教程_落花逐流水的博客-CSDN博客_paddleocr

具体使用

比如有一张图片如下

PaddleOCR,图像检测识别_第1张图片

  •  检测、分类、识别全流程
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,图像检测识别_第2张图片

你可能感兴趣的:(python,测试工具,图像处理)