深度学习篇---PaddleOCR


文章目录

  • 前言
  • [1. 安装与环境配置](#1. 安装与环境配置)
  • [2. 基本用法](#2. 基本用法)
    • [(1) 单张图片的文本检测与识别](#(1) 单张图片的文本检测与识别)
    • [(2) 批量图片处理](#(2) 批量图片处理)
  • [3. 多语言支持](#3. 多语言支持)
  • [4. 高级功能](#4. 高级功能)
    • [(1) 方向分类(处理旋转文本)](#(1) 方向分类(处理旋转文本))
    • [(2) 版面分析(识别文档结构)](#(2) 版面分析(识别文档结构))
    • [(3) 表格识别](#(3) 表格识别)
  • [5. 参数调优](#5. 参数调优)
    • [(1) 调整检测与识别阈值](#(1) 调整检测与识别阈值)
    • [(2) 使用轻量级模型](#(2) 使用轻量级模型)
  • [6. 自定义模型训练](#6. 自定义模型训练)
    • [(1) 准备数据集](#(1) 准备数据集)
    • [(2) 启动训练](#(2) 启动训练)
  • [7. 常见问题](#7. 常见问题)
    • [(1) 模型下载失败](#(1) 模型下载失败)
    • [(2) 处理GPU内存不足](#(2) 处理GPU内存不足)
  • [8. 总结](#8. 总结)

前言

本文简单介绍一下PaddleOCR这款百度旗下的PaddlePaddle框架下的文本识别工具包。


1. 安装与环境配置

(1)安装PaddlePaddle

python 复制代码
#安装PaddlePaddle(GPU版本需根据CUDA版本调整)
pip install paddlepaddle

(2)安装PaddleOCR

python 复制代码
#安装PaddleOCR
pip install paddleocr

2. 基本用法

(1) 单张图片的文本检测与识别

python 复制代码
from paddleocr import PaddleOCR
#初始化OCR模型(默认使用中英文模型)
ocr = PaddleOCR(use_angle_cls=True, lang='ch')  # `lang`可选:ch, en, fr, german等


#读取图片并识别
img_path = 'test.jpg'
result = ocr.ocr(img_path, cls=True)  # cls=True表示启用方向分类

#打印结果
for line in result:
    print(line)

#可视化结果
from PIL import Image
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]
Image.fromarray(ocr.draw_ocr(image, boxes, txts, scores)).show()

(2) 批量图片处理

python 复制代码
import os

image_dir = 'images/'
results = []
for img_name in os.listdir(image_dir):
    img_path = os.path.join(image_dir, img_name)
    result = ocr.ocr(img_path, cls=True)
    results.append((img_name, result))

3. 多语言支持

支持80+语言 ,通过lang参数指定:

(1)英文识别

python 复制代码
ocr_en = PaddleOCR(lang='en')
result_en = ocr_en.ocr('en_test.jpg')

(2)法语识别

python 复制代码
ocr_fr = PaddleOCR(lang='fr')
result_fr = ocr_fr.ocr('fr_test.jpg')

4. 高级功能

(1) 方向分类(处理旋转文本)

python 复制代码
ocr = PaddleOCR(use_angle_cls=True, lang='ch')  # 默认启用方向分类
result = ocr.ocr('rotated_text.jpg', cls=True)

(2) 版面分析(识别文档结构)

python 复制代码
from paddleocr import PPStructure

#初始化版面分析模型
structure_engine = PPStructure(table=False, ocr=False, show_log=True)

#分析图片版面
img_path = 'document.jpg'
result = structure_engine(img_path)

#输出结果(标题、段落、表格等)
for region in result:
    print(region['type'], region['bbox'], region['res'])

(3) 表格识别

python 复制代码
from paddleocr import PaddleOCR

ocr = PaddleOCR(use_angle_cls=True, lang='ch', table=True)  # 启用表格识别
result = ocr.ocr('table.jpg', cls=True)

5. 参数调优

(1) 调整检测与识别阈值

python 复制代码
ocr = PaddleOCR(
    det_db_thresh=0.3,  # 检测模型阈值(默认0.3)
    det_db_box_thresh=0.5,  # 检测框阈值(默认0.5)
    rec_thresh=0.7  # 识别置信度阈值(默认0.7)
)

(2) 使用轻量级模型

python 复制代码
#使用轻量级检测模型(速度更快,精度稍低)
ocr = PaddleOCR(
    det_model_dir='ch_ppocr_mobile_v2.0_det_infer',
    rec_model_dir='ch_ppocr_mobile_v2.0_rec_infer',
    cls_model_dir='ch_ppocr_mobile_v2.0_cls_infer'
)

6. 自定义模型训练

(1) 准备数据集

数据集需按以下格式组织:

bash 复制代码
dataset/
├── train/
│   ├── images/
│   └── label.txt  # 格式:img_path\tlabel
└── val/
    ├── images/
    └── label.txt

(2) 启动训练

bash 复制代码
#文本检测训练
python tools/train.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml

#文本识别训练
python tools/train.py -c configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml

7. 常见问题

(1) 模型下载失败

python 复制代码
手动下载模型并指定路径:
ocr = PaddleOCR(
    det_model_dir='path/to/det_model',
    rec_model_dir='path/to/rec_model',
    cls_model_dir='path/to/cls_model'
)

(2) 处理GPU内存不足

python 复制代码
降低批处理大小:
ocr = PaddleOCR(use_gpu=True, rec_batch_num=2, det_batch_num=2)

8. 总结

(1)核心功能

核心功能:文本检测、识别、多语言支持、版面分析、表格识别。

(2)优势

优势:开箱即用、多语言覆盖、轻量级模型、社区活跃。

(3)适用场景

适用场景:文档数字化、车牌识别、票据处理、多语言翻译等。

(4)官方资源

GitHub: PaddleOCR

文档: PaddleOCR Docs

通过灵活调整参数和结合业务需求,PaddleOCR可广泛应用于各类OCR场景。


相关推荐
Raink老师17 小时前
【AI面试临阵磨枪-79】实时数据 RAG:订单、商家、物流、天气、动态库存
人工智能·面试·职场和发展
脑极体17 小时前
点亮星河AI+鸿蒙,一座艺术场馆的日神觉醒
人工智能·华为·harmonyos
Cosolar18 小时前
Chroma向量库面试学习指南
数据库·人工智能·面试·职场和发展·数据库架构
BUG指挥官18 小时前
Claude Code的自动化编程
人工智能
意图共鸣18 小时前
意图共鸣科技《认知智能白皮书》——感知与执行分离:认知架构(CA)如何重塑大模型底层结构
人工智能·架构
等一个人的@18 小时前
让数据自己开口:数睿通智库新增智能问数模块
人工智能·自然语言处理
ZGi.ai18 小时前
人工审查节点:让自动化工作流多一步人工把关
运维·人工智能·自动化·人机协同·智能体工作流·人工审查
风吹夏回18 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
王莎莎-MinerU19 小时前
MinerU 深度技术解析:从架构原理到生产部署的全面指南
css·人工智能·自然语言处理·架构·ocr·个人开发
盘古信息IMS19 小时前
盘古信息IMS V6 8.0重磅发布:以薪火AI数智平台点燃离散制造数智化引擎
大数据·人工智能·制造