通用文档翻译产线(PP-DocTranslation)是飞桨提供的文档智能翻译解决方案,融合了先进的通用版面解析技术与大语言模型(LLM)能力,为您提供高效的文档智能翻译服务。该解决方案能够精准识别并提取文档中的各类元素,包括文本块、标题、段落、图片、表格及其他复杂版面结构,并在此基础之上实现高质量的多语种互译。PP-DocTranslation 支持多种主流语言间的相互翻译,尤其擅长处理排版复杂、上下文依赖性强的文档场景,力求输出精准自然、流畅专业的翻译结果。本产线同时提供了灵活的服务化部署方式,支持在多种硬件上使用多种编程语言调用。不仅如此,本产线也提供了二次开发的能力,您可以基于本产线在您自己的数据集上训练调优,训练后的模型也可以无缝集成。
通用文档翻译产线中使用了通用版面解析v3子产线,因此具有通用版面解析v3产线的所有功能,更多关于通用版面解析v3产线的功能介绍和使用细节,可以点击 通用版面解析v3产线文档 页面查看。
如您更考虑模型精度,请选择精度较高的模型,如您更考虑模型推理速度,请选择推理速度较快的模型,如您更考虑模型存储大小,请选择存储大小较小的模型。
文档图像方向分类模块:
| 模型 | 模型下载链接 | 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表现出显著的提升,适用于简单印刷公式、复杂印刷公式、手写公式等场景。 |
|---|
印章文本检测模块:
| 模型 | 模型下载链接 | 检测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等) |
在本地使用PP-DocTranslation产线前,请确保已完成PaddleX安装(参考安装教程)。该产线依赖分组为 translation。
使用前需准备大语言模型的API密钥,支持百度云千帆平台或符合OpenAI接口标准的本地大模型服务。
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文件夹中。
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 |
visual_predict() 方法获取视觉预测结果。该方法将返回一个 generator。以下是 visual_predict() 方法的参数及其说明:| 参数 | 参数说明 | 参数类型 | 可选项 | 默认值 |
|---|---|---|---|---|
input |
待预测数据,支持多种输入类型,必填 | Python Var|str|list |
|
None |
use_doc_orientation_classify |
是否使用文档方向分类模块 | bool|None |
|
False |
use_doc_unwarping |
是否使用文档扭曲矫正模块 | bool|None |
|
False |
use_textline_orientation |
是否使用文本行方向分类模块 | bool|None |
|
None |
use_general_ocr |
是否使用 OCR 子产线 | bool|None |
|
None |
use_seal_recognition |
是否使用印章识别子产线 | bool|None |
|
None |
use_table_recognition |
是否使用表格识别子产线 | bool|None |
|
None |
use_formula_recognition |
是否使用公式识别子产线 | bool|None |
|
False |
use_chart_recognition |
是否使用图表识别子产线 | bool|None |
|
False |
use_region_detection |
是否使用文档区域检测产线 | bool|None |
|
None |
layout_threshold |
版面模型得分阈值 | float|dict|None |
|
None |
layout_nms |
版面区域检测模型是否使用NMS后处理 | bool|None |
|
None |
layout_unclip_ratio |
版面区域检测模型检测框的扩张系数 | float|Tuple[float,float]|dict|None |
|
None |
layout_merge_bboxes_mode |
版面区域检测的重叠框过滤方式 | str|dict|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 |
text_rec_score_thresh |
文本识别阈值,得分大于该阈值的文本结果会被保留 | float|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_rec_score_thresh |
印章识别阈值,得分大于该阈值的文本结果会被保留 | float|None |
|
None |
use_wired_table_cells_trans_to_html |
是否启用有线表单元格检测结果直转HTML,默认False,启用则直接基于有线表单元格检测结果的几何关系构建HTML。 | float|None |
| False |
use_wired_table_cells_trans_to_html |
是否启用无有线表单元格检测结果直转HTML,默认False,启用则直接基于有线表单元格检测结果的几何关系构建HTML。 | float|None |
| False |
use_table_orientation_classify |
是否启用表格使用表格方向分类,启用时当图像中的表格存在90/180/270度旋转时,能够将方向校正并正确完成表格识别 | bool|None |
|
True |
use_ocr_results_with_table_cells |
是否启用单元格切分OCR,启用时会基于单元格预测结果对OCR检测结果进行切分和重识别,避免出现文字缺失情况 | bool|None |
|
True |
use_e2e_wired_table_rec_model |
是否启用有线表端到端表格识别模式,启用则不使用单元格检测模型,只使用表格结构识别模型 | bool|None |
|
False |
use_e2e_wireless_table_rec_model |
是否启用无线表端到端表格识别模式,启用则不使用单元格检测模型,只使用表格结构识别模型 | bool|None |
|
True |
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 |
保存的文件路径,支持目录或文件路径 | 无 |
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 |
|
None |
output_format |
指定输出格式要求 | 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 |
大语言模型配置 | dict|None |
|
None |
此外,您可以获取版面解析产线配置文件,并加载配置文件进行预测。可执行如下命令将结果保存在 my_path 中:
paddlex --get_pipeline_config PP-DocTranslation --save_path ./my_path
若您获取了配置文件,即可对版面解析产线各项配置进行自定义,只需要修改 create_pipeline 方法中的 pipeline 参数值为产线配置文件路径即可。示例如下:
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 指定配置文件的路径即可。
如果产线可以达到您对产线推理速度和精度的要求,您可以直接进行开发集成/部署。
若您需要将产线直接应用在您的Python项目中,可以参考 2.2 Python脚本方式中的示例代码。
此外,PaddleX 也提供了其他三种部署方式,详细说明如下:
🚀 高性能推理:在实际生产环境中,许多应用对部署策略的性能指标(尤其是响应速度)有着较严苛的标准,以确保系统的高效运行与用户体验的流畅性。为此,PaddleX 提供高性能推理插件,旨在对模型推理及前后处理进行深度性能优化,实现端到端流程的显著提速,详细的高性能推理流程请参考PaddleX高性能推理指南。
☁️ 服务化部署:服务化部署是实际生产环境中常见的一种部署形式。通过将推理功能封装为服务,客户端可以通过网络请求来访问这些服务,以获取推理结果。PaddleX 支持多种产线服务化部署方案,详细的产线服务化部署流程请参考PaddleX服务化部署指南。
以下是基础服务化部署的API参考与多语言服务调用示例:
对于服务提供的主要操作: 服务提供的主要操作如下: 使用计算机视觉模型对图像进行分析,获得OCR、表格识别结果等。API参考
200,响应体的属性如下:
名称
类型
含义
logIdstring请求的UUID。
errorCodeinteger错误码。固定为
0。
errorMsgstring错误说明。固定为
"Success"。
resultobject操作结果。
名称
类型
含义
logIdstring请求的UUID。
errorCodeinteger错误码。与响应状态码相同。
errorMsgstring错误说明。
analyzeImagesPOST /doctrans-visual
名称
类型
含义
是否必填
filestring服务器可访问的图像文件或PDF文件的URL,或上述类型文件内容的Base64编码结果。默认对于超过10页的PDF文件,只有前10页的内容会被处理。
要解除页数限制,请在产线配置文件中添加以下配置:
Serving:
extra:
max_num_input_imgs: null
是
fileTypeinteger|null文件类型。
0表示PDF文件,1表示图像文件。若请求体无此属性,则将根据URL推断文件类型。否
useDocOrientationClassifyboolean | null请参阅产线对象中
predict 方法的 use_doc_orientation_classify 参数相关说明。否
useDocUnwarpingboolean | null请参阅产线对象中
predict 方法的 use_doc_unwarping 参数相关说明。否
useTextlineOrientationboolean | null请参阅产线对象中
predict 方法的 use_textline_orientation 参数相关说明。否
useSealRecognitionboolean | null请参阅产线对象中
predict 方法的 use_seal_recognition 参数相关说明。否
useTableRecognitionboolean | null请参阅产线对象中
predict 方法的 use_table_recognition 参数相关说明。否
useFormulaRecognitionboolean | null请参阅产线对象中
predict 方法的 use_formula_recognition 参数相关说明。否
useChartRecognitionboolean | null请参阅产线对象中
predict 方法的 use_chart_recognition 参数相关说明。否
useRegionDetectionboolean | null请参阅产线对象中
predict 方法的 use_region_detection 参数相关说明。否
layoutThresholdnumber | object | null请参阅产线对象中
predict 方法的 layout_threshold 参数相关说明。否
layoutNmsboolean | null请参阅产线对象中
predict 方法的 layout_nms 参数相关说明。否
layoutUnclipRationumber | array | object | null请参阅产线对象中
predict 方法的 layout_unclip_ratio 参数相关说明。否
layoutMergeBboxesModestring | object | null请参阅产线对象中
predict 方法的 layout_merge_bboxes_mode 参数相关说明。否
textDetLimitSideLeninteger | null请参阅产线对象中
predict 方法的 text_det_limit_side_len 参数相关说明。否
textDetLimitTypestring | null请参阅产线对象中
predict 方法的 text_det_limit_type 参数相关说明。否
textDetThreshnumber | null请参阅产线对象中
predict 方法的 text_det_thresh 参数相关说明。否
textDetBoxThreshnumber | null请参阅产线对象中
predict 方法的 text_det_box_thresh 参数相关说明。否
textDetUnclipRationumber | null请参阅产线对象中
predict 方法的 text_det_unclip_ratio 参数相关说明。否
textRecScoreThreshnumber | null请参阅产线对象中
predict 方法的 text_rec_score_thresh 参数相关说明。否
sealDetLimitSideLeninteger | null请参阅产线对象中
predict 方法的 seal_det_limit_side_len 参数相关说明。否
sealDetLimitTypestring | null请参阅产线对象中
predict 方法的 seal_det_limit_type 参数相关说明。否
sealDetThreshnumber | null请参阅产线对象中
predict 方法的 seal_det_thresh 参数相关说明。否
sealDetBoxThreshnumber | null请参阅产线对象中
predict 方法的 seal_det_box_thresh 参数相关说明。否
sealDetUnclipRationumber | null请参阅产线对象中
predict 方法的 seal_det_unclip_ratio 参数相关说明。否
sealRecScoreThreshnumber | null请参阅产线对象中
predict 方法的 seal_rec_score_thresh 参数相关说明。否
useWiredTableCellsTransToHtmlboolean请参阅产线对象中
predict 方法的 use_wired_table_cells_trans_to_html 参数相关说明。No
useWirelessTableCellsTransToHtmlboolean请参阅产线对象中
predict 方法的 use_wireless_table_cells_trans_to_html 参数相关说明。No
useTableOrientationClassifyboolean请参阅产线对象中
predict 方法的 use_table_orientation_classify 参数相关说明。No
useOcrResultsWithTableCellsboolean请参阅产线对象中
predict 方法的 use_ocr_results_with_table_cells 参数相关说明。否
useE2eWiredTableRecModelboolean请参阅产线对象中
predict 方法的 use_e2e_wired_table_rec_model 参数相关说明。否
useE2eWirelessTableRecModelboolean请参阅产线对象中
predict 方法的 use_e2e_wireless_table_rec_model 参数相关说明。否
visualizeboolean | 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 参数相关说明。 |
否 |
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一致。 |
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端侧部署指南。
您可以根据需要选择合适的方式部署模型产线,进而进行后续的 AI 应用集成。
如果通用文档翻译产线中的版面解析v3子产线提供的默认模型权重在您的场景中,精度或速度不满意,您可以尝试利用您自己拥有的特定领域或应用场景的数据对现有模型进行进一步的微调,以提升通用版面解析v3子产线的在您的场景中的识别效果。
由于通用版面解析v3子产线包含若干模块,模型产线的效果不及预期可能来自于其中任何一个模块。您可以对提取效果差的 case 进行分析,通过可视化图像,确定是哪个模块存在问题,并参考以下表格中对应的微调教程链接进行模型微调。
| 情形 | 微调模块 | 微调参考链接 |
|---|---|---|
| 版面区域检测不准,如印章、表格未检出等 | 版面区域检测模块 | 链接 |
| 表格结构识别不准 | 表格结构识别模块 | 链接 |
| 公式识别不准 | 公式识别模块 | 链接 |
| 印章文本存在漏检 | 印章文本检测模块 | 链接 |
| 文本存在漏检 | 文本检测模块 | 链接 |
| 文本内容都不准 | 文本识别模块 | 链接 |
| 垂直或者旋转文本行矫正不准 | 文本行方向分类模块 | 链接 |
| 整图旋转矫正不准 | 文档图像方向分类模块 | 链接 |
| 图像扭曲矫正不准 | 文本图像矫正模块 | 暂不支持微调 |
当您使用私有数据集完成微调训练后,可获得本地模型权重文件。
若您需要使用微调后的模型权重,只需对产线配置文件做修改,将微调后模型权重的本地路径替换至产线配置文件中的对应位置即可:
......
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 脚本方式,加载修改后的产线配置文件即可。
PaddleX 支持英伟达 GPU、昆仑芯 XPU、昇腾 NPU 和寒武纪 MLU 等多种主流硬件设备,仅需设置 device 参数即可完成不同硬件之间的无缝切换。
例如,使用文档场景信息抽取v4产线时,将运行设备从英伟达 GPU 更改为昇腾 NPU,仅需将脚本中的 device 修改为 npu 即可:
from paddlex import create_pipeline
pipeline = create_pipeline(
pipeline="PP-DocTranslation",
device="npu:0" # gpu:0 --> npu:0
)
若您想在更多种类的硬件上使用通用文档翻译产线,请参考PaddleX多硬件使用指南。