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 系列模型列表
资源
官网
- PaddleOCR 官网:https://github.com/PaddlePaddle/PaddleOCR
- PaddleOCR 中文文档:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/README_ch.md