pdf_to_markdown 接口平滑迁移到新版 xParse API,并介绍新增的异步处理能力。
文中所有参数映射、字段名与默认值均以 TextIn 官方接口文档为准。
为什么迁移
新版 xParse API 对旧版pdf_to_markdown 做了全面升级,核心优势:
更轻量的数据结构
标准化的 Element 模型,语义类型清晰(Title / NarrativeText / Table / Image / Formula),JSON 体积更小
标准输入输出协议
统一的请求配置(config)与响应结构(schema),便于集成与迁移
引擎可替换
支持 TextIn / MinerU / PaddleOCR / GUI 多引擎,可按场景选最优或对比效果
异步处理能力
新增异步接口,适合大文件(建议 >10 页)和批量场景,避免 HTTP 超时;支持 Webhook 回调
坐标系标准化
归一化坐标(0~1),不再依赖 dpi 参数
更丰富的内嵌元素
行内公式、手写体、复选框(checkbox)、内嵌图片
接口变更总览
| 维度 | 旧版 | 新版 |
|---|---|---|
| URL(同步) | /ai/service/v1/pdf_to_markdown | /api/v1/xparse/parse/sync |
| URL(异步) | ❌ 不支持 | /api/v1/xparse/parse/async |
| 任务状态查询 | ❌ 不支持 | GET /api/v1/xparse/parse/async/{job_id} |
| 文件上传 | Body 二进制流(application/octet-stream) | multipart/form-data,字段名 file |
| URL 文件方式 | Body 文本(text/plain) | multipart/form-data,字段名 file_url |
| 参数传入位置 | Query String | config JSON 字段(form-data 内) |
| 参数开关类型 | 整数 0 / 1 | Boolean false / true |
| 响应根节点 | result | data |
| 坐标系 | 绝对像素(受 dpi 影响) | 归一化值(0~1) |
| 页码起始 | page_id(起始值 1-based) | page_number(1-based,第一页为 1) |
入参迁移指南
请求方式变更
- 旧版:Query String + 二进制 Body
- 新版:multipart/form-data + config JSON
新版 config 结构总览
新版参数不再是扁平的 Query String,而是放在 form-data 的config 字段里。该字段的值是一个 JSON,内部又分四个区块(注意:其中一个区块也叫 config,下文以「config 字段值 → config 区块」指代,切勿写成 {"config":{"config":{...}}} 之外的多层嵌套):
| 区块 | 作用 |
|---|---|
| document | 文档本身处理参数(如加密 PDF 密码) |
| capabilities | 解析策略与返回格式开关(决定返回哪些字段、表格格式等) |
| scope | 处理范围(如页码区间) |
| config(区块) | 引擎选择(force_engine)+ 引擎级自定义参数(engine_params) |
关键认知:旧版的
parse_mode、formula_level 等”引擎行为参数”在新版并未消失,而是下沉到了 config 区块的 engine_params 里。它们与 capabilities 里的”返回内容开关”是两个不同维度,迁移时不要混淆。(注:dpi 是例外,新版已彻底移除。)参数字段映射表(核心)
下表已按官方文档逐项核对。「新版参数」列给出在config 字段值内的相对路径(engine_params 即 config 区块下的 engine_params)。
| 旧版参数 (Query) | 旧默认 | 新版参数 | 新默认 | 变更说明 |
|---|---|---|---|---|
pdf_pwd | — | document.password | — | 仅改位置 |
page_start +page_count | 0 / 1000 | scope.page_range(如 "1-10") | — | 合并为区间字符串 |
apply_document_tree(0/1) | 1 | capabilities.include_hierarchy | true | int→bool |
table_flavor(md/html/none) | html | capabilities.table_view(markdown/html) | html | ”md” → “markdown" "none” 已移除 |
get_image(none/page/objects/both) | none | capabilities.include_image_data(是否返回) | false | 详见下方说明 |
image_output_type(base64str/default) | default | engine_params.image_output_type(url/base64) | url | 取值体系不同: 旧 base64str/default → 新 url/base64 |
formula_level(0/1/2) | 0 | engine_params.formula_level(0/1) | 0 | ⚠️ 保留在引擎参数, 取值改为 0/1 |
page_details(0/1) | 1 | capabilities.pages | false | ⚠️ 默认反转,需显式 true |
char_details(0/1) | 0 | capabilities.include_char_details | false | int→bool |
catalog_details(0/1) | 0 | capabilities.title_tree | false | 改名 |
crop_dewarp(0/1) | 0 | capabilities.crop_dewarp | false | int→bool |
remove_watermark(0/1) | 0 | capabilities.remove_watermark | false | int→bool |
parse_mode(auto/scan/lite/parse) | scan | engine_params.parse_mode(auto/scan/parse/lite/vlm) | 见下方说明 | ✅ 保留;新增 vlm 模式 |
raw_ocr(0/1) | 0 | 近似改用capabilities.include_char_details | false | ⚠️ 语义非完全等价 |
dpi(72/144/216) | 144 | ❌ 已移除 | — | 新版用归一化坐标, 无对应参数 |
get_excel | 0 | ❌ 已移除 | — | 新版不支持 Excel 输出 |
markdown_details | 1 | ❌ 已移除 | — | elements 始终返回 |
get_image 迁移注意:旧版
get_image 有 none/page/objects/both 四档语义(整页图 / 子图 / 两者)。新版通过组合 capabilities.pages 和 capabilities.include_image_data 实现:- 当
pages=true时,include_image_data=true/false对应get_image=both/page - 当
pages=false时,include_image_data=true/false对应get_image=objects/none
engine_params.image_output_type(url/base64)控制。新增能力(仅新版支持)
| 参数 | 默认 | 说明 |
|---|---|---|
capabilities.include_inline_objects | false | 返回文本内的细粒度行内对象:公式、手写、复选框、内嵌图片 |
capabilities.include_table_structure | false | 返回表格结构化数据(行列数、单元格坐标、跨行跨列、单元格内容类型) |
config.force_engine | textin | 指定引擎:textin(默认)/ mineru / paddle_ocr / textin_gui。各引擎适用场景与限制以官方文档为准 |
config.engine_params | — | 引擎自定义参数(专家模式),不同引擎支持的参数不同 |
出参迁移指南
顶层结构变化
- 旧版
- 新版
主体数据字段映射
旧版 result.* | 新版 data.* | 变更说明 |
|---|---|---|
markdown | markdown | 不变 |
detail | elements | 改名,结构重组(见下节) |
pages | pages | 字段名相同,内部结构重组 |
catalog(含 toc) | title_tree | 改名,结构变为节点数组 |
total_page_number | metadata.page_count | 下沉至 metadata |
valid_page_number | success_count | 改名 |
excel_base64 | ❌ 已移除 | 新版不支持 Excel |
| (无) | schema_version / file_id / job_id / metadata | 新增字段 |
元素结构变化(detail → elements)
旧版detail[] 与新版 elements[] 的字段对照:
旧版 detail[] | 新版 elements[] | 变更说明 |
|---|---|---|
paragraph_id(整数) | element_id(字符串,如 el_001) | ID 类型由整数改为字符串 |
type(“paragraph” / “table” 等) | type(语义字符串) | 改为 Title / NarrativeText / Table / Image / Formula 等语义类型 |
text | text | 不变 |
position(绝对像素) | coordinates(归一化 0~1) | ⚠️ 坐标系变化,需换算 |
page_id | page_number | 页码起始位置相同(具体说明见下节) |
outline_level | metadata.category_depth | 层级信息下沉至 metadata |
cells(表格单元格) | table_structure.cells | 下沉至 table_structure 子对象 |
caption_id | metadata.ref_element_id | 关联关系下沉至 metadata |
tags(formula/handwritten) | objects[](内嵌对象) | 改为结构化的行内对象数组 |
| (无) | metadata.parent_id / children_ids | 新增:父子层级关系 |
| (无) | image_data | 新增:图片 URL / MIME / base64 |
| (无) | char_details | 新增:字符级详情 |
新版元素示例
坐标系与页码换算
坐标换算
页码说明
- 旧版:
page_id,1-based(第一页为 1) - 新版:
page_number,1-based(第一页为 1)
归一化
coordinates 8 个值的点序为:左上 → 右上 → 右下 → 左下。异步接口使用指南
旧版不支持异步。新版异步接口适合大文件(建议 >10 页)或批量处理,避免 HTTP 连接超时。接口概览
| 接口 | HTTP | URL | 说明 |
|---|---|---|---|
| 提交异步任务 | POST | /api/v1/xparse/parse/async | 上传文件,返回 job_id |
| 查询状态/结果 | GET | /api/v1/xparse/parse/async/{job_id} | 轮询状态,完成后含 result_url |
任务状态枚举
| 状态 | 含义 |
|---|---|
pending | 排队等待中 |
in_progress | 处理中 |
completed | 已完成(响应含 result_url,下载该 URL 获取完整结果) |
failed | 处理失败(响应含 message 错误说明) |
异步提交成功仅返回
{"data": {"job_id": "..."}},完整解析结果需通过 result_url 二次下载。result_url 返回的数据结构与同步接口 data 一致。异步调用完整流程(Python)
Webhook 回调(推荐生产环境)
提交任务时附带webhook 参数,任务完成/失败后系统主动 POST 推送,无需轮询:
完整代码迁移示例
- 旧版(pdf_to_markdown)
- 新版(xparse 同步)——等效替换
迁移检查清单
显式声明必要参数
⚠️ 显式声明
⚠️ 显式声明
capabilities.include_image_data: true(默认已反转)⚠️ 显式声明
capabilities.pages: true(默认已反转)更新响应解析
- 响应根节点:
result→data total_page_number→data.metadata.page_countvalid_page_number→data.success_countdetail→data.elements(paragraph_id→element_id;type由 “paragraph” 等改为语义字符串)catalog→data.title_tree
处理已移除参数
- 如用
get_excel:新版不支持 Excel 输出,需另寻替代 - 如用
raw_ocr:近似改用capabilities.include_char_details(语义非完全等价,需验证) dpi:新版无对应参数,坐标改为归一化输出

