跳转至

文本识别模块使用教程

一、概述

文本识别模块是OCR(光学字符识别)系统中的核心部分,负责从图像中的文本区域提取出文本信息。该模块的性能直接影响到整个OCR系统的准确性和效率。文本识别模块通常接收文本检测模块输出的文本区域的边界框(Bounding Boxes)作为输入,然后通过复杂的图像处理和深度学习算法,将图像中的文本转化为可编辑和可搜索的电子文本。文本识别结果的准确性,对于后续的信息提取和数据挖掘等应用至关重要。

二、支持模型列表

模型模型下载链接 识别 Avg Accuracy(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]
CPU推理耗时(ms)
[常规模式 / 高性能模式]
模型存储大小(M) 介绍
PP-OCRv5_server_rec推理模型/训练模型 86.38 8.45/2.36 122.69/122.69 81 M PP-OCRv5_rec 是新一代文本识别模型。该模型致力于以单一模型高效、精准地支持简体中文、繁体中文、英文、日文四种主要语言,以及手写、竖版、拼音、生僻字等复杂文本场景的识别。在保持识别效果的同时,兼顾推理速度和模型鲁棒性,为各种场景下的文档理解提供高效、精准的技术支撑。
PP-OCRv5_mobile_rec推理模型/训练模型 81.29 1.46/5.43 5.32/91.79 16 M
PP-OCRv4_server_rec_doc推理模型/训练模型 86.58 6.65 / 2.38 32.92 / 32.92 181 M PP-OCRv4_server_rec_doc是在PP-OCRv4_server_rec的基础上,在更多中文文档数据和PP-OCR训练数据的混合数据训练而成,增加了部分繁体字、日文、特殊字符的识别能力,可支持识别的字符为1.5万+,除文档相关的文字识别能力提升外,也同时提升了通用文字的识别能力
PP-OCRv4_mobile_rec推理模型/训练模型 83.28 4.82 / 1.20 16.74 / 4.64 88 M PP-OCRv4的轻量级识别模型,推理效率高,可以部署在包含端侧设备的多种硬件设备中
PP-OCRv4_server_rec 推理模型/训练模型 85.19 6.58 / 2.43 33.17 / 33.17 151 M PP-OCRv4的服务器端模型,推理精度高,可以部署在多种不同的服务器上
en_PP-OCRv4_mobile_rec推理模型/训练模型 70.39 4.81 / 0.75 16.10 / 5.31 66 M 基于PP-OCRv4识别模型训练得到的超轻量英文识别模型,支持英文、数字识别

❗ 以上列出的是文本识别模块重点支持的6个核心模型,该模块总共支持20个全量模型,包含多个多语言文本识别模型,完整的模型列表如下:

