---
comments: true
---
# PP-DocTranslation 产线使用教程
## 1. PP-DocTranslation 产线介绍
PP-DocTranslation 是飞桨提供的文档智能翻译解决方案,融合了先进的通用版面解析技术与大语言模型(LLM)能力,为您提供高效的文档智能翻译服务。该解决方案能够精准识别并提取文档中的各类元素,包括文本块、标题、段落、图片、表格及其他复杂版面结构,并在此基础之上实现高质量的多语种互译。PP-DocTranslation 支持多种主流语言间的相互翻译,尤其擅长处理排版复杂、上下文依赖性强的文档场景,力求输出精准自然、流畅专业的翻译结果。本产线同时提供了灵活的服务化部署方式,支持在多种硬件上使用多种编程语言调用。不仅如此,本产线也提供了二次开发的能力,您可以基于本产线在您自己的数据集上训练调优,训练后的模型也可以无缝集成。
PP-DocTranslation 产线中使用了 PP-StructureV3 子产线,因此具有 PP-StructureV3 产线的所有功能,更多关于 PP-StructureV3 产线的功能介绍和使用细节,可以点击 [PP-StructureV3 产线文档](./PP-StructureV3.md) 页面查看。
在本产线中,您可以根据下方的基准测试数据选择使用的模型。
文档图像方向分类模块: 文本图像矫正模块: 版面区域检测模块模型: 表格结构识别模块: 表格分类模块模型: 表格单元格检测模块模型: 文本检测模块: 文本识别模块模型: 文本行方向分类模块(可选): 公式识别模块: 印章文本检测模块: 对于服务提供的主要操作: 服务提供的主要操作如下: 使用计算机视觉模型对图像进行分析,获得OCR、表格识别结果等。 利用大模型翻译文档。 👉模型列表详情
模型 模型下载链接
Top-1 Acc(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(M)
介绍
PP-LCNet_x1_0_doc_ori
推理模型/训练模型
99.06
2.62 / 0.59
3.24 / 1.19
7
基于PP-LCNet_x1_0的文档图像分类模型,含有四个类别,即0度,90度,180度,270度
模型 模型下载链接
CER
模型存储大小(M)
介绍
UVDoc
推理模型/训练模型
0.179
30.3
高精度文本图像矫正模型
模型 模型下载链接
mAP(0.5)(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(M)
介绍
PP-DocLayout_plus-L
推理模型/训练模型
83.2
53.03 / 17.23
634.62 / 378.32
126.01
基于RT-DETR-L在包含中英文论文、多栏杂志、报纸、PPT、合同、书本、试卷、研报、古籍、日文文档、竖版文字文档等场景的自建数据集训练的更高精度版面区域定位模型
PP-DocLayout-L
推理模型/训练模型
90.4
33.59 / 33.59
503.01 / 251.08
123.76
基于RT-DETR-L在包含中英文论文、杂志、合同、书本、试卷和研报等场景的自建数据集训练的高精度版面区域定位模型
PP-DocLayout-M
推理模型/训练模型
75.2
13.03 / 4.72
43.39 / 24.44
22.578
基于PicoDet-L在包含中英文论文、杂志、合同、书本、试卷和研报等场景的自建数据集训练的精度效率平衡的版面区域定位模型
PP-DocLayout-S
推理模型/训练模型
70.9
11.54 / 3.86
18.53 / 6.29
4.834
基于PicoDet-S在中英文论文、杂志、合同、书本、试卷和研报等场景上自建数据集训练的高效率版面区域定位模型
模型 模型下载链接
精度(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小 (M)
介绍
SLANeXt_wired
推理模型/训练模型
69.65
85.92 / 85.92
- / 501.66
351M
SLANeXt 系列是百度飞桨视觉团队自研的新一代表格结构识别模型。相较于 SLANet 和 SLANet_plus,SLANeXt 专注于对表格结构进行识别,并且对有线表格(wired)和无线表格(wireless)的识别分别训练了专用的权重,对各类型表格的识别能力都得到了明显提高,特别是对有线表格的识别能力得到了大幅提升。
SLANeXt_wireless
推理模型/训练模型
模型 模型下载链接
Top1 Acc(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小 (M)
PP-LCNet_x1_0_table_cls
推理模型/训练模型
94.2
2.62 / 0.60
3.17 / 1.14
6.6M
模型 模型下载链接
mAP(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小 (M)
介绍
RT-DETR-L_wired_table_cell_det
推理模型/训练模型
82.7
33.47 / 27.02
402.55 / 256.56
124M
RT-DETR 是第一个实时的端到端目标检测模型。百度飞桨视觉团队基于 RT-DETR-L 作为基础模型,在自建表格单元格检测数据集上完成预训练,实现了对有线表格、无线表格均有较好性能的表格单元格检测。
RT-DETR-L_wireless_table_cell_det
推理模型/训练模型
模型 模型下载链接
检测Hmean(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(M)
介绍
PP-OCRv5_server_det
推理模型/训练模型
83.8
89.55 / 70.19
383.15 / 383.15
84.3
PP-OCRv5 的服务端文本检测模型,精度更高,适合在性能较好的服务器上部署
PP-OCRv5_mobile_det
推理模型/训练模型
79.0
10.67 / 6.36
57.77 / 28.15
4.7
PP-OCRv5 的移动端文本检测模型,效率更高,适合在端侧设备部署
PP-OCRv4_server_det
推理模型/训练模型
69.2
127.82 / 98.87
585.95 / 489.77
109
PP-OCRv4 的服务端文本检测模型,精度更高,适合在性能较好的服务器上部署
PP-OCRv4_mobile_det
推理模型/训练模型
63.8
9.87 / 4.17
56.60 / 20.79
4.7
PP-OCRv4 的移动端文本检测模型,效率更高,适合在端侧设备部署
PP-OCRv3_mobile_det
推理模型/训练模型
精度接近 PP-OCRv4_mobile_det
9.90 / 3.60
41.93 / 20.76
2.1
PP-OCRv3 的移动端文本检测模型,效率更高,适合在端侧设备部署
PP-OCRv3_server_det
推理模型/训练模型
精度接近 PP-OCRv4_server_det
119.50 / 75.00
379.35 / 318.35
102.1
PP-OCRv3 的服务端文本检测模型,精度更高,适合在性能较好的服务器上部署
模型 模型下载链接
识别 Avg Accuracy(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(M)
介绍
PP-OCRv5_server_rec
推理模型/训练模型
86.38
8.46 / 2.36
31.21 / 31.21
81
PP-OCRv5_rec 是新一代文本识别模型。该模型致力于以单一模型高效、精准地支持简体中文、繁体中文、英文、日文四种主要语言,以及手写、竖版、拼音、生僻字等复杂文本场景的识别。在保持识别效果的同时,兼顾推理速度和模型鲁棒性,为各种场景下的文档理解提供高效、精准的技术支撑。
PP-OCRv5_mobile_rec
推理模型/训练模型
81.29
5.43 / 1.46
21.20 / 5.32
16
PP-OCRv4_server_rec_doc
推理模型/训练模型
86.58
8.69 / 2.78
37.93 / 37.93
74.7
PP-OCRv4_server_rec_doc是在PP-OCRv4_server_rec的基础上,在更多中文文档数据和PP-OCR训练数据的混合数据训练而成,增加了部分繁体字、日文、特殊字符的识别能力,可支持识别的字符为1.5万+,除文档相关的文字识别能力提升外,也同时提升了通用文字的识别能力
PP-OCRv4_mobile_rec
推理模型/训练模型
78.74
5.26 / 1.12
17.48 / 3.61
10.6
PP-OCRv4的轻量级识别模型,推理效率高,可以部署在包含端侧设备的多种硬件设备中
PP-OCRv4_server_rec
推理模型/训练模型
80.61
8.75 / 2.49
36.93 / 36.93
71.2
PP-OCRv4的服务器端模型,推理精度高,可以部署在多种不同的服务器上
PP-OCRv3_mobile_rec
推理模型/训练模型
72.96
3.89 / 1.16
8.72 / 3.56
9.2
PP-OCRv3的轻量级识别模型,推理效率高,可以部署在包含端侧设备的多种硬件设备中
模型 模型下载链接
识别 Avg Accuracy(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(M)
介绍
ch_SVTRv2_rec
推理模型/训练模型
68.81
10.38 / 8.31
66.52 / 30.83
73.9
SVTRv2 是一种由复旦大学视觉与学习实验室(FVL)的OpenOCR团队研发的服务端文本识别模型,其在PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务中荣获一等奖,A榜端到端识别精度相比PP-OCRv4提升6%。
* 英文识别模型
模型 模型下载链接
识别 Avg Accuracy(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(M)
介绍
ch_RepSVTR_rec
推理模型/训练模型
65.07
6.29 / 1.57
20.64 / 5.40
22.1
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 / 1.23
17.20 / 4.18
6.8
基于PP-OCRv4识别模型训练得到的超轻量英文识别模型,支持英文、数字识别
en_PP-OCRv3_mobile_rec
推理模型/训练模型
70.69
3.56 / 0.78
8.44 / 5.78
7.8 M
基于PP-OCRv3识别模型训练得到的超轻量英文识别模型,支持英文、数字识别
模型 模型下载链接
识别 Avg Accuracy(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(M)
介绍
korean_PP-OCRv3_mobile_rec
推理模型/训练模型
60.21
3.73 / 0.98
8.76 / 2.91
8.6
基于PP-OCRv3识别模型训练得到的超轻量韩文识别模型,支持韩文、数字识别
japan_PP-OCRv3_mobile_rec
推理模型/训练模型
45.69
3.86 / 1.01
8.62 / 2.92
8.8 M
基于PP-OCRv3识别模型训练得到的超轻量日文识别模型,支持日文、数字识别
chinese_cht_PP-OCRv3_mobile_rec
推理模型/训练模型
82.06
3.90 / 1.16
9.24 / 3.18
9.7 M
基于PP-OCRv3识别模型训练得到的超轻量繁体中文识别模型,支持繁体中文、数字识别
te_PP-OCRv3_mobile_rec
推理模型/训练模型
95.88
3.59 / 0.81
8.28 / 6.21
7.8 M
基于PP-OCRv3识别模型训练得到的超轻量泰卢固文识别模型,支持泰卢固文、数字识别
ka_PP-OCRv3_mobile_rec
推理模型/训练模型
96.96
3.49 / 0.89
8.63 / 2.77
8.0 M
基于PP-OCRv3识别模型训练得到的超轻量卡纳达文识别模型,支持卡纳达文、数字识别
ta_PP-OCRv3_mobile_rec
推理模型/训练模型
76.83
3.49 / 0.86
8.35 / 3.41
8.0 M
基于PP-OCRv3识别模型训练得到的超轻量泰米尔文识别模型,支持泰米尔文、数字识别
latin_PP-OCRv3_mobile_rec
推理模型/训练模型
76.93
3.53 / 0.78
8.50 / 6.83
7.8
基于PP-OCRv3识别模型训练得到的超轻量拉丁文识别模型,支持拉丁文、数字识别
arabic_PP-OCRv3_mobile_rec
推理模型/训练模型
73.55
3.60 / 0.83
8.44 / 4.69
7.8
基于PP-OCRv3识别模型训练得到的超轻量阿拉伯字母识别模型,支持阿拉伯字母、数字识别
cyrillic_PP-OCRv3_mobile_rec
推理模型/训练模型
94.28
3.56 / 0.79
8.22 / 2.76
7.9 M
基于PP-OCRv3识别模型训练得到的超轻量斯拉夫字母识别模型,支持斯拉夫字母、数字识别
devanagari_PP-OCRv3_mobile_rec
推理模型/训练模型
96.44
3.60 / 0.78
6.95 / 2.87
7.9
基于PP-OCRv3识别模型训练得到的超轻量梵文字母识别模型,支持梵文字母、数字识别
模型
模型下载链接
Top-1 Acc(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(M)
介绍
PP-LCNet_x0_25_textline_ori
推理模型/训练模型
95.54
2.16 / 0.41
2.37 / 0.73
0.32
基于PP-LCNet_x0_25的文本行分类模型,含有两个类别,即0度,180度
模型 模型下载链接
Avg-BLEU(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小 (M)
介绍
UniMERNet
推理模型/训练模型
86.13
2266.96/-
-/-
1.4 G
UniMERNet是由上海AI Lab研发的一款公式识别模型。该模型采用Donut Swin作为编码器,MBartDecoder作为解码器,并通过在包含简单公式、复杂公式、扫描捕捉公式和手写公式在内的一百万数据集上进行训练,大幅提升了模型对真实场景公式的识别准确率
PP-FormulaNet-S
推理模型/训练模型
87.12
1311.84 / 1311.84
- / 8288.07
167.9
PP-FormulaNet 是由百度飞桨视觉团队开发的一款先进的公式识别模型,支持5万个常见LateX源码词汇的识别。PP-FormulaNet-S 版本采用了 PP-HGNetV2-B4 作为其骨干网络,通过并行掩码和模型蒸馏等技术,大幅提升了模型的推理速度,同时保持了较高的识别精度,适用于简单印刷公式、跨行简单印刷公式等场景。而 PP-FormulaNet-L 版本则基于 Vary_VIT_B 作为骨干网络,并在大规模公式数据集上进行了深入训练,在复杂公式的识别方面,相较于PP-FormulaNet-S表现出显著的提升,适用于简单印刷公式、复杂印刷公式、手写公式等场景。
PP-FormulaNet-L
推理模型/训练模型
92.13
1976.52/-
-/-
535.2
LaTeX_OCR_rec
推理模型/训练模型
71.63
1088.89 / 1088.89
- / -
89.7
LaTeX-OCR是一种基于自回归大模型的公式识别算法,通过采用 Hybrid ViT 作为骨干网络,transformer作为解码器,显著提升了公式识别的准确性。
测试环境说明:
模型 模型下载链接
检测Hmean(%)
GPU推理耗时(ms)
[常规模式 / 高性能模式]CPU推理耗时(ms)
[常规模式 / 高性能模式]模型存储大小(M)
介绍
PP-OCRv4_server_seal_det
推理模型/训练模型
98.21
124.64 / 91.57
545.68 / 439.86
109
PP-OCRv4的服务端印章文本检测模型,精度更高,适合在较好的服务器上部署
PP-OCRv4_mobile_seal_det
推理模型/训练模型
96.47
9.70 / 3.56
50.38 / 19.64
4.6
PP-OCRv4的移动端印章文本检测模型,效率更高,适合在端侧部署
模式
GPU配置
CPU配置
加速技术组合
常规模式
FP32精度 / 无TRT加速
FP32精度 / 8线程
PaddleInference
高性能模式
选择先验精度类型和加速策略的最优组合
FP32精度 / 8线程
选择先验最优后端(Paddle/OpenVINO/TRT等)
命令行支持更多参数设置,点击展开以查看命令行参数的详细说明
参数
参数说明
参数类型
默认值
input
待预测数据,必填。如图像文件或者PDF文件的本地路径:
/root/data/img.jpg
;如URL链接,如图像文件或PDF文件的网络URL:示例;如本地目录,该目录下需包含待预测图像,如本地路径:/root/data/
(当前不支持目录中包含PDF文件的预测,PDF文件需要指定到具体文件路径)。
str
save_path
指定推理结果文件保存的路径。如果不设置,推理结果将不会保存到本地。
str
target_language
目标语言(ISO 639-1 语言代码)。
str
zh
layout_detection_model_name
版面区域检测的模型名称。如果不设置,将会使用产线默认模型。
str
layout_detection_model_dir
版面区域检测模型的目录路径。如果不设置,将会下载官方模型。
str
layout_threshold
版面模型得分阈值。
0-1
之间的任意浮点数。如果不设置,将使用产线初始化的该参数值,默认初始化为 0.5
。
float
layout_nms
版面检测是否使用后处理NMS。如果不设置,将使用产线初始化的该参数值,默认初始化为
True
。bool
layout_unclip_ratio
版面区域检测模型检测框的扩张系数。
任意大于
0
浮点数。如果不设置,将使用产线初始化的该参数值,默认初始化为 1.0
。
float
layout_merge_bboxes_mode
版面检测中模型输出的检测框的合并处理模式。
如果不设置,将使用产线初始化的该参数值,默认初始化为large
。
str
chart_recognition_model_name
图表解析的模型名称。如果不设置,将会使用产线默认模型。
str
chart_recognition_model_dir
图表解析模型的目录路径。如果不设置,将会下载官方模型。
str
chart_recognition_batch_size
图表解析模型的batch size。如果不设置,将默认设置batch size为
1
。int
region_detection_model_name
文档图像版面子模块检测的模型名称。如果不设置,将会使用产线默认模型。
str
region_detection_model_dir
文档图像版面子模块检测模型的目录路径。如果不设置,将会下载官方模型。
str
doc_orientation_classify_model_name
文档方向分类模型的名称。如果不设置,将会使用产线默认模型。
str
doc_orientation_classify_model_dir
文档方向分类模型的目录路径。如果不设置,将会下载官方模型。
str
doc_unwarping_model_name
文本图像矫正模型的名称。如果不设置,将会使用产线默认模型。
str
doc_unwarping_model_dir
文本图像矫正模型的目录路径。如果不设置,将会下载官方模型。
str
text_detection_model_name
文本检测模型的名称。如果不设置,将会使用产线默认模型。
str
text_detection_model_dir
文本检测模型的目录路径。如果不设置,将会下载官方模型。
str
text_det_limit_side_len
文本检测的图像边长限制。
大于
0
的任意整数。如果不设置,将使用产线初始化的该参数值,默认初始化为 960
。
int
text_det_limit_type
文本检测的图像边长限制类型。支持
min
和 max
,min
表示保证图像最短边不小于 det_limit_side_len
,max
表示保证图像最长边不大于 limit_side_len
。如果不设置,将使用产线初始化的该参数值,默认初始化为 max
。
str
text_det_thresh
检测像素阈值,输出的概率图中,得分大于该阈值的像素点才会被认为是文字像素点。
大于
0
的任意浮点数
。如果不设置,将默认使用产线初始化的该参数值 0.3
。
float
text_det_box_thresh
检测框阈值,检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是文字区域。大于
0
的任意浮点数
。如果不设置,将默认使用产线初始化的该参数值 0.6
。
float
text_det_unclip_ratio
文本检测扩张系数,使用该方法对文字区域进行扩张,该值越大,扩张的面积越大。
大于
0
的任意浮点数
。如果不设置,将默认使用产线初始化的该参数值 2.0
。
float
textline_orientation_model_name
文本行方向模型的名称。如果不设置,将会使用产线默认模型。
str
textline_orientation_model_dir
文本行方向模型的目录路径。如果不设置,将会下载官方模型。
str
textline_orientation_batch_size
文本行方向模型的batch size。如果不设置,将默认设置batch size为
1
。int
text_recognition_model_name
文本识别模型的名称。如果不设置,将会使用产线默认模型。
str
text_recognition_model_dir
文本识别模型的目录路径。如果不设置,将会下载官方模型。
str
text_recognition_batch_size
文本识别模型的batch size。如果不设置,将默认设置batch size为
1
。int
text_rec_score_thresh
文本识别阈值,得分大于该阈值的文本结果会被保留。
大于
0
的任意浮点数。如果不设置,将默认使用产线初始化的该参数值 0.0
。即不设阈值。
float
table_classification_model_name
表格分类模型的名称。如果不设置,将会使用产线默认模型。
str
table_classification_model_dir
表格分类模型的目录路径。如果不设置,将会下载官方模型。
str
wired_table_structure_recognition_model_name
有线表格结构识别模型的名称。如果不设置,将会使用产线默认模型。
str
wired_table_structure_recognition_model_dir
有线表格结构识别模型的目录路径。如果不设置,将会下载官方模型。
str
wireless_table_structure_recognition_model_name
无线表格结构识别模型的名称。如果不设置,将会使用产线默认模型。
str
wireless_table_structure_recognition_model_dir
无线表格结构识别模型的目录路径。如果不设置,将会下载官方模型。
str
wired_table_cells_detection_model_name
有线表格单元格检测模型的名称。如果不设置,将会使用产线默认模型。
str
wired_table_cells_detection_model_dir
有线表格单元格检测模型的目录路径。如果不设置,将会下载官方模型。
str
wireless_table_cells_detection_model_name
无线表格单元格检测模型的名称。如果不设置,将会使用产线默认模型。
str
wireless_table_cells_detection_model_dir
无线表格单元格检测模型的目录路径。如果不设置,将会下载官方模型。
str
table_orientation_classify_model_name
表格方向分类模型的名称。如果不设置,将会使用产线默认模型。
str
table_orientation_classify_model_dir
表格方向分类模型的目录路径。如果不设置,将会下载官方模型。
str
seal_text_detection_model_name
印章文本检测模型的名称。如果不设置,将会使用产线默认模型。
str
seal_text_detection_model_dir
印章文本检测模型的目录路径。如果不设置,将会下载官方模型。
str
seal_det_limit_side_len
印章文本检测的图像边长限制。
大于
0
的任意整数。如果不设置,将使用产线初始化的该参数值,默认初始化为 736
。
int
seal_det_limit_type
印章文本检测的图像边长限制类型。支持
min
和 max
,min
表示保证图像最短边不小于 det_limit_side_len
,max
表示保证图像最长边不大于 limit_side_len
。如果不设置,将使用产线初始化的该参数值,默认初始化为 min
。
str
seal_det_thresh
检测像素阈值。输出的概率图中,得分大于该阈值的像素点才会被认为是文字像素点。
大于 0
的任意浮点数
。如果不设置,将默认使用产线初始化的该参数值 0.2
。
float
seal_det_box_thresh
检测框阈值,检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是文字区域。
大于
0
的任意浮点数
。如果不设置,将默认使用产线初始化的该参数值 0.6
。
float
seal_det_unclip_ratio
印章文本检测扩张系数,使用该方法对文字区域进行扩张,该值越大,扩张的面积越大。
大于
0
的任意浮点数
。如果不设置,将默认使用产线初始化的该参数值 0.5
。
float
seal_text_recognition_model_name
印章文本识别模型的名称。如果不设置,将会使用产线默认模型。
str
seal_text_recognition_model_dir
印章文本识别模型的目录路径。如果不设置,将会下载官方模型。
str
seal_text_recognition_batch_size
印章文本识别模型的batch size。如果不设置,将默认设置batch size为
1
。int
seal_rec_score_thresh
文本识别阈值,得分大于该阈值的文本结果会被保留。
大于
0
的任意浮点数
。如果不设置,将默认使用产线初始化的该参数值 0.0
。即不设阈值。
float
formula_recognition_model_name
公式识别模型的名称。如果不设置,将会使用产线默认模型。
str
formula_recognition_model_dir
公式识别模型的目录路径。如果不设置,将会下载官方模型。
str
formula_recognition_batch_size
公式识别模型的batch size。如果不设置,将默认设置batch size为
1
。int
use_doc_orientation_classify
是否加载并使用文档方向分类模块。如果不设置,将使用产线初始化的该参数值,默认初始化为
False
。bool
use_doc_unwarping
是否加载并使用文本图像矫正模块。如果不设置,将使用产线初始化的该参数值,默认初始化为
False
。bool
use_textline_orientation
是否加载并使用文本行方向分类模块。如果不设置,将使用产线初始化的该参数值,默认初始化为
True
。bool
use_seal_recognition
是否加载并使用印章文本识别子产线。如果不设置,将使用产线初始化的该参数值,默认初始化为
True
。bool
use_table_recognition
是否加载并使用表格识别子产线。如果不设置,将使用产线初始化的该参数值,默认初始化为
True
。bool
use_formula_recognition
是否加载并使用公式识别子产线。如果不设置,将使用产线初始化的该参数值,默认初始化为
True
。bool
use_chart_recognition
是否加载并使用文档区域检测模块。如果不设置,将使用产线初始化的该参数值,默认初始化为
False
。bool
use_region_detection
是否加载并使用文档区域检测模块。如果不设置,将使用产线初始化的该参数值,默认初始化为
True
。bool
qianfan_api_key
千帆平台的API key。
str
device
用于推理的设备。支持指定具体卡号:
如果不设置,将默认使用产线初始化的该参数值,初始化时,会优先使用本地的 GPU 0号设备,如果没有,则使用 CPU 设备。
cpu
表示使用 CPU 进行推理;gpu:0
表示使用第 1 块 GPU 进行推理;npu:0
表示使用第 1 块 NPU 进行推理;xpu:0
表示使用第 1 块 XPU 进行推理;mlu:0
表示使用第 1 块 MLU 进行推理;dcu:0
表示使用第 1 块 DCU 进行推理;str
enable_hpi
是否启用高性能推理。
bool
False
use_tensorrt
是否启用 Paddle Inference 的 TensorRT 子图引擎。如果模型不支持通过 TensorRT 加速,即使设置了此标志,也不会使用加速。
对于 CUDA 11.8 版本的飞桨,兼容的 TensorRT 版本为 8.x(x>=6),建议安装 TensorRT 8.6.1.6。
bool
False
precision
计算精度,如 fp32、fp16。
str
fp32
enable_mkldnn
是否启用 MKL-DNN 加速推理。如果 MKL-DNN 不可用或模型不支持通过 MKL-DNN 加速,即使设置了此标志,也不会使用加速。
bool
True
mkldnn_cache_capacity
MKL-DNN 缓存容量。
int
10
cpu_threads
在 CPU 上进行推理时使用的线程数。
int
8
paddlex_config
PaddleX产线配置文件路径。
str
运行结果会被打印到终端上。
### 2.2 Python脚本方式集成
命令行方式是为了快速体验查看效果,一般来说,在项目中,往往需要通过代码集成,可以下载 [测试文件](https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/vehicle_certificate-1.png),使用如下示例代码进行推理:
```python
from paddleocr import PPDocTranslation
# 创建翻译产线
pipeline = PPDocTranslation()
# 文档路径
input_path = "document_sample.pdf"
# 输出目录
output_path = "./output"
# 大模型配置
chat_bot_config = {
"module_name": "chat_bot",
"model_name": "ernie-3.5-8k",
"base_url": "https://qianfan.baidubce.com/v2",
"api_type": "openai",
"api_key": "api_key", # your api_key
}
if input_path.lower().endswith(".md"):
# 读取markdown文档,支持传入目录和以 .md 为后缀的 url 链接
ori_md_info_list = pipeline.load_from_markdown(input_path)
else:
# 使用 PP-StructureV3 对 PDF/图片 文档进行版面解析,获取markdown信息
visual_predict_res = pipeline.visual_predict(
input_path,
use_doc_orientation_classify=False,
use_doc_unwarping=False,
use_common_ocr=True,
use_seal_recognition=True,
use_table_recognition=True,
)
ori_md_info_list = []
for res in visual_predict_res:
layout_parsing_result = res["layout_parsing_result"]
ori_md_info_list.append(layout_parsing_result.markdown)
layout_parsing_result.save_to_img(output_path)
layout_parsing_result.save_to_markdown(output_path)
# 将多页文档的 markdown 信息拼接成一个 markdown 文件,可将合并后的 markdown 原文保存
if input_path.lower().endswith(".pdf"):
ori_md_info = pipeline.concatenate_markdown_pages(ori_md_info_list)
ori_md_info.save_to_markdown(output_path)
# 执行文档翻译(目标语言:英文)
tgt_md_info_list = pipeline.translate(
ori_md_info_list=ori_md_info_list,
target_language="en",
chunk_size=5000,
chat_bot_config=chat_bot_config,
)
# 保存翻译结果
for tgt_md_info in tgt_md_info_list:
tgt_md_info.save_to_markdown(output_path)
```
执行上述代码后,您将得到翻译原文的文档解析结果、翻译原文的 Markdown 文件和翻译后文档的 Markdown 文件,保存在 `output` 目录中。
PP-DocTranslation 预测的流程、API 说明、产出说明如下:
(1)调用
相关参数说明如下:
PPDocTranslation
实例化 PP-DocTranslation 产线对象。
参数
参数说明
参数类型
默认值
layout_detection_model_name
版面区域检测的模型名称。如果设置为
None
,将会使用产线默认模型。str|None
None
layout_detection_model_dir
版面区域检测模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
layout_threshold
版面模型得分阈值。
0-1
之间的任意浮点数;{0:0.1}
key为类别ID,value为该类别的阈值;None
,将使用产线初始化的该参数值,默认初始化为 0.5
。float|dict|None
None
layout_nms
版面检测是否使用后处理NMS。如果设置为
None
,将使用产线初始化的该参数值,默认初始化为True
。bool|None
None
layout_unclip_ratio
版面区域检测模型检测框的扩张系数。
0
浮点数;cls_id
, value为tuple类型,如{0: (1.1, 2.0)}
,表示将模型输出的第0类别检测框中心不变,宽度扩张1.1倍,高度扩张2.0倍;None
,将使用产线初始化的该参数值,默认初始化为 1.0
。float|Tuple[float,float]|dict|None
None
layout_merge_bboxes_mode
版面区域检测的重叠框过滤方式。
large
,small
,union
,分别表示重叠框过滤时选择保留大框,小框还是同时保留;cls_id
,value为str类型,如{0: "large", 2: "small"}
,表示对第0类别检测框使用large模式,对第2类别检测框使用small模式;None
,将使用产线初始化的该参数值,默认初始化为 large
。str|dict|None
None
chart_recognition_model_name
图表解析的模型名称。如果设置为
None
,将会使用产线默认模型。str|None
None
chart_recognition_model_dir
图表解析模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
chart_recognition_batch_size
图表解析模型的batch size。如果设置为
None
,将默认设置batch size为1
。int|None
None
region_detection_model_name
文档图像版面子模块检测的模型名称。如果设置为
None
,将会使用产线默认模型。str|None
None
region_detection_model_dir
文档图像版面子模块检测模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
doc_orientation_classify_model_name
文档方向分类模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
doc_orientation_classify_model_dir
文档方向分类模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
doc_unwarping_model_name
文本图像矫正模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
doc_unwarping_model_dir
文本图像矫正模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
text_detection_model_name
文本检测模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
text_detection_model_dir
文本检测模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
text_det_limit_side_len
文本检测的图像边长限制。
0
的任意整数;None
,将使用产线初始化的该参数值,默认初始化为 960
。int|None
None
text_det_limit_type
文本检测的图像边长限制类型。
min
和 max
,min
表示保证图像最短边不小于 det_limit_side_len
,max
表示保证图像最长边不大于 limit_side_len
;None
,将使用产线初始化的该参数值,默认初始化为 max
。str|None
None
text_det_thresh
检测像素阈值,输出的概率图中,得分大于该阈值的像素点才会被认为是文字像素点。
0
的任意浮点数;
None
,将默认使用产线初始化的该参数值 0.3
。float|None
None
text_det_box_thresh
检测框阈值,检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是文字区域。
0
的任意浮点数;
None
,将默认使用产线初始化的该参数值 0.6
。float|None
None
text_det_unclip_ratio
文本检测扩张系数,使用该方法对文字区域进行扩张,该值越大,扩张的面积越大。
0
的任意浮点数;
None
,将默认使用产线初始化的该参数值 2.0
。float|None
None
textline_orientation_model_name
文本行方向模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
textline_orientation_model_dir
文本行方向模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
textline_orientation_batch_size
文本行方向模型的batch size。如果设置为
None
,将默认设置batch size为1
。int|None
None
text_recognition_model_name
文本识别模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
text_recognition_model_dir
文本识别模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
text_recognition_batch_size
文本识别模型的batch size。如果设置为
None
,将默认设置batch size为1
。int|None
None
text_rec_score_thresh
文本识别阈值,得分大于该阈值的文本结果会被保留。
0
的任意浮点数;
None
,将默认使用产线初始化的该参数值 0.0
,即不设阈值。float|None
None
table_classification_model_name
表格分类模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
table_classification_model_dir
表格分类模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
wired_table_structure_recognition_model_name
有线表格结构识别模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
wired_table_structure_recognition_model_dir
有线表格结构识别模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
wireless_table_structure_recognition_model_name
无线表格结构识别模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
wireless_table_structure_recognition_model_dir
无线表格结构识别模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
wired_table_cells_detection_model_name
有线表格单元格检测模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
wired_table_cells_detection_model_dir
有线表格单元格检测模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
wireless_table_cells_detection_model_name
无线表格单元格检测模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
wireless_table_cells_detection_model_dir
无线表格单元格检测模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
table_orientation_classify_model_name
表格方向分类模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
table_orientation_classify_model_dir
表格方向分类模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
seal_text_detection_model_name
印章文本检测模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
seal_text_detection_model_dir
印章文本检测模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
seal_det_limit_side_len
印章文本检测的图像边长限制。
0
的任意整数;None
,将使用产线初始化的该参数值,默认初始化为 736
。int|None
None
seal_det_limit_type
印章文本检测的图像边长限制类型。
min
和 max
,min
表示保证图像最短边不小于 det_limit_side_len
,max
表示保证图像最长边不大于 limit_side_len
;None
,将使用产线初始化的该参数值,默认初始化为 min
。str|None
None
seal_det_thresh
检测像素阈值,输出的概率图中,得分大于该阈值的像素点才会被认为是文字像素点。
0
的任意浮点数;
None
,将默认使用产线初始化的该参数值 0.2
。float|None
None
seal_det_box_thresh
检测框阈值,检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是文字区域。
0
的任意浮点数;
None
,将默认使用产线初始化的该参数值 0.6
。float|None
None
seal_det_unclip_ratio
印章文本检测扩张系数,使用该方法对文字区域进行扩张,该值越大,扩张的面积越大。
0
的任意浮点数;
None
,将默认使用产线初始化的该参数值 0.5
。float|None
None
seal_text_recognition_model_name
印章文本识别模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
seal_text_recognition_model_dir
印章文本识别模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
seal_text_recognition_batch_size
印章文本识别模型的batch size。如果设置为
None
,将默认设置batch size为1
。int|None
None
seal_rec_score_thresh
印章文本识别阈值,得分大于该阈值的文本结果会被保留。
0
的任意浮点数;
None
,将默认使用产线初始化的该参数值 0.0
,即不设阈值。float|None
None
formula_recognition_model_name
公式识别模型的名称。如果设置为
None
,将会使用产线默认模型。str|None
None
formula_recognition_model_dir
公式识别模型的目录路径。如果设置为
None
,将会下载官方模型。str|None
None
formula_recognition_batch_size
公式识别模型的batch size。如果设置为
None
,将默认设置batch size为1
。int|None
None
use_doc_orientation_classify
是否加载并使用文档方向分类模块。如果设置为
None
,将使用产线初始化的该参数值,默认初始化为False
。bool|None
None
use_doc_unwarping
是否加载并使用文本图像矫正模块。如果设置为
None
,将使用产线初始化的该参数值,默认初始化为False
。bool|None
None
use_textline_orientation
是否加载并使用文本行方向分类模块。如果设置为
None
,将使用产线初始化的该参数值,默认初始化为True
。bool|None
None
use_seal_recognition
是否加载并使用印章文本识别子产线。如果设置为
None
,将使用产线初始化的该参数值,默认初始化为True
。bool|None
None
use_table_recognition
是否加载并使用表格识别子产线。如果设置为
None
,将使用产线初始化的该参数值,默认初始化为True
。bool|None
None
use_formula_recognition
是否加载并使用公式识别子产线。如果设置为
None
,将使用产线初始化的该参数值,默认初始化为True
。bool|None
None
use_chart_recognition
是否加载并使用图表解析模块。如果设置为
None
,将使用产线初始化的该参数值,默认初始化为False
。bool|None
None
use_region_detection
是否加载并使用文档区域检测模块。如果设置为
None
,将使用产线初始化的该参数值,默认初始化为True
。bool|None
None
chat_bot_config
大语言模型配置信息。配置内容为如下dict:
{
"module_name": "chat_bot",
"model_name": "ernie-3.5-8k",
"base_url": "https://qianfan.baidubce.com/v2",
"api_type": "openai",
"api_key": "api_key" # 请将此设置为实际的API密钥
}
dict|None
None
device
用于推理的设备。支持指定具体卡号:
cpu
表示使用 CPU 进行推理;gpu:0
表示使用第 1 块 GPU 进行推理;npu:0
表示使用第 1 块 NPU 进行推理;xpu:0
表示使用第 1 块 XPU 进行推理;mlu:0
表示使用第 1 块 MLU 进行推理;dcu:0
表示使用第 1 块 DCU 进行推理;None
,初始化时,会优先使用本地的 GPU 0号设备,如果没有,则使用 CPU 设备。str|None
None
enable_hpi
是否启用高性能推理。
bool
False
use_tensorrt
是否启用 Paddle Inference 的 TensorRT 子图引擎。如果模型不支持通过 TensorRT 加速,即使设置了此标志,也不会使用加速。
对于 CUDA 11.8 版本的飞桨,兼容的 TensorRT 版本为 8.x(x>=6),建议安装 TensorRT 8.6.1.6。
bool
False
precision
计算精度,如 fp32、fp16。
str
"fp32"
enable_mkldnn
是否启用 MKL-DNN 加速推理。如果 MKL-DNN 不可用或模型不支持通过 MKL-DNN 加速,即使设置了此标志,也不会使用加速。
bool
True
mkldnn_cache_capacity
MKL-DNN 缓存容量。
int
10
cpu_threads
在 CPU 上进行推理时使用的线程数。
int
8
paddlex_config
PaddleX产线配置文件路径。
str|None
None
(2)调用 PP-DocTranslation 产线对象的
visual_predict()
方法获取视觉预测结果,该方法会返回一个结果列表。另外,产线还提供了 visual_predict_iter()
方法。两者在参数接受和结果返回方面是完全一致的,区别在于 visual_predict_iter()
返回的是一个 generator
,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。以下是 visual_predict()
方法的参数及其说明:
参数
参数说明
参数类型
默认值
input
待预测数据,支持多种输入类型,必填。
numpy.ndarray
表示的图像数据;/root/data/img.jpg
;如URL链接,如图像文件或PDF文件的网络URL:示例;如本地目录,该目录下需包含待预测图像,如本地路径:/root/data/
(当前不支持目录中包含PDF文件的预测,PDF文件需要指定到具体文件路径);[numpy.ndarray, numpy.ndarray]
,["/root/data/img1.jpg", "/root/data/img2.jpg"]
,["/root/data1", "/root/data2"]
。Python Var|str|list
use_doc_orientation_classify
是否在推理时使用文档方向分类模块。设置为
None
表示使用实例化参数,否则该参数优先级更高。bool|None
None
use_doc_unwarping
是否在推理时使用文本图像矫正模块。设置为
None
表示使用实例化参数,否则该参数优先级更高。bool|None
None
use_textline_orientation
是否在推理时使用文本行方向分类模块。设置为
None
表示使用实例化参数,否则该参数优先级更高。bool|None
None
use_seal_recognition
是否在推理时使用印章文本识别子产线。设置为
None
表示使用实例化参数,否则该参数优先级更高。bool|None
None
use_table_recognition
是否在推理时使用表格识别子产线。设置为
None
表示使用实例化参数,否则该参数优先级更高。bool|None
None
use_formula_recognition
是否在推理时使用公式识别子产线。设置为
None
表示使用实例化参数,否则该参数优先级更高。bool|None
None
use_chart_recognition
是否在推理时使用图表解析模块。设置为
None
表示使用实例化参数,否则该参数优先级更高。bool|None
None
use_region_detection
是否在推理时使用文档区域检测模块。设置为
None
表示使用实例化参数,否则该参数优先级更高。bool|None
None
layout_threshold
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。float|dict|None
None
layout_nms
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。bool|None
None
layout_unclip_ratio
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。float|Tuple[float,float]|dict|None
None
layout_merge_bboxes_mode
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。str|dict|None
None
text_det_limit_side_len
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。int|None
None
text_det_limit_type
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。str|None
None
text_det_thresh
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。float|None
None
text_det_box_thresh
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。float|None
None
text_det_unclip_ratio
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。float|None
None
text_rec_score_thresh
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。float|None
None
seal_det_limit_side_len
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。int|None
None
seal_det_limit_type
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。str|None
None
seal_det_thresh
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。float|None
None
seal_det_box_thresh
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。float|None
None
seal_det_unclip_ratio
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。float|None
None
seal_rec_score_thresh
参数含义与实例化参数基本相同。设置为
None
表示使用实例化参数,否则该参数优先级更高。float|None
None
use_wired_table_cells_trans_to_html
是否启用有线表单元格检测结果直转HTML,启用则直接基于有线表单元格检测结果的几何关系构建HTML。
bool
False
use_wireless_table_cells_trans_to_html
是否启用无线表单元格检测结果直转HTML,启用则直接基于无线表单元格检测结果的几何关系构建HTML。
bool
False
use_table_orientation_classify
是否启用表格使用表格方向分类,启用时当图像中的表格存在90/180/270度旋转时,能够将方向校正并正确完成表格识别。
bool
True
use_ocr_results_with_table_cells
是否启用单元格切分OCR,启用时会基于单元格预测结果对OCR检测结果进行切分和重识别,避免出现文字缺失情况。
bool
True
use_e2e_wired_table_rec_model
是否启用有线表端到端表格识别模式,启用则不使用单元格检测模型,只使用表格结构识别模型。
bool
False
use_e2e_wireless_table_rec_model
是否启用无线表端到端表格识别模式,启用则不使用单元格检测模型,只使用表格结构识别模型。
bool
True
(3)对视觉预测结果进行处理:每个样本的预测结果均为对应的Result对象,且支持打印、保存为图片、保存为
json
文件的操作:
- 调用`print()` 方法会将结果打印到终端,打印到终端的内容解释如下:
- `input_path`: `(str)` 待预测图像或者PDF的输入路径
- `page_index`: `(Union[int, None])` 如果输入是PDF文件,则表示当前是PDF的第几页,否则为 `None`
- `model_settings`: `(Dict[str, bool])` 配置产线所需的模型参数
- `use_doc_preprocessor`: `(bool)` 控制是否启用文档预处理子产线
- `use_general_ocr`: `(bool)` 控制是否启用 OCR 子产线
- `use_seal_recognition`: `(bool)` 控制是否启用印章识别子产线
- `use_table_recognition`: `(bool)` 控制是否启用表格识别子产线
- `use_formula_recognition`: `(bool)` 控制是否启用公式识别子产线
- `doc_preprocessor_res`: `(Dict[str, Union[List[float], str]])` 文档预处理结果字典,仅当`use_doc_preprocessor=True`时存在
- `input_path`: `(str)` 文档预处理子产线接受的图像路径,当输入为`numpy.ndarray`时,保存为`None`,此处为`None`
- `page_index`: `None`,此处的输入为`numpy.ndarray`,所以值为`None`
- `model_settings`: `(Dict[str, bool])` 文档预处理子产线的模型配置参数
- `use_doc_orientation_classify`: `(bool)` 控制是否启用文档图像方向分类子模块
- `use_doc_unwarping`: `(bool)` 控制是否启用文本图像扭曲矫正子模块
- `angle`: `(int)` 文档图像方向分类子模块的预测结果,启用时返回实际角度值
- `parsing_res_list`: `(List[Dict])` 解析结果的列表,每个元素为一个字典,列表顺序为解析后的阅读顺序。
- `block_bbox`: `(np.ndarray)` 版面区域的边界框。
- `block_label`: `(str)` 版面区域的标签,例如`text`, `table`等。
- `block_content`: `(str)` 内容为版面区域内的内容。
- `seg_start_flag`: `(bool)` 标识该版面区域是否是段落的开始。
- `seg_end_flag`: `(bool)` 标识该版面区域是否是段落的结束。
- `sub_label`: `(str)` 版面区域的子标签,例如`text`的子标签可能为`title_text`。
- `sub_index`: `(int)` 版面区域的子索引,用于恢复Markdown。
- `index`: `(int)` 版面区域的索引,用于显示版面排序结果。
- `overall_ocr_res`: `(Dict[str, Union[List[str], List[float], numpy.ndarray]])` 全局 OCR 结果的字典
- `input_path`: `(Union[str, None])` 图像OCR子产线接受的图像路径,当输入为`numpy.ndarray`时,保存为`None`
- `page_index`: `None`,此处的输入为`numpy.ndarray`,所以值为`None`
- `model_settings`: `(Dict)` OCR子产线的模型配置参数
- `dt_polys`: `(List[numpy.ndarray])` 文本检测的多边形框列表。每个检测框由4个顶点坐标构成的numpy数组表示,数组shape为(4, 2),数据类型为int16
- `dt_scores`: `(List[float])` 文本检测框的置信度列表
- `text_det_params`: `(Dict[str, Dict[str, int, float]])` 文本检测模块的配置参数
- `limit_side_len`: `(int)` 图像预处理时的边长限制值
- `limit_type`: `(str)` 边长限制的处理方式
- `thresh`: `(float)` 文本像素分类的置信度阈值
- `box_thresh`: `(float)` 文本检测框的置信度阈值
- `unclip_ratio`: `(float)` 文本检测框的膨胀系数
- `text_type`: `(str)` 文本检测的类型,当前固定为"general"
- `text_type`: `(str)` 文本检测的类型,当前固定为"general"
- `textline_orientation_angles`: `(List[int])` 文本行方向分类的预测结果。启用时返回实际角度值(如[0,0,1]
- `text_rec_score_thresh`: `(float)` 文本识别结果的过滤阈值
- `rec_texts`: `(List[str])` 文本识别结果列表,仅包含置信度超过`text_rec_score_thresh`的文本
- `rec_scores`: `(List[float])` 文本识别的置信度列表,已按`text_rec_score_thresh`过滤
- `rec_polys`: `(List[numpy.ndarray])` 经过置信度过滤的文本检测框列表,格式同`dt_polys`
- `formula_res_list`: `(List[Dict[str, Union[numpy.ndarray, List[float], str]]])` 公式识别结果列表,每个元素为一个字典
- `rec_formula`: `(str)` 公式识别结果
- `rec_polys`: `(numpy.ndarray)` 公式检测框,shape为(4, 2),dtype为int16
- `formula_region_id`: `(int)` 公式所在的区域编号
- `seal_res_list`: `(List[Dict[str, Union[numpy.ndarray, List[float], str]]])` 印章识别结果列表,每个元素为一个字典
- `input_path`: `(str)` 印章图像的输入路径
- `page_index`: `None`,此处的输入为`numpy.ndarray`,所以值为`None`
- `model_settings`: `(Dict)` 印章识别子产线的模型配置参数
- `dt_polys`: `(List[numpy.ndarray])` 印章检测框列表,格式同`dt_polys`
- `text_det_params`: `(Dict[str, Dict[str, int, float]])` 印章检测模块的配置参数, 具体参数含义同上
- `text_type`: `(str)` 印章检测的类型,当前固定为"seal"
- `text_rec_score_thresh`: `(float)` 印章识别结果的过滤阈值
- `rec_texts`: `(List[str])` 印章识别结果列表,仅包含置信度超过`text_rec_score_thresh`的文本
- `rec_scores`: `(List[float])` 印章识别的置信度列表,已按`text_rec_score_thresh`过滤
- `rec_polys`: `(List[numpy.ndarray])` 经过置信度过滤的印章检测框列表,格式同`dt_polys`
- `rec_boxes`: `(numpy.ndarray)` 检测框的矩形边界框数组,shape为(n, 4),dtype为int16。每一行表示一个矩形
- `table_res_list`: `(List[Dict[str, Union[numpy.ndarray, List[float], str]]])` 表格识别结果列表,每个元素为一个字典
- `cell_box_list`: `(List[numpy.ndarray])` 表格单元格的边界框列表
- `pred_html`: `(str)` 表格的HTML格式字符串
- `table_ocr_pred`: `(dict)` 表格的OCR识别结果
- `rec_polys`: `(List[numpy.ndarray])` 单元格的检测框列表
- `rec_texts`: `(List[str])` 单元格的识别结果
- `rec_scores`: `(List[float])` 单元格的识别置信度
- `rec_boxes`: `(numpy.ndarray)` 检测框的矩形边界框数组,shape为(n, 4),dtype为int16。每一行表示一个矩形
- 调用`save_to_json()` 方法会将上述内容保存到指定的 `save_path` 中,如果指定为目录,则保存的路径为`save_path/{your_img_basename}_res.json`,如果指定为文件,则直接保存到该文件中。由于 json 文件不支持保存numpy数组,因此会将其中的 `numpy.array` 类型转换为列表形式。
- 调用`save_to_img()` 方法会将可视化结果保存到指定的 `save_path` 中,如果指定为目录,则会将版面区域检测可视化图像、全局OCR可视化图像、版面阅读顺序可视化图像等内容保存,如果指定为文件,则直接保存到该文件中。(产线通常包含较多结果图片,不建议直接指定为具体的文件路径,否则多张图会被覆盖,仅保留最后一张图)
- 调用`save_to_markdown()` 方法会将转化后的 Markdown 文件保存到指定的 `save_path` 中,保存的文件路径为`save_path/{your_img_basename}.md`,如果输入是 PDF 文件,建议直接指定目录,否责多个 markdown 文件会被覆盖。
- 调用 `concatenate_markdown_pages()` 方法将 PP-DocTranslation 产线输出的多页Markdown内容`markdown_list`合并为单个完整文档,并返回合并后的Markdown内容。
方法
方法说明
参数
参数类型
参数说明
默认值
print()
打印结果到终端
format_json
bool
是否对输出内容进行使用
JSON
缩进格式化True
indent
int
指定缩进级别,以美化输出的
JSON
数据,使其更具可读性,仅当 format_json
为 True
时有效4
ensure_ascii
bool
控制是否将非
ASCII
字符转义为 Unicode
。设置为 True
时,所有非 ASCII
字符将被转义;False
则保留原始字符,仅当format_json
为True
时有效False
save_to_json()
将结果保存为json格式的文件
save_path
str
保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致
无
indent
int
指定缩进级别,以美化输出的
JSON
数据,使其更具可读性,仅当 format_json
为 True
时有效4
ensure_ascii
bool
控制是否将非
ASCII
字符转义为 Unicode
。设置为 True
时,所有非 ASCII
字符将被转义;False
则保留原始字符,仅当format_json
为True
时有效False
save_to_img()
将中间各个模块的可视化图像保存在png格式的图像
save_path
str
保存的文件路径,支持目录或文件路径
无
save_to_markdown()
将图像或者PDF文件中的每一页分别保存为markdown格式的文件
save_path
str
保存的文件路径,支持目录或文件路径
无
save_to_html()
将文件中的表格保存为html格式的文件
save_path
str
保存的文件路径,支持目录或文件路径
无
save_to_xlsx()
将文件中的表格保存为xlsx格式的文件
save_path
str
保存的文件路径,支持目录或文件路径
无
(4)调用
translate()
方法执行文档翻译,该方法会返回翻译的 markdown 原文和译文,是一个markdown对象,可以通过执行 save_to_markdown()
方法将需要的部分保存到本地。以下是 translate()
方法的相关参数说明:
参数
参数说明
参数类型
默认值
ori_md_info_list
原始Markdown格式的数据列表,包含需要翻译的内容。必须为字典组成的列表,每个字典表示一个文档块
List[Dict]
target_language
目标语言(ISO 639-1 语言代码,如
"en"
/"ja"
/"fr"
)。str
"zh"
chunk_size
翻译文本分块处理的字符数阈值。
int
5000
task_description
自定义任务描述提示词。
str|None
None
output_format
指定输出格式要求,如“保持原Markdown结构”。
str|None
None
rules_str
自定义翻译规则说明。
str|None
None
few_shot_demo_text_content
少样本学习的示例文本内容。
str|None
None
few_shot_demo_key_value_list
结构化少样本示例数据。键值对格式的示例数据,可传入专业术语对照表。
str|None
None
glossary
翻译专业术语对照表。
dict|None
None
llm_request_interval
向大语言模型发送请求的时间间隔,单位为秒。该参数可用于防止过于频繁地调用大语言模型。
float
0.0
chat_bot_config
大语言模型配置。设置为
None
表示使用实例化参数,否则该参数优先级更高。dict|None
None
API参考
200
,响应体的属性如下:
名称
类型
含义
logId
string
请求的UUID。
errorCode
integer
错误码。固定为
0
。
errorMsg
string
错误说明。固定为
"Success"
。
result
object
操作结果。
名称
类型
含义
logId
string
请求的UUID。
errorCode
integer
错误码。与响应状态码相同。
errorMsg
string
错误说明。
analyzeImages
POST /doctrans-visual
名称
类型
含义
是否必填
file
string
服务器可访问的图像文件或PDF文件的URL,或上述类型文件内容的Base64编码结果。默认对于超过10页的PDF文件,只有前10页的内容会被处理。
要解除页数限制,请在产线配置文件中添加以下配置:
Serving:
extra:
max_num_input_imgs: null
是
fileType
integer
|null
文件类型。
0
表示PDF文件,1
表示图像文件。若请求体无此属性,则将根据URL推断文件类型。否
useDocOrientationClassify
boolean
| null
请参阅产线对象中
visual_predict
方法的 use_doc_orientation_classify
参数相关说明。否
useDocUnwarping
boolean
| null
请参阅产线对象中
visual_predict
方法的 use_doc_unwarping
参数相关说明。否
useTextlineOrientation
boolean
| null
请参阅产线对象中
visual_predict
方法的 use_textline_orientation
参数相关说明。否
useSealRecognition
boolean
| null
请参阅产线对象中
visual_predict
方法的 use_seal_recognition
参数相关说明。否
useTableRecognition
boolean
| null
请参阅产线对象中
visual_predict
方法的 use_table_recognition
参数相关说明。否
useFormulaRecognition
boolean
| null
请参阅产线对象中
visual_predict
方法的 use_formula_recognition
参数相关说明。否
useChartRecognition
boolean
| null
请参阅产线对象中
visual_predict
方法的 use_chart_recognition
参数相关说明。否
useRegionDetection
boolean
| null
请参阅产线对象中
visual_predict
方法的 use_region_detection
参数相关说明。否
layoutThreshold
number
| object
| null
请参阅产线对象中
visual_predict
方法的 layout_threshold
参数相关说明。否
layoutNms
boolean
| null
请参阅产线对象中
visual_predict
方法的 layout_nms
参数相关说明。否
layoutUnclipRatio
number
| array
| object
| null
请参阅产线对象中
visual_predict
方法的 layout_unclip_ratio
参数相关说明。否
layoutMergeBboxesMode
string
| object
| null
请参阅产线对象中
visual_predict
方法的 layout_merge_bboxes_mode
参数相关说明。否
textDetLimitSideLen
integer
| null
请参阅产线对象中
visual_predict
方法的 text_det_limit_side_len
参数相关说明。否
textDetLimitType
string
| null
请参阅产线对象中
visual_predict
方法的 text_det_limit_type
参数相关说明。否
textDetThresh
number
| null
请参阅产线对象中
visual_predict
方法的 text_det_thresh
参数相关说明。否
textDetBoxThresh
number
| null
请参阅产线对象中
visual_predict
方法的 text_det_box_thresh
参数相关说明。否
textDetUnclipRatio
number
| null
请参阅产线对象中
visual_predict
方法的 text_det_unclip_ratio
参数相关说明。否
textRecScoreThresh
number
| null
请参阅产线对象中
visual_predict
方法的 text_rec_score_thresh
参数相关说明。否
sealDetLimitSideLen
integer
| null
请参阅产线对象中
visual_predict
方法的 seal_det_limit_side_len
参数相关说明。否
sealDetLimitType
string
| null
请参阅产线对象中
visual_predict
方法的 seal_det_limit_type
参数相关说明。否
sealDetThresh
number
| null
请参阅产线对象中
visual_predict
方法的 seal_det_thresh
参数相关说明。否
sealDetBoxThresh
number
| null
请参阅产线对象中
visual_predict
方法的 seal_det_box_thresh
参数相关说明。否
sealDetUnclipRatio
number
| null
请参阅产线对象中
visual_predict
方法的 seal_det_unclip_ratio
参数相关说明。否
sealRecScoreThresh
number
| null
请参阅产线对象中
visual_predict
方法的 seal_rec_score_thresh
参数相关说明。否
useWiredTableCellsTransToHtml
boolean
请参阅产线对象中
visual_predict
方法的 use_wired_table_cells_trans_to_html
参数相关说明。No
useWirelessTableCellsTransToHtml
boolean
请参阅产线对象中
visual_predict
方法的 use_wireless_table_cells_trans_to_html
参数相关说明。No
useTableOrientationClassify
boolean
请参阅产线对象中
visual_predict
方法的 use_table_orientation_classify
参数相关说明。No
useOcrResultsWithTableCells
boolean
请参阅产线对象中
visual_predict
方法的 use_ocr_results_with_table_cells
参数相关说明。否
useE2eWiredTableRecModel
boolean
请参阅产线对象中
visual_predict
方法的 use_e2e_wired_table_rec_model
参数相关说明。否
useE2eWirelessTableRecModel
boolean
请参阅产线对象中
visual_predict
方法的 use_e2e_wireless_table_rec_model
参数相关说明。否
visualize
boolean
| null
是否返回可视化结果图以及处理过程中的中间图像等。
true
:返回图像。false
:不返回图像。null
:遵循产线配置文件Serving.visualize
的设置。
例如,在产线配置文件中添加如下字段:
将默认不返回图像,通过请求体中的Serving:
visualize: False
visualize
参数可以覆盖默认行为。如果请求体和配置文件中均未设置(或请求体传入null
、配置文件中未设置),则默认返回图像。
否
result
具有如下属性:
名称
类型
含义
layoutParsingResults
array
版面解析结果。数组长度为1(对于图像输入)或实际处理的文档页数(对于PDF输入)。对于PDF输入,数组中的每个元素依次表示PDF文件中实际处理的每一页的结果。
dataInfo
object
输入数据信息。
layoutParsingResults
中的每个元素为一个object
,具有如下属性:
名称
类型
含义
prunedResult
object
产线对象的
visual_predict
方法生成的 layout_parsing_result
的 JSON 表示中 res
字段的简化版本,其中去除了 input_path
和 page_index
字段。
markdown
object
Markdown结果。
outputImages
object
| null
参见产线预测结果的
img
属性说明。图像为JPEG格式,使用Base64编码。
inputImage
string
| null
输入图像。图像为JPEG格式,使用Base64编码。
markdown
为一个object
,具有如下属性:
名称
类型
含义
text
string
Markdown文本。
images
object
Markdown图片相对路径和Base64编码图像的键值对。
isStart
boolean
当前页面第一个元素是否为段开始。
isEnd
boolean
当前页面最后一个元素是否为段结束。
translate
POST /doctrans-translate
名称
类型
含义
是否必填
markdownList
array
待翻译的Markdown列表。可从
analyzeImages
操作的结果中获取。images
属性将不会被用到。是
targetLanguage
string
请参阅产线对象中
translate
方法的 target_language
参数相关说明。否
chunkSize
integer
请参阅产线对象中
translate
方法的 chunk_size
参数相关说明。否
taskDescription
string
| null
请参阅产线对象中
translate
方法的 task_description
参数相关说明。否
outputFormat
string
| null
请参阅产线对象中
translate
方法的 output_format
参数相关说明。否
rulesStr
string
| null
请参阅产线对象中
translate
方法的 rules_str
参数相关说明。否
fewShotDemoTextContent
string
| null
请参阅产线对象中
translate
方法的 few_shot_demo_text_content
参数相关说明。否
fewShotDemoKeyValueList
string
| null
请参阅产线对象中
translate
方法的 few_shot_demo_key_value_list
参数相关说明。否
glossary
object
| null
请参阅产线对象中
translate
方法的 glossary
参数相关说明。否
llmRequestInterval
number
| null
请参阅产线对象中
translate
方法的 llm_request_interval
参数相关说明。否
chatBotConfig
object
| null
请参阅产线对象中
translate
方法的 chat_bot_config
参数相关说明。否
result
具有如下属性:
名称
类型
含义
translationResults
array
翻译结果。
translationResults
中的每个元素为一个object
,具有如下属性:
名称
类型
含义
language
string
目标语言。
markdown
object
Markdown结果。对象定义与
analyzeImages
操作返回的markdown
一致。
多语言调用服务示例
Python
import base64
import pathlib
import pprint
import sys
import requests
API_BASE_URL = "http://127.0.0.1:8080"
file_path = "./demo.jpg"
target_language = "en"
with open(file_path, "rb") as file:
file_bytes = file.read()
file_data = base64.b64encode(file_bytes).decode("ascii")
payload = {
"file": file_data,
"fileType": 1,
}
resp_visual = requests.post(url=f"{API_BASE_URL}/doctrans-visual", json=payload)
if resp_visual.status_code != 200:
print(
f"Request to doctrans-visual failed with status code {resp_visual.status_code}."
)
pprint.pp(resp_visual.json())
sys.exit(1)
result_visual = resp_visual.json()["result"]
markdown_list = []
for i, res in enumerate(result_visual["layoutParsingResults"]):
md_dir = pathlib.Path(f"markdown_{i}")
md_dir.mkdir(exist_ok=True)
(md_dir / "doc.md").write_text(res["markdown"]["text"])
for img_path, img in res["markdown"]["images"].items():
img_path = md_dir / img_path
img_path.parent.mkdir(parents=True, exist_ok=True)
img_path.write_bytes(base64.b64decode(img))
print(f"Markdown document to be translated is saved at {md_dir / 'doc.md'}")
del res["markdown"]["images"]
markdown_list.append(res["markdown"])
for img_name, img in res["outputImages"].items():
img_path = f"{img_name}_{i}.jpg"
with open(img_path, "wb") as f:
f.write(base64.b64decode(img))
print(f"Output image saved at {img_path}")
payload = {
"markdownList": markdown_list,
"targetLanguage": target_language,
}
resp_translate = requests.post(url=f"{API_BASE_URL}/doctrans-translate", json=payload)
if resp_translate.status_code != 200:
print(
f"Request to doctrans-translate failed with status code {resp_translate.status_code}."
)
pprint.pp(resp_translate.json())
sys.exit(1)
result_translate = resp_translate.json()["result"]
for i, res in enumerate(result_translate["translationResults"]):
md_dir = pathlib.Path(f"markdown_{i}")
(md_dir / "doc_translated.md").write_text(res["markdown"]["text"])
print(f"Translated markdown document saved at {md_dir / 'doc_translated.md'}")
## 4. 二次开发
如果 PP-DocTranslation 产线提供的默认模型权重在您的场景中,精度或速度不满意,您可以尝试利用您自己拥有的特定领域或应用场景的数据对现有模型进行进一步的微调,以提升在您的场景中的识别效果。
### 4.1 模型微调
由于 PP-DocTranslation 产线包含若干模块,模型产线的效果如果不及预期,可能来自于其中任何一个模块。您可以对提取效果差的 case 进行分析,通过可视化图像,确定是哪个模块存在问题,并参考以下表格中对应的微调教程链接进行模型微调。
情形 | 微调模块 | 微调参考链接 |
---|---|---|
版面区域检测不准,如印章、表格未检出等 | 版面区域检测模块 | 链接 |
表格结构识别不准 | 表格结构识别模块 | 链接 |
公式识别不准 | 公式识别模块 | 链接 |
印章文本存在漏检 | 印章文本检测模块 | 链接 |
文本存在漏检 | 文本检测模块 | 链接 |
文本内容都不准 | 文本识别模块 | 链接 |
垂直或者旋转文本行矫正不准 | 文本行方向分类模块 | 链接 |
整图旋转矫正不准 | 文档图像方向分类模块 | 链接 |
图像扭曲矫正不准 | 文本图像矫正模块 | 暂不支持微调 |