---
comments: true
---
# 通用文档翻译(PP-DocTranslation)产线使用教程
## 1. PP-DocTranslation产线介绍
通用文档翻译产线(PP-DocTranslation)是飞桨提供的文档智能翻译解决方案,融合了先进的通用版面解析技术与大语言模型(LLM)能力,为您提供高效的文档智能翻译服务。该解决方案能够精准识别并提取文档中的各类元素,包括文本块、标题、段落、图片、表格及其他复杂版面结构,并在此基础之上实现高质量的多语种互译。PP-DocTranslation 支持多种主流语言间的相互翻译,尤其擅长处理排版复杂、上下文依赖性强的文档场景,力求输出精准自然、流畅专业的翻译结果。本产线同时提供了灵活的服务化部署方式,支持在多种硬件上使用多种编程语言调用。不仅如此,本产线也提供了二次开发的能力,您可以基于本产线在您自己的数据集上训练调优,训练后的模型也可以无缝集成。
通用文档翻译产线中使用了通用版面解析v3子产线,因此具有通用版面解析v3产线的所有功能,更多关于通用版面解析v3产线的功能介绍和使用细节,可以点击 [通用版面解析v3产线文档](./PP-StructureV3.md) 页面查看。
如您更考虑模型精度,请选择精度较高的模型,如您更考虑模型推理速度,请选择推理速度较快的模型,如您更考虑模型存储大小,请选择存储大小较小的模型。
👉模型列表详情
文档图像方向分类模块:
| 模型 | 模型下载链接 |
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 M |
高精度文本图像矫正模型 |
版面区域检测模块模型:
| 模型 | 模型下载链接 |
mAP(0.5)(%) |
GPU推理耗时(ms) [常规模式 / 高性能模式] |
CPU推理耗时(ms) [常规模式 / 高性能模式] |
模型存储大小(M) |
介绍 |
| PP-DocLayout_plus-L |
推理模型/训练模型 |
83.2 |
53.03 / 17.23 |
634.62 / 378.32 |
126.01 M |
基于RT-DETR-L在包含中英文论文、多栏杂志、报纸、PPT、合同、书本、试卷、研报、古籍、日文文档、竖版文字文档等场景的自建数据集训练的更高精度版面区域定位模型 |
PP-DocLayout-L |
推理模型/训练模型 |
90.4 |
33.59 / 33.59 |
503.01 / 251.08 |
123.76 M |
基于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 M |
PP-OCRv5_rec 是新一代文本识别模型。该模型致力于以单一模型高效、精准地支持简体中文、繁体中文、英文、日文四种主要语言,以及手写、竖版、拼音、生僻字等复杂文本场景的识别。在保持识别效果的同时,兼顾推理速度和模型鲁棒性,为各种场景下的文档理解提供高效、精准的技术支撑。 |
| PP-OCRv5_mobile_rec |
推理模型/训练模型 |
81.29 |
5.43 / 1.46 |
21.20 / 5.32 |
16 M |
| PP-OCRv4_server_rec_doc |
推理模型/训练模型 |
86.58 |
8.69 / 2.78 |
37.93 / 37.93 |
74.7 M |
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 M |
PP-OCRv4的轻量级识别模型,推理效率高,可以部署在包含端侧设备的多种硬件设备中 |
| PP-OCRv4_server_rec |
推理模型/训练模型 |
80.61 |
8.75 / 2.49 |
36.93 / 36.93 |
71.2 M |
PP-OCRv4的服务器端模型,推理精度高,可以部署在多种不同的服务器上 |
| PP-OCRv3_mobile_rec |
推理模型/训练模型 |
72.96 |
3.89 / 1.16 |
8.72 / 3.56 |
9.2 M |
PP-OCRv3的轻量级识别模型,推理效率高,可以部署在包含端侧设备的多种硬件设备中 |
| 模型 | 模型下载链接 |
识别 Avg Accuracy(%) |
GPU推理耗时(ms) [常规模式 / 高性能模式] |
CPU推理耗时(ms) [常规模式 / 高性能模式] |
模型存储大小(M) |
介绍 |
| ch_SVTRv2_rec |
推理模型/训练模型 |
68.81 |
10.38 / 8.31 |
66.52 / 30.83 |
73.9 M |
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 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 / 1.23 |
17.20 / 4.18 |
6.8 M |
基于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 M |
基于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 M |
基于PP-OCRv3识别模型训练得到的超轻量拉丁文识别模型,支持拉丁文、数字识别 |
| arabic_PP-OCRv3_mobile_rec |
推理模型/训练模型 |
73.55 |
3.60 / 0.83 |
8.44 / 4.69 |
7.8 M |
基于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 M |
基于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 M |
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 M |
LaTeX_OCR_rec |
推理模型/训练模型 |
71.63 |
1088.89 / 1088.89 |
- / - |
89.7 M |
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的移动端印章文本检测模型,效率更高,适合在端侧部署 |
测试环境说明:
- 性能测试环境
- 测试数据集:
- 文档图像方向分类模型:PaddleX 自建的数据集,覆盖证件和文档等多个场景,包含 1000 张图片。
- 文本图像矫正模型:DocUNet。
- 版面区域检测模型:PaddleOCR 自建的版面区域分析数据集,包含中英文论文、杂志和研报等常见的 1w 张文档类型图片。
- PP-DocLayout_plus-L:PaddleOCR 自建的版面区域检测数据集,包含中英文论文、杂志、报纸、研报、PPT、试卷、课本等 1300 张文档类型图片。
- 表格结构识别模型:PaddleX 内部自建英文表格识别数据集。
- 文本检测模型:PaddleOCR 自建的中文数据集,覆盖街景、网图、文档、手写多个场景,其中检测包含 500 张图片。
- 中文识别模型: PaddleOCR 自建的中文数据集,覆盖街景、网图、文档、手写多个场景,其中文本识别包含 1.1w 张图片。
- ch_SVTRv2_rec:PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务A榜评估集。
- ch_RepSVTR_rec:PaddleOCR算法模型挑战赛 - 赛题一:OCR端到端识别任务B榜评估集。
- 英文识别模型:PaddleX 自建的英文数据集。
- 多语言识别模型:PaddleX 自建的多语种数据集。
- 文本行方向分类模型:PaddleX 自建的数据集,覆盖证件和文档等多个场景,包含 1000 张图片。
- 印章文本检测模型:PaddleX 自建的数据集,包含500张圆形印章图像。
- 硬件配置:
- GPU:NVIDIA Tesla T4
- CPU:Intel Xeon Gold 6271C @ 2.60GHz
- 软件环境:
- Ubuntu 20.04 / CUDA 11.8 / cuDNN 8.9 / TensorRT 8.6.1.6
- paddlepaddle 3.0.0 / paddlex 3.0.3
- 推理模式说明
| 模式 |
GPU配置 |
CPU配置 |
加速技术组合 |
| 常规模式 |
FP32精度 / 无TRT加速 |
FP32精度 / 8线程 |
PaddleInference |
| 高性能模式 |
选择先验精度类型和加速策略的最优组合 |
FP32精度 / 8线程 |
选择先验最优后端(Paddle/OpenVINO/TRT等) |
## 2. 快速开始
### 2.1 本地体验
在本地使用PP-DocTranslation产线前,请确保已完成PaddleX安装(参考[安装教程](../../../installation/installation.md))。该产线依赖分组为 `translation`。
使用前需准备大语言模型的API密钥,支持[百度云千帆平台](https://console.bce.baidu.com/qianfan/ais/console/onlineService)或符合OpenAI接口标准的本地大模型服务。
```python
from paddlex import create_pipeline
# 创建翻译产线
pipeline = create_pipeline(pipeline="PP-DocTranslation")
# 文档路径
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)实例化 create_pipeline 实例化产线对象,具体参数说明如下:
| 参数 |
参数说明 |
参数类型 |
默认值 |
pipeline |
产线名称或配置文件路径(设置为"PP-DocTranslation") |
str |
无 |
device |
推理设备(如"gpu:0", "npu:0", "cpu"等) |
str |
gpu |
use_hpip |
是否启用高性能推理插件 |
bool | None |
None |
hpi_config |
高性能推理配置 |
dict | None |
None |
initial_predictor |
是否初始化推理模块 |
bool |
True |
(2)调用PP-DocTranslation产线对象的 visual_predict() 方法获取视觉预测结果。该方法将返回一个 generator。以下是 visual_predict() 方法的参数及其说明:
| 参数 |
参数说明 |
参数类型 |
可选项 |
默认值 |
input |
待预测数据,支持多种输入类型,必填 |
Python Var|str|list |
- Python Var:如
numpy.ndarray 表示的图像数据
- str:如图像文件或者PDF文件的本地路径:
/root/data/img.jpg;如URL链接,如图像文件或PDF文件的网络URL:示例;如本地目录,该目录下需包含待预测图像,如本地路径:/root/data/(当前不支持目录中包含PDF文件的预测,PDF文件需要指定到具体文件路径)
- List:列表元素需为上述类型数据,如
[numpy.ndarray, numpy.ndarray],[\"/root/data/img1.jpg\", \"/root/data/img2.jpg\"],[\"/root/data1\", \"/root/data2\"]
|
None |
use_doc_orientation_classify |
是否使用文档方向分类模块 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
False |
use_doc_unwarping |
是否使用文档扭曲矫正模块 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
False |
use_textline_orientation |
是否使用文本行方向分类模块 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
None |
use_general_ocr |
是否使用 OCR 子产线 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
None |
use_seal_recognition |
是否使用印章识别子产线 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
None |
use_table_recognition |
是否使用表格识别子产线 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
None |
use_formula_recognition |
是否使用公式识别子产线 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
False |
use_chart_recognition |
是否使用图表识别子产线 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
False |
use_region_detection |
是否使用文档区域检测产线 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
None |
layout_threshold |
版面模型得分阈值 |
float|dict|None |
- float:
0-1 之间的任意浮点数;
- dict:
{0:0.1} key为类别ID,value为该类别的阈值;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为 0.5;
|
None |
layout_nms |
版面区域检测模型是否使用NMS后处理 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
None |
layout_unclip_ratio |
版面区域检测模型检测框的扩张系数 |
float|Tuple[float,float]|dict|None |
- float:任意大于
0 浮点数;
- Tuple[float,float]:在横纵两个方向各自的扩张系数;
- 字典, 字典的key为int类型,代表
cls_id, value为tuple类型,如{0: (1.1, 2.0)}, 表示将模型输出的第0类别检测框中心不变,宽度扩张1.1倍,高度扩张2.0倍
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为 1.0;
|
None |
layout_merge_bboxes_mode |
版面区域检测的重叠框过滤方式 |
str|dict|None |
- str:
large,small, union,分别表示重叠框过滤时选择保留大框,小框还是同时保留
- dict, 字典的key为int类型,代表
cls_id, value为str类型, 如{0: "large", 2: "small"}, 表示对第0类别检测框使用large模式,对第2类别检测框使用small模式
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为 large;
|
None |
text_det_limit_side_len |
文本检测的图像边长限制 |
int|None |
- int:大于
0 的任意整数;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为 960;
|
None |
text_det_limit_type |
文本检测的图像边长限制类型 |
str|None |
- str:支持
min 和 max,min 表示保证图像最短边不小于 det_limit_side_len,max 表示保证图像最长边不大于 limit_side_len
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为 max;
|
None |
text_det_thresh |
检测像素阈值,输出的概率图中,得分大于该阈值的像素点才会被认为是文字像素点 |
float|None |
- float:大于
0 的任意浮点数
- None:如果设置为
None, 将默认使用产线初始化的该参数值 0.3 |
None |
text_det_box_thresh |
检测框阈值,检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是文字区域 |
float|None |
- float:大于
0 的任意浮点数
- None:如果设置为
None, 将默认使用产线初始化的该参数值 0.6 |
None |
text_det_unclip_ratio |
文本检测扩张系数,使用该方法对文字区域进行扩张,该值越大,扩张的面积越大 |
float|None |
- float:大于
0 的任意浮点数
- None:如果设置为
None, 将默认使用产线初始化的该参数值 2.0 |
None |
text_rec_score_thresh |
文本识别阈值,得分大于该阈值的文本结果会被保留 |
float|None |
- float:大于
0 的任意浮点数
- None:如果设置为
None, 将默认使用产线初始化的该参数值 0.0。即不设阈值 |
None |
seal_det_limit_side_len |
印章检测的图像边长限制 |
int|None |
- int:大于
0 的任意整数;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为 960;
|
None |
seal_det_limit_type |
印章检测的图像边长限制类型 |
str|None |
- str:支持
min 和 max,min 表示保证图像最短边不小于 det_limit_side_len,max 表示保证图像最长边不大于 limit_side_len
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为 max;
|
None |
seal_det_thresh |
检测像素阈值,输出的概率图中,得分大于该阈值的像素点才会被认为是印章像素点 |
float|None |
- float:大于
0 的任意浮点数
- None:如果设置为
None, 将默认使用产线初始化的该参数值 0.3 |
None |
seal_det_box_thresh |
检测框阈值,检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是印章区域 |
float|None |
- float:大于
0 的任意浮点数
- None:如果设置为
None, 将默认使用产线初始化的该参数值 0.6 |
None |
seal_det_unclip_ratio |
印章检测扩张系数,使用该方法对文字区域进行扩张,该值越大,扩张的面积越大 |
float|None |
- float:大于
0 的任意浮点数
- None:如果设置为
None, 将默认使用产线初始化的该参数值 2.0 |
None |
seal_rec_score_thresh |
印章识别阈值,得分大于该阈值的文本结果会被保留 |
float|None |
- float:大于
0 的任意浮点数
- None:如果设置为
None, 将默认使用产线初始化的该参数值 0.0。即不设阈值 |
None |
use_wired_table_cells_trans_to_html |
是否启用有线表单元格检测结果直转HTML,默认False,启用则直接基于有线表单元格检测结果的几何关系构建HTML。 |
float|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为False;
| False |
use_wired_table_cells_trans_to_html |
是否启用无有线表单元格检测结果直转HTML,默认False,启用则直接基于有线表单元格检测结果的几何关系构建HTML。 |
float|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为False;
| False |
use_table_orientation_classify |
是否启用表格使用表格方向分类,启用时当图像中的表格存在90/180/270度旋转时,能够将方向校正并正确完成表格识别 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
True |
use_ocr_results_with_table_cells |
是否启用单元格切分OCR,启用时会基于单元格预测结果对OCR检测结果进行切分和重识别,避免出现文字缺失情况 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为True;
|
True |
use_e2e_wired_table_rec_model |
是否启用有线表端到端表格识别模式,启用则不使用单元格检测模型,只使用表格结构识别模型 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为False;
|
False |
use_e2e_wireless_table_rec_model |
是否启用无线表端到端表格识别模式,启用则不使用单元格检测模型,只使用表格结构识别模型 |
bool|None |
- bool:
True 或者 False;
- None:如果设置为
None, 将默认使用产线初始化的该参数值,初始化为False;
|
True |
(3)对视觉预测结果进行处理:每个样本的预测结果均为对应的Result对象,且支持打印、保存为图片、保存为json文件的操作:
| 方法 |
方法说明 |
参数 |
参数类型 |
参数说明 |
默认值 |
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 |
保存的文件路径,支持目录或文件路径 |
无 |
- 调用`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内容。
(4)调用 translate() 方法执行文档翻译,该方法会返回翻译的 markdown 原文和译文,是一个markdown对象,可以通过执行 save_to_markdown() 方法将需要的部分保存到本地。以下是 translate() 方法的相关参数说明:
| 参数 |
参数说明 |
参数类型 |
可选项 |
默认值 |
ori_md_info_list |
原始Markdown格式的数据列表,包含需要翻译的内容 |
List[Dict] |
必须为字典组成的列表,每个字典表示一个文档块 |
无默认值(必填) |
target_language |
目标翻译语言代码 |
str |
ISO 639-1语言代码(如"en"/"ja"/"fr") |
"zh" |
chunk_size |
翻译文本分块处理的字符数阈值 |
int |
大于0的整数 |
5000 |
task_description |
自定义任务描述提示词 |
str|None |
- str:自定义翻译任务说明文本
- None:使用默认任务描述
|
None |
output_format |
指定输出格式要求 |
str|None |
- str:格式规范(如"保持原Markdown结构")
- None:不添加额外格式约束
|
None |
rules_str |
自定义翻译规则说明 |
str|None |
- str:术语/风格规则文本
- None:不使用额外规则
|
None |
few_shot_demo_text_content |
少样本学习的示例文本内容 |
str|None |
|
None |
few_shot_demo_key_value_list |
结构化少样本示例数据 |
str|None |
- str:键值对格式的示例数据,可传入专业术语对照表
- None:不提供结构化示例
|
None |
glossary |
专业术语对照表 |
dict|None |
|
None |
llm_request_interval |
向大语言模型发送请求的时间间隔,单位为秒。该参数可用于防止过于频繁地调用大语言模型。 |
float |
大于等于0的浮点数 |
0 |
chat_bot_config |
大语言模型配置 |
dict|None |
- dict:模型参数配置字典
- None:使用默认配置
|
None |
此外,您可以获取版面解析产线配置文件,并加载配置文件进行预测。可执行如下命令将结果保存在 `my_path` 中:
```
paddlex --get_pipeline_config PP-DocTranslation --save_path ./my_path
```
若您获取了配置文件,即可对版面解析产线各项配置进行自定义,只需要修改 `create_pipeline` 方法中的 `pipeline` 参数值为产线配置文件路径即可。示例如下:
```python
from paddlex import create_pipeline
pipeline = create_pipeline(pipeline="./my_path/PP-DocTranslation.yaml")
# 文档路径
img_path = "document_sample.pdf"
# 大模型配置
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", # 替换为实际API密钥
}
# 执行版面解析
visual_predict_res = pipeline.visual_predict(
img_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.print()
layout_parsing_result.save_to_img("./output")
layout_parsing_result.save_to_json("./output")
# 文档翻译
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)
```
注: 配置文件中的参数为产线初始化参数,如果希望更改通用版面解析v3产线初始化参数,可以直接修改配置文件中的参数,并加载配置文件进行预测。同时,CLI 预测也支持传入配置文件,`--pipeline` 指定配置文件的路径即可。
## 3. 开发集成/部署
如果产线可以达到您对产线推理速度和精度的要求,您可以直接进行开发集成/部署。
若您需要将产线直接应用在您的Python项目中,可以参考 [2.2 Python脚本方式](#22-python脚本方式集成)中的示例代码。
此外,PaddleX 也提供了其他三种部署方式,详细说明如下:
🚀 高性能推理:在实际生产环境中,许多应用对部署策略的性能指标(尤其是响应速度)有着较严苛的标准,以确保系统的高效运行与用户体验的流畅性。为此,PaddleX 提供高性能推理插件,旨在对模型推理及前后处理进行深度性能优化,实现端到端流程的显著提速,详细的高性能推理流程请参考[PaddleX高性能推理指南](../../../pipeline_deploy/high_performance_inference.md)。
☁️ 服务化部署:服务化部署是实际生产环境中常见的一种部署形式。通过将推理功能封装为服务,客户端可以通过网络请求来访问这些服务,以获取推理结果。PaddleX 支持多种产线服务化部署方案,详细的产线服务化部署流程请参考[PaddleX服务化部署指南](../../../pipeline_deploy/serving.md)。
以下是基础服务化部署的API参考与多语言服务调用示例:
API参考
对于服务提供的主要操作:
- HTTP请求方法为POST。
- 请求体和响应体均为JSON数据(JSON对象)。
- 当请求处理成功时,响应状态码为
200,响应体的属性如下:
| 名称 |
类型 |
含义 |
logId |
string |
请求的UUID。 |
errorCode |
integer |
错误码。固定为0。 |
errorMsg |
string |
错误说明。固定为"Success"。 |
result |
object |
操作结果。 |
| 名称 |
类型 |
含义 |
logId |
string |
请求的UUID。 |
errorCode |
integer |
错误码。与响应状态码相同。 |
errorMsg |
string |
错误说明。 |
服务提供的主要操作如下:
使用计算机视觉模型对图像进行分析,获得OCR、表格识别结果等。
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 |
请参阅产线对象中 predict 方法的 use_doc_orientation_classify 参数相关说明。 |
否 |
useDocUnwarping |
boolean | null |
请参阅产线对象中 predict 方法的 use_doc_unwarping 参数相关说明。 |
否 |
useTextlineOrientation |
boolean | null |
请参阅产线对象中 predict 方法的 use_textline_orientation 参数相关说明。 |
否 |
useSealRecognition |
boolean | null |
请参阅产线对象中 predict 方法的 use_seal_recognition 参数相关说明。 |
否 |
useTableRecognition |
boolean | null |
请参阅产线对象中 predict 方法的 use_table_recognition 参数相关说明。 |
否 |
useFormulaRecognition |
boolean | null |
请参阅产线对象中 predict 方法的 use_formula_recognition 参数相关说明。 |
否 |
useChartRecognition |
boolean | null |
请参阅产线对象中 predict 方法的 use_chart_recognition 参数相关说明。 |
否 |
useRegionDetection |
boolean | null |
请参阅产线对象中 predict 方法的 use_region_detection 参数相关说明。 |
否 |
layoutThreshold |
number | object | null |
请参阅产线对象中 predict 方法的 layout_threshold 参数相关说明。 |
否 |
layoutNms |
boolean | null |
请参阅产线对象中 predict 方法的 layout_nms 参数相关说明。 |
否 |
layoutUnclipRatio |
number | array | object | null |
请参阅产线对象中 predict 方法的 layout_unclip_ratio 参数相关说明。 |
否 |
layoutMergeBboxesMode |
string | object | null |
请参阅产线对象中 predict 方法的 layout_merge_bboxes_mode 参数相关说明。 |
否 |
textDetLimitSideLen |
integer | null |
请参阅产线对象中 predict 方法的 text_det_limit_side_len 参数相关说明。 |
否 |
textDetLimitType |
string | null |
请参阅产线对象中 predict 方法的 text_det_limit_type 参数相关说明。 |
否 |
textDetThresh |
number | null |
请参阅产线对象中 predict 方法的 text_det_thresh 参数相关说明。 |
否 |
textDetBoxThresh |
number | null |
请参阅产线对象中 predict 方法的 text_det_box_thresh 参数相关说明。 |
否 |
textDetUnclipRatio |
number | null |
请参阅产线对象中 predict 方法的 text_det_unclip_ratio 参数相关说明。 |
否 |
textRecScoreThresh |
number | null |
请参阅产线对象中 predict 方法的 text_rec_score_thresh 参数相关说明。 |
否 |
sealDetLimitSideLen |
integer | null |
请参阅产线对象中 predict 方法的 seal_det_limit_side_len 参数相关说明。 |
否 |
sealDetLimitType |
string | null |
请参阅产线对象中 predict 方法的 seal_det_limit_type 参数相关说明。 |
否 |
sealDetThresh |
number | null |
请参阅产线对象中 predict 方法的 seal_det_thresh 参数相关说明。 |
否 |
sealDetBoxThresh |
number | null |
请参阅产线对象中 predict 方法的 seal_det_box_thresh 参数相关说明。 |
否 |
sealDetUnclipRatio |
number | null |
请参阅产线对象中 predict 方法的 seal_det_unclip_ratio 参数相关说明。 |
否 |
sealRecScoreThresh |
number | null |
请参阅产线对象中 predict 方法的 seal_rec_score_thresh 参数相关说明。 |
否 |
useWiredTableCellsTransToHtml |
boolean |
请参阅产线对象中 predict 方法的 use_wired_table_cells_trans_to_html 参数相关说明。 |
No |
useWirelessTableCellsTransToHtml |
boolean |
请参阅产线对象中 predict 方法的 use_wireless_table_cells_trans_to_html 参数相关说明。 |
No |
useTableOrientationClassify |
boolean |
请参阅产线对象中 predict 方法的 use_table_orientation_classify 参数相关说明。 |
No |
useOcrResultsWithTableCells |
boolean |
请参阅产线对象中 predict 方法的 use_ocr_results_with_table_cells 参数相关说明。 |
否 |
useE2eWiredTableRecModel |
boolean |
请参阅产线对象中 predict 方法的 use_e2e_wired_table_rec_model 参数相关说明。 |
否 |
useE2eWirelessTableRecModel |
boolean |
请参阅产线对象中 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 |
当前页面最后一个元素是否为段结束。 |
利用大模型翻译文档。
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 参数相关说明。 |
否 |
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一致。 |
注意:
在请求体中包含大模型调用的API key等敏感参数可能存在安全风险。如无必要,请在配置文件中设置这些参数,在请求时不传递。
多语言调用服务示例
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'}")
📱 端侧部署:端侧部署是一种将计算和数据处理功能放在用户设备本身上的方式,设备可以直接处理数据,而不需要依赖远程的服务器。PaddleX 支持将模型部署在 Android 等端侧设备上,详细的端侧部署流程请参考[PaddleX端侧部署指南](../../../pipeline_deploy/on_device_deployment.md)。
您可以根据需要选择合适的方式部署模型产线,进而进行后续的 AI 应用集成。
## 4. 二次开发
如果通用文档翻译产线中的版面解析v3子产线提供的默认模型权重在您的场景中,精度或速度不满意,您可以尝试利用您自己拥有的特定领域或应用场景的数据对现有模型进行进一步的微调,以提升通用版面解析v3子产线的在您的场景中的识别效果。
### 4.1 模型微调
由于通用版面解析v3子产线包含若干模块,模型产线的效果不及预期可能来自于其中任何一个模块。您可以对提取效果差的 case 进行分析,通过可视化图像,确定是哪个模块存在问题,并参考以下表格中对应的微调教程链接进行模型微调。
| 情形 |
微调模块 |
微调参考链接 |
| 版面区域检测不准,如印章、表格未检出等 |
版面区域检测模块 |
链接 |
| 表格结构识别不准 |
表格结构识别模块 |
链接 |
| 公式识别不准 |
公式识别模块 |
链接 |
| 印章文本存在漏检 |
印章文本检测模块 |
链接 |
| 文本存在漏检 |
文本检测模块 |
链接 |
| 文本内容都不准 |
文本识别模块 |
链接 |
| 垂直或者旋转文本行矫正不准 |
文本行方向分类模块 |
链接 |
| 整图旋转矫正不准 |
文档图像方向分类模块 |
链接 |
| 图像扭曲矫正不准 |
文本图像矫正模块 |
暂不支持微调 |
### 4.2 模型应用
当您使用私有数据集完成微调训练后,可获得本地模型权重文件。
若您需要使用微调后的模型权重,只需对产线配置文件做修改,将微调后模型权重的本地路径替换至产线配置文件中的对应位置即可:
```yaml
......
SubModules:
LayoutDetection:
module_name: layout_detection
model_name: PP-DocLayout_plus-L
model_dir: null # 替换为微调后的版面区域检测模型权重路径
......
SubPipelines:
GeneralOCR:
pipeline_name: OCR
text_type: general
use_doc_preprocessor: False
use_textline_orientation: False
SubModules:
TextDetection:
module_name: text_detection
model_name: PP-OCRv5_server_det
model_dir: null # 替换为微调后的文本测模型权重路径
limit_side_len: 960
limit_type: max
max_side_limit: 4000
thresh: 0.3
box_thresh: 0.6
unclip_ratio: 1.5
TextRecognition:
module_name: text_recognition
model_name: PP-OCRv5_server_rec
model_dir: null # 替换为微调后的文本识别模型权重路径
batch_size: 1
score_thresh: 0
......
```
随后, 参考本地体验中的命令行方式或 Python 脚本方式,加载修改后的产线配置文件即可。
## 5. 多硬件支持
PaddleX 支持英伟达 GPU、昆仑芯 XPU、昇腾 NPU 和寒武纪 MLU 等多种主流硬件设备,仅需设置 `device` 参数即可完成不同硬件之间的无缝切换。
例如,使用文档场景信息抽取v4产线时,将运行设备从英伟达 GPU 更改为昇腾 NPU,仅需将脚本中的 `device` 修改为 npu 即可:
```python
from paddlex import create_pipeline
pipeline = create_pipeline(
pipeline="PP-DocTranslation",
device="npu:0" # gpu:0 --> npu:0
)
```
若您想在更多种类的硬件上使用通用文档翻译产线,请参考[PaddleX多硬件使用指南](../../../other_devices_support/multi_devices_use_guide.md)。