PP-DocTranslation 产线使用教程¶
1. PP-DocTranslation 产线介绍¶
PP-DocTranslation 是飞桨提供的文档智能翻译解决方案,融合了先进的通用版面解析技术与大语言模型(LLM)能力,为您提供高效的文档智能翻译服务。该解决方案能够精准识别并提取文档中的各类元素,包括文本块、标题、段落、图片、表格及其他复杂版面结构,并在此基础之上实现高质量的多语种互译。PP-DocTranslation 支持多种主流语言间的相互翻译,尤其擅长处理排版复杂、上下文依赖性强的文档场景,力求输出精准自然、流畅专业的翻译结果。本产线同时提供了灵活的服务化部署方式,支持在多种硬件上使用多种编程语言调用。不仅如此,本产线也提供了二次开发的能力,您可以基于本产线在您自己的数据集上训练调优,训练后的模型也可以无缝集成。
PP-DocTranslation 产线中使用了 PP-StructureV3 子产线,因此具有 PP-StructureV3 产线的所有功能,更多关于 PP-StructureV3 产线的功能介绍和使用细节,可以点击 PP-StructureV3 产线文档 页面查看。
在本产线中,您可以根据下方的基准测试数据选择使用的模型。
👉模型列表详情
文档图像方向分类模块:
模型 | 模型下载链接 | 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 / paddleocr 3.0.3
- 测试数据集:
- 推理模式说明
模式 | GPU配置 | CPU配置 | 加速技术组合 |
---|---|---|---|
常规模式 | FP32精度 / 无TRT加速 | FP32精度 / 8线程 | PaddleInference |
高性能模式 | 选择先验精度类型和加速策略的最优组合 | FP32精度 / 8线程 | 选择先验最优后端(Paddle/OpenVINO/TRT等) |
2. 快速开始¶
在本地使用 PP-DocTranslation 产线前,请确保您已经按照安装教程完成了wheel包安装。
请注意,如果在执行过程中遇到程序失去响应、程序异常退出、内存资源耗尽、推理速度极慢等问题,请尝试参考文档调整配置,例如关闭不需要使用的功能或使用更轻量的模型。
使用前需准备大语言模型的API密钥,支持百度云千帆平台或符合OpenAI接口标准的本地大模型服务。
2.1 命令行方式体验¶
可以下载 测试文件,使用一行命令即可快速体验产线效果:
paddleocr pp_doctranslation -i vehicle_certificate-1.png --target_language en --qianfan_api_key your_api_key
命令行支持更多参数设置,点击展开以查看命令行参数的详细说明
参数 | 参数说明 | 参数类型 | 默认值 |
---|---|---|---|
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 |
是否使用文档方向分类模块。 | bool |
False |
use_doc_unwarping |
是否使用文本图像矫正模块。 | bool |
False |
use_textline_orientation |
是否加载并使用文本行方向分类模块。如果不设置,将使用产线初始化的该参数值,默认初始化为True 。 |
bool |
|
use_seal_recognition |
是否加载并使用印章文本识别子产线。如果不设置,将使用产线初始化的该参数值,默认初始化为True 。 |
bool |
|
use_table_recognition |
是否加载并使用表格识别子产线。如果不设置,将使用产线初始化的该参数值,默认初始化为True 。 |
bool |
|
use_formula_recognition |
是否加载并使用公式识别子产线。如果不设置,将使用产线初始化的该参数值,默认初始化为True 。 |
bool |
|
use_chart_recognition |
是否使用图表解析模块。 | bool |
False |
use_region_detection |
是否加载并使用文档区域检测子产线。如果不设置,将使用产线初始化的该参数值,默认初始化为True 。 |
bool |
|
device |
用于推理的设备。支持指定具体卡号:
|
str |
|
enable_hpi |
是否启用高性能推理。 | bool |
False |
use_tensorrt |
是否启用 Paddle Inference 的 TensorRT 子图引擎。如果模型不支持通过 TensorRT 加速,即使设置了此标志,也不会使用加速。 对于 CUDA 11.8 版本的飞桨,兼容的 TensorRT 版本为 8.x(x>=6),建议安装 TensorRT 8.6.1.6。 对于 CUDA 12.6 版本的飞桨,兼容的 TensorRT 版本为 10.x(x>=5),建议安装 TensorRT 10.5.0.18。 |
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脚本方式集成¶
命令行方式是为了快速体验查看效果,一般来说,在项目中,往往需要通过代码集成,可以下载 测试文件,使用如下示例代码进行推理:
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)调用 PPDocTranslation
实例化 PP-DocTranslation 产线对象。
相关参数说明如下:
参数 | 参数说明 | 参数类型 | 默认值 |
---|---|---|---|
layout_detection_model_name |
版面区域检测的模型名称。如果设置为None ,将会使用产线默认模型。 |
str|None |
None |
layout_detection_model_dir |
版面区域检测模型的目录路径。如果设置为None ,将会下载官方模型。 |
str|None |
None |
layout_threshold |
版面模型得分阈值。
|
float|dict|None |
None |
layout_nms |
版面检测是否使用后处理NMS。如果设置为None ,将使用产线初始化的该参数值,默认初始化为True 。 |
bool|None |
None |
layout_unclip_ratio |
版面区域检测模型检测框的扩张系数。
|
float|Tuple[float,float]|dict|None |
None |
layout_merge_bboxes_mode |
版面区域检测的重叠框过滤方式。
|
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 |
文本检测的图像边长限制。
|
int|None |
None |
text_det_limit_type |
文本检测的图像边长限制类型。
|
str|None |
None |
text_det_thresh |
检测像素阈值,输出的概率图中,得分大于该阈值的像素点才会被认为是文字像素点。
|
float|None |
None |
text_det_box_thresh |
检测框阈值,检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是文字区域。
|
float|None |
None |
text_det_unclip_ratio |
文本检测扩张系数,使用该方法对文字区域进行扩张,该值越大,扩张的面积越大。
|
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 |
文本识别阈值,得分大于该阈值的文本结果会被保留。
|
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 |
印章文本检测的图像边长限制。
|
int|None |
None |
seal_det_limit_type |
印章文本检测的图像边长限制类型。
|
str|None |
None |
seal_det_thresh |
检测像素阈值,输出的概率图中,得分大于该阈值的像素点才会被认为是文字像素点。
|
float|None |
None |
seal_det_box_thresh |
检测框阈值,检测结果边框内,所有像素点的平均得分大于该阈值时,该结果会被认为是文字区域。
|
float|None |
None |
seal_det_unclip_ratio |
印章文本检测扩张系数,使用该方法对文字区域进行扩张,该值越大,扩张的面积越大。
|
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 |
印章文本识别阈值,得分大于该阈值的文本结果会被保留。
|
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 ,将使用产线初始化的该参数值,默认初始化为True 。 |
bool|None |
None |
use_doc_unwarping |
是否加载并使用文本图像矫正模块。如果设置为None ,将使用产线初始化的该参数值,默认初始化为True 。 |
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 ,将使用产线初始化的该参数值,默认初始化为True 。 |
bool|None |
None |
use_region_detection |
是否加载并使用文档区域检测子产线。如果设置为None ,将使用产线初始化的该参数值,默认初始化为True 。 |
bool|None |
None |
chat_bot_config |
大语言模型配置信息。配置内容为如下dict:
|
dict|None |
None |
device |
用于推理的设备。支持指定具体卡号:
|
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。 对于 CUDA 12.6 版本的飞桨,兼容的 TensorRT 版本为 10.x(x>=5),建议安装 TensorRT 10.5.0.18。 |
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 |
待预测数据,支持多种输入类型,必填。
|
Python Var|str|list |
|
use_doc_orientation_classify |
是否在推理时使用文档方向分类模块。设置为None 表示使用实例化参数,否则该参数优先级更高。 |
bool|None |
False |
use_doc_unwarping |
是否在推理时使用文本图像矫正模块。设置为None 表示使用实例化参数,否则该参数优先级更高。 |
bool|None |
False |
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 |
False |
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() |
打印结果到终端 | 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 |
chat_bot_config |
大语言模型配置。设置为None 表示使用实例化参数,否则该参数优先级更高。 |
dict|None |
None |
llm_request_interval |
向大语言模型发送请求的时间间隔,单位为秒。该参数可用于防止过于频繁地调用大语言模型。 | float |
0 |
3. 开发集成/部署¶
如果产线可以达到您对产线推理速度和精度的要求,您可以直接进行开发集成/部署。
若您需要将产线直接应用在您的Python项目中,可以参考 2.2 Python脚本方式中的示例代码。
此外,PaddleOCR 也提供了其他两种部署方式,详细说明如下:
🚀 高性能推理:在实际生产环境中,许多应用对部署策略的性能指标(尤其是响应速度)有着较严苛的标准,以确保系统的高效运行与用户体验的流畅性。为此,PaddleOCR 提供高性能推理功能,旨在对模型推理及前后处理进行深度性能优化,实现端到端流程的显著提速,详细的高性能推理流程请参考高性能推理。
☁️ 服务化部署:服务化部署是实际生产环境中常见的一种部署形式。通过将推理功能封装为服务,客户端可以通过网络请求来访问这些服务,以获取推理结果。详细的产线服务化部署流程请参考服务化部署。
以下是基础服务化部署的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 |
错误说明。 |
服务提供的主要操作如下:
analyzeImages
使用计算机视觉模型对图像进行分析,获得OCR、表格识别结果等。
POST /doctrans-visual
- 请求体的属性如下:
名称 | 类型 | 含义 | 是否必填 |
---|---|---|---|
file |
string |
服务器可访问的图像文件或PDF文件的URL,或上述类型文件内容的Base64编码结果。默认对于超过10页的PDF文件,只有前10页的内容会被处理。 要解除页数限制,请在产线配置文件中添加以下配置:
|
是 |
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 |
是否返回可视化结果图以及处理过程中的中间图像等。
例如,在产线配置文件中添加如下字段:
将默认不返回图像,通过请求体中的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 参数相关说明。 |
否 |
chatBotConfig |
object | null |
请参阅产线对象中 translate 方法的 chat_bot_config 参数相关说明。 |
否 |
llmRequestInterval |
number | null |
请参阅产线对象中 translate 方法的 llm_request_interval 参数相关说明。 |
否 |
- 请求处理成功时,响应体的
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 进行分析,通过可视化图像,确定是哪个模块存在问题,并参考以下表格中对应的微调教程链接进行模型微调。
情形 | 微调模块 | 微调参考链接 |
---|---|---|
版面区域检测不准,如印章、表格未检出等 | 版面区域检测模块 | 链接 |
表格结构识别不准 | 表格结构识别模块 | 链接 |
公式识别不准 | 公式识别模块 | 链接 |
印章文本存在漏检 | 印章文本检测模块 | 链接 |
文本存在漏检 | 文本检测模块 | 链接 |
文本内容都不准 | 文本识别模块 | 链接 |
垂直或者旋转文本行矫正不准 | 文本行方向分类模块 | 链接 |
整图旋转矫正不准 | 文档图像方向分类模块 | 链接 |
图像扭曲矫正不准 | 文本图像矫正模块 | 暂不支持微调 |
4.2 模型应用¶
当您使用私有数据集完成微调训练后,可获得本地模型权重文件,然后可以通过自定义产线配置文件的方式,使用微调后的模型权重。
- 获取产线配置文件
可调用 PaddleOCR 中 PP-DocTranslation 产线对象的 export_paddlex_config_to_yaml
方法,将当前产线配置导出为 YAML 文件:
from paddleocr import PPDocTranslation
pipeline = PPDocTranslation()
pipeline.export_paddlex_config_to_yaml("PP-DocTranslation.yaml")
- 修改配置文件
在得到默认的产线配置文件后,将微调后模型权重的本地路径替换至产线配置文件中的对应位置即可。例如
......
SubModules:
TextDetection:
module_name: text_detection
model_name: PP-OCRv5_server_det
model_dir: null # 替换为微调后的文本检测模型权重路径
limit_side_len: 960
limit_type: max
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
......
在产线配置文件中,不仅包含 PaddleOCR CLI 和 Python API 支持的参数,还可进行更多高级配置,具体信息可在 PaddleX模型产线使用概览 中找到对应的产线使用教程,参考其中的详细说明,根据需求调整各项配置。
- 在 CLI 中加载产线配置文件
在修改完成配置文件后,通过命令行的 --paddlex_config
参数指定修改后的产线配置文件的路径,PaddleOCR 会读取其中的内容作为产线配置。示例如下:
- 在 Python API 中加载产线配置文件
初始化产线对象时,可通过 paddlex_config
参数传入 PaddleX 产线配置文件路径或配置dict,PaddleOCR 会读取其中的内容作为产线配置。示例如下:
from paddleocr import PPDocTranslation
pipeline = PPDocTranslation(paddlex_config="PP-DocTranslation.yaml")