👉模型列表详情 * PP-OCRv5 多场景模型
模型模型下载链接 中文识别 Avg Accuracy(%) 英文识别 Avg Accuracy(%) 繁体中文识别 Avg Accuracy(%) 日文识别 Avg Accuracy(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]
CPU推理耗时(ms)
[常规模式 / 高性能模式]
模型存储大小(M) 介绍
PP-OCRv5_server_rec推理模型/训练模型 86.38 64.70 93.29 60.35 1.46/5.43 5.32/91.79 81 M PP-OCRv5_rec 是新一代文本识别模型。该模型致力于以单一模型高效、精准地支持简体中文、繁体中文、英文、日文四种主要语言,以及手写、竖版、拼音、生僻字等复杂文本场景的识别。在保持识别效果的同时,兼顾推理速度和模型鲁棒性,为各种场景下的文档理解提供高效、精准的技术支撑。
PP-OCRv5_mobile_rec推理模型/训练模型 81.29 66.00 83.55 54.65 1.46/5.43 5.32/91.79 16 M
* 中文识别模型
模型模型下载链接 识别 Avg Accuracy(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]
CPU推理耗时(ms)
[常规模式 / 高性能模式]
模型存储大小(M) 介绍
PP-OCRv4_server_rec_doc推理模型/训练模型 86.58 6.65 / 2.38 32.92 / 32.92 181 M PP-OCRv4_server_rec_doc是在PP-OCRv4_server_rec的基础上,在更多中文文档数据和PP-OCR训练数据的混合数据训练而成,增加了部分繁体字、日文、特殊字符的识别能力,可支持识别的字符为1.5万+,除文档相关的文字识别能力提升外,也同时提升了通用文字的识别能力
PP-OCRv4_mobile_rec推理模型/训练模型 83.28 4.82 / 1.20 16.74 / 4.64 88 M PP-OCRv4的轻量级识别模型,推理效率高,可以部署在包含端侧设备的多种硬件设备中
PP-OCRv4_server_rec 推理模型/训练模型 85.19 6.58 / 2.43 33.17 / 33.17 151 M PP-OCRv4的服务器端模型,推理精度高,可以部署在多种不同的服务器上
PP-OCRv3_mobile_rec推理模型/训练模型 75.43 5.87 / 1.19 9.07 / 4.28 138 M PP-OCRv3的轻量级识别模型,推理效率高,可以部署在包含端侧设备的多种硬件设备中
模型模型下载链接 识别 Avg Accuracy(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]
CPU推理耗时(ms)
[常规模式 / 高性能模式]
模型存储大小(M) 介绍
ch_SVTRv2_rec推理模型/训练模型 68.81 8.08 / 2.74 50.17 / 42.50 126 M SVTRv2 是一种由复旦大学视觉与学习实验室(FVL)的OpenOCR团队研发的服务端文本识别模型,其在PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务中荣获一等奖,A榜端到端识别精度相比PP-OCRv4提升6%。
模型模型下载链接 识别 Avg Accuracy(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]
CPU推理耗时(ms)
[常规模式 / 高性能模式]
模型存储大小(M) 介绍
ch_RepSVTR_rec推理模型/训练模型 65.07 5.93 / 1.62 20.73 / 7.32 70 M RepSVTR 文本识别模型是一种基于SVTRv2 的移动端文本识别模型,其在PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务中荣获一等奖,B榜端到端识别精度相比PP-OCRv4提升2.5%,推理速度持平。
* 英文识别模型
模型模型下载链接 识别 Avg Accuracy(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]
CPU推理耗时(ms)
[常规模式 / 高性能模式]
模型存储大小(M) 介绍
en_PP-OCRv4_mobile_rec推理模型/训练模型 70.39 4.81 / 0.75 16.10 / 5.31 66 M 基于PP-OCRv4识别模型训练得到的超轻量英文识别模型,支持英文、数字识别
en_PP-OCRv3_mobile_rec推理模型/训练模型 70.69 5.44 / 0.75 8.65 / 5.57 85 M 基于PP-OCRv3识别模型训练得到的超轻量英文识别模型,支持英文、数字识别
* 多语言识别模型
模型模型下载链接 识别 Avg Accuracy(%) GPU推理耗时(ms)
[常规模式 / 高性能模式]
CPU推理耗时(ms)
[常规模式 / 高性能模式]
模型存储大小(M) 介绍
korean_PP-OCRv3_mobile_rec推理模型/训练模型 60.21 5.40 / 0.97 9.11 / 4.05 114 M 基于PP-OCRv3识别模型训练得到的超轻量韩文识别模型,支持韩文、数字识别
japan_PP-OCRv3_mobile_rec推理模型/训练模型 45.69 5.70 / 1.02 8.48 / 4.07 120 M 基于PP-OCRv3识别模型训练得到的超轻量日文识别模型,支持日文、数字识别
chinese_cht_PP-OCRv3_mobile_rec推理模型/训练模型 82.06 5.90 / 1.28 9.28 / 4.34 152 M 基于PP-OCRv3识别模型训练得到的超轻量繁体中文识别模型,支持繁体中文、数字识别
te_PP-OCRv3_mobile_rec推理模型/训练模型 95.88 5.42 / 0.82 8.10 / 6.91 85 M 基于PP-OCRv3识别模型训练得到的超轻量泰卢固文识别模型,支持泰卢固文、数字识别
ka_PP-OCRv3_mobile_rec推理模型/训练模型 96.96 5.25 / 0.79 9.09 / 3.86 85 M 基于PP-OCRv3识别模型训练得到的超轻量卡纳达文识别模型,支持卡纳达文、数字识别
ta_PP-OCRv3_mobile_rec推理模型/训练模型 76.83 5.23 / 0.75 10.13 / 4.30 85 M 基于PP-OCRv3识别模型训练得到的超轻量泰米尔文识别模型,支持泰米尔文、数字识别
latin_PP-OCRv3_mobile_rec推理模型/训练模型 76.93 5.20 / 0.79 8.83 / 7.15 85 M 基于PP-OCRv3识别模型训练得到的超轻量拉丁文识别模型,支持拉丁文、数字识别
arabic_PP-OCRv3_mobile_rec推理模型/训练模型 73.55 5.35 / 0.79 8.80 / 4.56 85 M 基于PP-OCRv3识别模型训练得到的超轻量阿拉伯字母识别模型,支持阿拉伯字母、数字识别
cyrillic_PP-OCRv3_mobile_rec推理模型/训练模型 94.28 5.23 / 0.76 8.89 / 3.88 85 M 基于PP-OCRv3识别模型训练得到的超轻量斯拉夫字母识别模型,支持斯拉夫字母、数字识别
devanagari_PP-OCRv3_mobile_rec推理模型/训练模型 96.44 5.22 / 0.79 8.56 / 4.06 85 M 基于PP-OCRv3识别模型训练得到的超轻量梵文字母识别模型,支持梵文字母、数字识别
测试环境说明:
模式 GPU配置 CPU配置 加速技术组合
常规模式 FP32精度 / 无TRT加速 FP32精度 / 8线程 PaddleInference
高性能模式 选择先验精度类型和加速策略的最优组合 FP32精度 / 8线程 选择先验最优后端(Paddle/OpenVINO/TRT等)

