PaddleOCR

PaddleOCR是百度开源的OCR工具库,基于PaddlePaddle,支持80+语言识别,支持服务器、移动、嵌入式和物联网设备之间的训练和部署。

简介

时间轴

安装

使用pip安装PaddlePaddle:

# 仅使用CPU运算,安装paddlepaddle
python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

# 使用GPU加速,安装paddlepaddle-gpu,需要先安装CUDA9或CUDA10
python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple

使用pip安装PaddleOCR:

pip install paddleocr

了解更多 >> PaddleOCR 文档:PaddleOCR 快速开始



安装常见错误

  • 错误1,缺少软件。
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

在Windows官网https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist,选择需要版本安装,重启计算机。检查是否安装成功,可以在cmd中查询注册表,如vc++ 14.0 x64版本

reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\X64
  • 错误2,某个软件包版本不合适。
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
paddlepaddle 2.4.2 requires protobuf<=3.20.0,>=3.1.0, but you have protobuf 3.20.3 which is incompatible.

卸载当前版本的软件,重新安装合适版本:

pip uninstall -y protobuf
pip install protobuf==3.20.0

快速开始

Python中使用

首次使用PaddleOCR,会自动下载ppocr轻量级模型作为默认模型。

from paddleocr import PaddleOCR, draw_ocr

# Paddleocr目前支持的多语言语种可以通过修改lang参数进行切换
# 例如`ch`, `en`, `fr`, `german`, `korean`, `japan`
ocr = PaddleOCR(use_angle_cls=True, lang="ch") 
img_path = './test.jpg'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    for line in res:
        print(line)

# 显示结果,存储到result.jpg
# 如果本地没有simfang.ttf,可以在doc/fonts目录下下载
from PIL import Image
result = result[0]
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='doc/fonts/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

了解更多 >> PaddleOCR文档:快速开始


PP-Structure

PP-Structure是一个OCR工具包,可以分析和处理文档结构,可以划分文字、标题、表格、图片以及列表5类区域。

在Python中的返回结果是一个列表,表示识别到一个图片的多个不同区域,如标题,表格,文字等。其中每个元素是一个字典。如下:

名称 描述
type 图片区域类型。包括text''table''header''figure'
bbox 图片区域的在原图的坐标,分别[左上角x,左上角y,右下角x,右下角y]
res 图片区域的识别结果。
表格: 返回表格的HTML字符串;
OCR: 返回一个包含各个单行文字的检测坐标和识别结果的元组
img
img_idx

了解更多 >> PaddleOCR 文档:PP-Structure 文档分析


表格识别

Python中使用示例,使用OpenCV读取图片,使用PPStructure分析识别,可以使用PPStructure保存为Excel,或使用Pandas读取生成DataFrame格式:

import cv2
from paddleocr import PPStructure
import pandas as pd

table_engine = PPStructure(show_log=True)
img = cv2.imread('table.jpg')
result = table_engine(img)  # 识别结果

df = pd.read_html(result[0]['res']['html'])[0]

了解更多 >> PaddleOCR 2.2文档:PP-Structure


模型

PP-Structure 系列模型

了解更多 >> PaddleOCR文档:PP-Structure 系列模型列表


资源

官网

网站