深度学习篇---paddleocr进阶


文章目录

  • 前言
  • 一、图像预处理优化
    • 1.1作用
    • 1.2示例代码
      • 1.2.1 灰度化
      • 1.2.2 对比度增强(CLAHE)
      • 1.2.3 二值化
    • 1.4解释
      • 1.4.1灰度化
      • 1.4.2CLAHE
      • 1.4.3二值化
  • 二、调整模型参数
    • 2.1作用
    • 2.2示例代码
    • 2.3参数说明
      • rec_image_shape
      • det_db_unclip_ratio
  • 三、使用最新模型
    • 3.1作用
    • 3.1示例代码
  • 四、后处理优化
    • 4.1作用
    • 4.2示例代码
      • 4.2.1使用PaddleOCR自带字典约束
      • 4.2.2正则过滤非数字
    • 4.3技巧
      • 4.3.3自定义词典
      • 4.3.4正则表达式
  • 五、自定义训练
    • 5.1适用场景
    • 5.2步骤概要
      • 5.2.1准备数据
      • 5.2.2配置YAML
      • 5.2.3启动训练
  • 六、综合优化建议
    • 6.1多尺度识别
    • 6.2语言模型
    • 6.3GPU加速


前言

本文简单介绍了paddleocr提升识别准确率的方法以及代码实现。


一、图像预处理优化

1.1作用

作用:提升输入图像质量减少噪声、模糊、倾斜等问题对识别的影响。

1.2示例代码

示例代码:对比度增强 + 二值化

import cv2
import numpy as np
from paddleocr import PaddleOCR
# 读取图像
image = cv2.imread('text_image.jpg')

1.2.1 灰度化

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

1.2.2 对比度增强(CLAHE)

clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
enhanced = clahe.apply(gray)

1.2.3 二值化

_, binary = cv2.threshold(enhanced, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
# 保存预处理后的图像
cv2.imwrite('processed_image.jpg', binary)
# 使用PaddleOCR识别
ocr = PaddleOCR(use_angle_cls=True, lang='ch')
result = ocr.ocr('processed_image.jpg', cls=True)
print(result)

1.4解释

1.4.1灰度化

灰度化:减少颜色干扰,专注文本内容

1.4.2CLAHE

CLAHE:自适应直方图均衡化,增强局部对比度,改善光照不均

1.4.3二值化

二值化:将图像转为黑白,突出文本轮廓

二、调整模型参数

2.1作用

作用:优化模型配置以适应特定场景。

2.2示例代码

示例代码:调整识别尺寸和分类器

ocr = PaddleOCR(
    use_angle_cls=True,  # 开启方向分类器,纠正180度旋转
    rec_image_shape='3,48,320',  # 调整识别模型输入尺寸(通道,高,宽)
    det_db_unclip_ratio=2.0,  # 调整检测模型膨胀系数,处理长文本
    lang='ch'  # 指定语言(可选'en'/'ch'等)
)

result = ocr.ocr('image.jpg', cls=True)

2.3参数说明

rec_image_shape

rec_image_shape:默认3, 48, 320,可调整为3, 32, 640识别更长的文本。

det_db_unclip_ratio

det_db_unclip_ratio:检测模型控制文本框扩展范围,增大可更好检测长文本

三、使用最新模型

3.1作用

作用:PaddleOCR持续更新模型,选择更高精度版本提升效果。

3.1示例代码

示例代码:指定PP-OCRv4模型

ocr = PaddleOCR(
    det_model_dir='./ch_PP-OCRv4_det_infer/',  # 下载最新检测模型
    rec_model_dir='./ch_PP-OCRv4_rec_infer/',   # 下载最新识别模型
    cls_model_dir='./ch_ppocr_mobile_v2.0_cls_infer/',
    use_angle_cls=True
)
模型下载:
从PaddleOCR Model List获取最新模型。

四、后处理优化

4.1作用

作用:对识别结果进行校正过滤错误字符

4.2示例代码

示例代码:正则过滤与词典约束

import re

4.2.1使用PaddleOCR自带字典约束

ocr = PaddleOCR(
    lang='ch',
  rec_char_dict_path='ppocr/utils/ppocr_keys_v1.txt',  # 自定义字典路径
    use_space_char=True  # 允许识别空格
)

4.2.2正则过滤非数字

results = ocr.ocr('image.jpg')
for line in results:
    text = line[1][0]
    filtered_text = re.sub(r'[^\d]', '', text)  # 只保留数字
    print(filtered_text)

4.3技巧

4.3.3自定义词典

自定义词典:在rec_char_dict_path中按行加入专用词汇(如医学术语)。

4.3.4正则表达式

正则表达式:根据业务规则(如身份证号、车牌号)过滤非法字符

五、自定义训练

5.1适用场景

适用场景:专用场景(如古籍、手写体)需微调模型。

5.2步骤概要

5.2.1准备数据

准备数据:整理标注好的图像和标签文件(格式:img_path\tlabel)。

5.2.2配置YAML

配置YAML:修改configs/rec/your_config.yml中的数据集路径和超参。

5.2.3启动训练

python tools/train.py -c configs/rec/your_config.yml -o Global.pretrained_model=your_pretrain_model

六、综合优化建议

6.1多尺度识别

多尺度识别:对同一图像进行不同缩放,综合多个结果

6.2语言模型

语言模型:结合统计语言模型(如KenLM)校正长文本

6.3GPU加速

GPU加速:启用GPU(ocr = PaddleOCR(use_gpu=True))提升速度,允许使用更大模型

通过组合上述方法,可显著提升OCR识别准确率。建议从图像预处理和模型参数调整开始,逐步深入至自定义训练。


你可能感兴趣的:(程序代码篇,图像处理篇,深度学习篇,深度学习,人工智能,python,paddlepaddle,paddleocr)