position
以及字符级坐标char_pos
(请求时设置URL参数char_details=true
),代表解析结果片段在原文档中的精确位置。
将解析结果和坐标可视化,有助于:
- 与原文档对照,细粒度验证解析的效果
- 审核校正解析结果

本教程基于Textin官方pdf示例文件,您可点击下载或使用该链接:文档解析pdf示例.pdf
上传pdf文件,获取解析结果
参考快速启动,上传pdf文件,获取解析结果。为获得详细的页面信息和坐标数据,解析时需要设置URL参数page_details=1和markdown_details=1。 本次示例文件解析结果如下(为方便展示,此处只解析一页,仅列出坐标相关数据):pages
字段包含每一页的信息,其中page_id
表示页码(从1开始),width, height
表示识别时文档转成图像的宽高,angle
表示将图像转正的角度(如需要),structured
表示解析后对应页的结构化数据,包含元素块内容以及对应的坐标pos
。
detail
中包含所有markdown块级元素(文字、段落、表格等)的详细信息,每一块通过page_id
与页码关联,position
字段表示该块的坐标信息。与pages
不同的是,detail中是将markdown内容规整后元素块,比如跨页段落、跨页表格在detail中已经合并,采用了更好的语义上的分割,可以直接用于下游需要分块的应用,而pages
中最大限度地保留了每一页的原始信息。
坐标系统说明
接口返回的坐标格式为:[x1, y1, x2, y2, x3, y3, x4, y4]
这表示一个四边形的四个顶点坐标,按顺时针排列:
page.width
、page.height
画布下的绝对坐标,单位为像素(px)。
比如上述接口返回:
get_image="page"或"both"
返回,
您将获得每一页的image_id或者base64(详见JSON结构说明)用于预览,也可以手动将您的原文档转成图片,
只要保证每一页的图片跟上述page.width
、page.height
同比例渲染,position
中的坐标值也需要跟随页面同比例缩放,,即可准确绘制。
从API返回结果中获取坐标数据
从json结果提取出每一页的元素坐标信息,输出到二维数组:绘制坐标框到原图
代码使用说明
1. 准备环境pdf_coordinate_drawer.py
文件,替换main函数中的your_document.pdf
和parse_result.json
为真实文件路径,运行:
- 每页生成一个标注后的PNG图片
- 坐标框用指定颜色绘制,您也可以自定义颜色,不同类型元素用不同颜色绘制
- 生成坐标类型图例

前端开源项目
此外,我们开源了web前端项目xparse-frontend,该项目包含跟我们在线web平台效果一致的全套前端代码,具备文件预览、坐标回显、动态交互对照、编辑校正、导出多种格式结果文件等丰富功能。上手方便,开箱即用,欢迎体验!常见问题
坐标偏移不准确,有错位
可能原因:- 文档转图片使用了跟解析时不同的DPI,且坐标没有根据解析返回的页面宽高缩放适配
- 页面旋转角度未正确处理
- 文档转图片的时候使用跟解析相同的DPI,或者渲染时将页面和坐标值根据解析返回的页面宽高缩放适配(推荐,参考上述代码示例)
- 确认页面是否经过旋转(angle),绘制时设置angle修正角度
如何处理跨页段落和表格
跨页信息可以在两个位置获取:- 在pages的structure中:跨页信息通过continue和next_page_id、next_para_id表示
- 在detail中:跨页信息通过通过split_section_page_ids和split_section_positions表示