三、快速开始

❗ 在快速开始前,请先安装 PaddleOCR 的 wheel 包,详细请参考 安装教程

使用一行命令即可快速体验:

paddleocr text_recognition -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_rec_001.png

您也可以将文本识别的模块中的模型推理集成到您的项目中。运行以下代码前,请您下载示例图片到本地。

from paddleocr import TextRecognition
model = TextRecognition(model_name="PP-OCRv5_server_rec")
output = model.predict(input="general_ocr_rec_001.png", batch_size=1)
for res in output:
    res.print()
    res.save_to_img(save_path="./output/")
    res.save_to_json(save_path="./output/res.json")

运行后,得到的结果为:

{'res': {'input_path': 'general_ocr_rec_001.png', 'page_index': None, 'rec_text': '绿洲仕格维花园公寓', 'rec_score': 0.9823867082595825}}

运行结果参数含义如下: - input_path:表示输入待预测文本行图像的路径 - page_index:如果输入是PDF文件,则表示当前是PDF的第几页,否则为 None - rec_text:表示文本行图像的预测文本 - rec_score:表示文本行图像的预测置信度

可视化图片如下:

相关方法、参数等说明如下:

  • TextRecognition实例化文本识别模型(此处以PP-OCRv5_server_rec为例),具体说明如下:
参数 参数说明 参数类型 可选项 默认值
model_name 模型名称 str 所有支持的模型名称
model_dir 模型存储路径 str
device 模型推理设备 str 支持指定GPU具体卡号,如“gpu:0”,其他硬件具体卡号,如“npu:0”,CPU如“cpu”。 gpu:0
use_hpip 是否启用高性能推理插件 bool False
hpi_config 高性能推理配置 dict | None None
  • 其中,model_name 必须指定,在此基础上,指定 model_dir 时,使用用户自定义的模型。

  • 调用文本识别模型的 predict() 方法进行推理预测,该方法会返回一个结果列表。另外,本模块还提供了 predict_iter() 方法。两者在参数接受和结果返回方面是完全一致的,区别在于 predict_iter() 返回的是一个 generator,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。predict() 方法参数有 inputbatch_size,具体说明如下:

参数 参数说明 参数类型 可选项 默认值
input 待预测数据,支持多种输入类型 Python Var/str/list
  • Python变量,如numpy.ndarray表示的图像数据
  • 文件路径,如图像文件的本地路径:/root/data/img.jpg
  • URL链接,如图像文件的网络URL:示例
  • 本地目录,该目录下需包含待预测数据文件,如本地路径:/root/data/
  • 列表,列表元素需为上述类型数据,如[numpy.ndarray, numpy.ndarray]["/root/data/img1.jpg", "/root/data/img2.jpg"]["/root/data1", "/root/data2"]
batch_size 批大小 int 任意整数 1
  • 对预测结果进行处理,每个样本的预测结果均为对应的Result对象,且支持打印、保存为图片、保存为json文件的操作:
方法 方法说明 参数 参数类型 参数说明 默认值
print() 打印结果到终端 format_json bool 是否对输出内容进行使用 JSON 缩进格式化 True
indent int 指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_jsonTrue 时有效 4
ensure_ascii bool 控制是否将非 ASCII 字符转义为 Unicode。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当format_jsonTrue时有效 False
save_to_json() 将结果保存为json格式的文件 save_path str 保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致
indent int 指定缩进级别,以美化输出的 JSON 数据,使其更具可读性,仅当 format_jsonTrue 时有效 4
ensure_ascii bool 控制是否将非 ASCII 字符转义为 Unicode。设置为 True 时,所有非 ASCII 字符将被转义;False 则保留原始字符,仅当format_jsonTrue时有效 False
save_to_img() 将结果保存为图像格式的文件 save_path str 保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致
  • 此外,也支持通过属性获取带结果的可视化图像和预测结果,具体如下:
属性 属性说明
json 获取预测的json格式的结果
img 获取格式为dict的可视化图像

四、二次开发

如果以上模型在您的场景上效果仍然不理想,您可以尝试以下步骤进行二次开发,此处以训练 PP-OCRv5_server_rec 举例,其他模型替换对应配置文件即可。首先,您需要准备文本识别的数据集,可以参考文本识别 Demo 数据的格式准备,准备好后,即可按照以下步骤进行模型训练和导出,导出后,可以将模型快速集成到上述 API 中。此处以文本识别 Demo 数据示例。在训练模型之前,请确保已经按照安装文档安装了 PaddleOCR 所需要的依赖。

4.1 数据集、预训练模型准备

4.1.1 准备数据集

# 下载示例数据集
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/data/ocr_rec_dataset_examples.tar
tar -xf ocr_rec_dataset_examples.tar

4.1.2 下载预训练模型

# 下载 PP-OCRv5_server_rec 预训练模型
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/official_pretrained_model/PP-OCRv5_server_rec_pretrained.pdparams 

4.2 模型训练

PaddleOCR 对代码进行了模块化,训练 PP-OCRv5_server_rec 识别模型时需要使用 PP-OCRv5_server_rec配置文件

训练命令如下:

#单卡训练 (默认训练方式)
python3 tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml \
   -o Global.pretrained_model=./PP-OCRv5_server_rec_pretrained.pdparams

#多卡训练,通过--gpus参数指定卡号
python3 -m paddle.distributed.launch --gpus '0,1,2,3'  tools/train.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml \
        -o Global.pretrained_model=./PP-OCRv5_server_rec_pretrained.pdparams

4.3 模型评估

您可以评估已经训练好的权重,如,output/xxx/xxx.pdparams,使用如下命令进行评估:

#注意将pretrained_model的路径设置为本地路径。若使用自行训练保存的模型,请注意修改路径和文件名为{path/to/weights}/{model_name}。
#demo 测试集评估
python3 tools/eval.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \
Global.pretrained_model=output/xxx/xxx.pdparams

4.4 模型导出

python3 tools/export_model.py -c configs/rec/PP-OCRv5/PP-OCRv5_server_rec.yml -o \
Global.pretrained_model=output/xxx/xxx.pdparams \
Global.save_inference_dir="./PP-OCRv5_server_rec_infer/"

导出模型后,静态图模型会存放于当前目录的./PP-OCRv5_server_rec_infer/中,在该目录下,您将看到如下文件:

./PP-OCRv5_server_rec_infer/
├── inference.json
├── inference.pdiparams
├── inference.yml
至此,二次开发完成,该静态图模型可以直接集成到 PaddleOCR 的 API 中。

五、FAQ

评论