文档中心
API调试

功能描述

pdf转markdown

上传图片/pdf/word/html,进行版面检测,文字识别,表格识别,版面分析等操作,并生成markdown文档

请求URL

https://api.textin.com/ai/service/v1/pdf_to_markdown

HTTP请求方法(Method)

HTTP POST

请求头说明(Request Headers)

请在HTTP请求中添加以下自定义标头(Header)。

header 名
x-ti-app-id 请登录后前往 “工作台-账号设置-开发者信息” 查看 x-ti-app-id
x-ti-secret-code 请登录后前往 “工作台-账号设置-开发者信息” 查看 x-ti-secret-code

URL参数(Parameters)

URL参数指以 {参数名}={参数值} 形式拼接到 URL 上的键值对。它以 ? 开头,不同参数之间使用 & 连接。形如 ?p1=v1&p2=v2
参数名 数据类型 是否必填 允许的值 描述
pdf_pwd string 见描述

当pdf为加密文档时,需要提供密码。 备注:对前端封装该接口时,需要自行对密码进行安全防护

char_details integer 见描述

当为1 或 true时,可以返回 char_pos 字段, 保存了每一行的位置信息。默认关闭

page_details integer 见描述

当为1 或 true时,可以返回 pages 字段, 保存了每一页更加详细的解析结果。默认打开

catalog_details integer 见描述

当为1 或 true时,可以返回 catalog details

dpi integer 见描述

pdf文档的坐标基准,默认144 dpi。 当parse_mode=auto时,默认动态,支持72,144,216; 当parse_mode=scan时,默认144,支持72,144,216;

page_start integer 见描述

当上传的是pdf时,page_start 表示从第几页开始转

page_count integer 见描述

当上传的是pdf时,page_count 表示要进行转换的pdf页数。 总页数不得超过1000页,默认为1000页

apply_document_tree integer 见描述

是否生成标题,默认为1,生成标题

  • 0 不生成
  • 1 生成标题
markdown_details integer 见描述

是否生成markdown details,默认为1,生成markdown details

  • 0 不生成
  • 1 生成
table_flavor string 见描述

markdown里的表格格式,默认为html,按html语法输出表格

  • md 按md语法输出表格
  • html 按html语法输出表格
get_image string 见描述

获取markdown里的图片,默认为none,不返回任何图像

  • none 不返回任何图像
  • page 返回每一页的整页图像
  • objects 返回页面内的图像对象
  • both 返回整页图像和图像对象
image_output_type string 见描述

指定引擎返回的图片对象输出类型,默认返回子图片url和页图片id

  • base64str 指定所有图片对象为base64字符串,适用于没有云存储的用户,但是引擎返回结果体积会很大
  • default 指定子图片对象为图片url,页图片对象为图片id
parse_mode string 见描述

PDF解析模式,默认为scan模式,仅按文字识别方式处理。图片不用设置,均按文字识别方式处理。

  • auto 综合文字识别和解析模式
  • scan 仅按文字识别模式

请求体说明(Request Body)

Content-Type: application/octet-stream

支持的文件格式:png, jpg, jpeg, pdf, bmp, tiff, webp, doc, docx, html, mhtml

请注意,请求体的数据格式为文件的二进制流,非 FormData 或其他格式。文件大小不超过 500M,图像宽高须介于 20 和 10000(像素)之间。

响应体说明(Response)

Content-Type: application/json

JSON结构说明如下:

字段名 类型 描述
code integer 错误码,详见“错误码说明”
message string

错误信息

result object
+ total_page_number integer

输入Pdf时, 返回文档的总页数

+ document_type string

记录文档类型,若引擎判断文档类型非法,则无法进行正确的解析过程

+ valid_page_number integer

记录本次解析成功的总页数

+ paragraph_number integer

记录本次解析文档的段落数,适用于所有文件类型

+ character_number integer

记录本次解析文档的字符数,适用于所有文件类型

+ pages array

文档按照页为单位展开时, 存储每一页的详情和状态 (适用于PDF),部分信息跟metrics字段重复。为兼容旧接口,保留metrics信息。

   ++ status string

表示当前页的引擎输出状态,或者error_message

   ++ page_id number

当前页码 (若为流式文件, 页码置为0)

   ++ durations number

当前页总耗时

   ++ image_id string

(仅用于PDF) 当URL参数get_image=objects, 本条字段存储图像上传对象存储后获得的图像ID。 下载方式: https://api.textin.com/ocr_image/download?image_id=xxx, 需要在headers里添加appid和key)
例如使用curl下载
curl 'https://api.textin.com/ocr_image/download?image_id=xxx'
--header 'x-ti-app-id: c81f*************************e9ff'
--header 'x-ti-secret-code: 5508********************1c17'

   ++ width integer

文档页宽度

   ++ height integer

文档页高度

   ++ angle integer

图像(中文字)的角度(当输入为图像时,默认为0, 可选值0, 90, 180, 270)

   ++ content array

基础数据: 文字行, 图像中的其中一种,请参考textline和image的说明

   ++ structured array

结构化数据

+ detail array

markdown详细信息, 参考markdown_details的说明

   ++ page_id integer

当前段落所在页码

   ++ paragraph_id integer

当前段落id

   ++ outline_level integer

标题级别: (最多支持5级标题) -1.正文 0.一级标题 1.二级标题 ...

   ++ text string

文本

   ++ type string

类型, paragraph(段落类型,包括正文、标题、公式等文字信息)、image(图片类型)、table(表格类型)

   ++ image_url string

当get_image = objects 时,返回图片的公共连接,图片默认保存30天,如需长久保存,请在有效期内下载图片并保存;或者使用image_output_type=base64str,图片以base64的方式返回

   ++ content integer

内容类型

  • 0 正文(段落、图片、表格)
  • 1 非正文(页眉、页脚、侧边栏)
   ++ position array

以长度为8的整型数组表示四边形,8个数两两一组为一个点的横纵坐标,分别是左上,右上,右下,左下。 当输入是PDF时, 此坐标是基于72dpi的;当输入是图片时,此坐标是原图里的坐标。 单位:像素

+ catalog object

描述目录树的结构

   ++ toc array

返回的table of contents

    +++ sub_type string

标题类型 text_title、 image_title、 table_title

    +++ hierarchy integer

标题层级, 1 是 1级标题, 2 是 2级标题,依次类推

    +++ title string

标题内容

    +++ page_id integer

标题所在页码 (最小页码为 1)

    +++ pos array

该目录区域的四个角点坐标,依次left-top,right-top,right-bottom,left-bottom.

+ markdown string

markdown 正文字符串

version string

doc_restore 引擎版本号

duration integer

引擎耗时 (毫秒)

metrics array

每一页的信息

+ page_image_width integer

当前段落所在页的图片宽或者pdf转成的图片宽

+ page_image_height integer

当前段落所在页的图片高或者pdf转成的图片高

+ dpi integer

当前pdf页转成图片所用的dpi

+ durations number

当前页总耗时

+ status string

当前页状态

+ page_id number

当前页码

+ angle integer

图像角度, 定义0度为人类阅读文字的图像方向,称为正置图像, 本字段表示输入图像是正置图像进行顺时针若干角度的旋转所得。

  • 0: ▲
  • 90: ▶
  • 180: ▼
  • 270: ◀
+ image_id string

当前页图片id (下载方式:https://api.textin.com/ocr_image/download?image_id=xxx ,需要在headers里添加appid和key)
例如使用curl下载:
curl 'https://api.textin.com/ocr_image/download?image_id=xxx'
--header 'x-ti-app-id: c81f*************************e9ff'
--header 'x-ti-secret-code: 5508***********************1c17'

结构体说明

各类型返回的字段及字段定义说明如下:

textline

字段名 类型 描述
id integer

数据id(页内唯一)

type string

数据类型,line

text string

文本行文字内容, 当sub_type=stamp时, text为印章上的文字.

angle integer

文本行文字方向, 默认为0(angle为0时, json中可能不包含angle属性).

pos array

文本行四个角点坐标

sub_type string

子类型, 当type为line时, 有handwriting; 当type为image, 有stamp

direction integer

文字方向, 默认为0. 0:横向文本; 1:竖向文本; 2:横向右往左文本(如阿拉伯语)

score number

文本行内每个字符的置信度(仅当输入图像做ocr时)

char_pos array

文本行内每个字符的坐标

char_cand array

候选字符列表

char_cand_score array

候选字符置信度列表

image

字段名 类型 描述
id integer

数据id(业内唯一)

type string

数据类型, image

pos array

图像四个角点坐标

sub_type string

子类型, 如stamp, background

stamp_type string

印章类型, 当sub_type 为stamp时,具体数值定义请依照全文/印章接口定义

stamp_shape string

印章形状, 当sub_type 为 stamp时, 具体数值定义请依照全文/印章接口定义

stamp_color string

印章颜色,当sub_type 为 stamp时, 具体数值定义请依照全文/印章接口定义

size array

图像大小[width, height]

data object

图像内容

+ base64 string

图像文件(jpg, png)的base64字符串

+ region array

图像在页图像中的区域(四边形4个点坐标)

+ path string

图像文件路径(如在zip包中的路径)

imageblock

字段名 类型 描述
type string

图像块类型, 值为 image

pos array

文本行四个角点坐标

lines array

图像包含的文本行id,

zorder integer

z-order 默认为0; 如-1表示居于底层。

content array

图像资源数据id数组

textblock

字段名 类型 描述
type string

段落块类型, 固定为 textblock

pos array

文本行四个角点

content array

段落块内文本行id数据组

sub_type string

段落块字类型,如title, list, formula等

continue boolean

段落块连续属性,用于判断完整的段落块是否被页面或栏分割,为true表示该段落块和下一个段落块连续(即两个段落块可合成一个逻辑段落块,如果 continue为true 且该段落块位于本页结尾,该段落块可与下一页开头段落块组合为一个逻辑段落块,否则与本页该段落块后一相邻段落块可组合为一个逻辑段落块)

table

字段名 类型 描述
type string

表格块类型, 固定为table

sub_type string

表格子属性,用于标识是否为无线表格,默认为“bordered"(即json中无该字段时,默认值为bordered)

pos array

文本行四个角点坐标

rows integer

表格行数

cols integer

表格列数

columns_width array

表格列宽度列表

rows_height array

表格行高度列表

continue boolean

当前表格与后一表格连续,用来判断一个表格是否被页面分割(如果 continue为true 且该表格位于本页结尾,该表格可与下一页开头表格组合为一个表格)

cells array

单元格数组

+ row integer

单元格行号

+ col integer

单元格列号

+ row_span integer

单元格行跨度,默认为1

+ col_span integer

单元格列跨度,默认为1

+ pos array

单元格的四个角点坐标,依次left-top,right-top,right-bottom,left-bottom.

+ content array

单元格内容

footer

字段名 类型 描述
type string

页脚块类型,固定为 footer

pos array

文本行四个角点坐标

blocks array

单元格内容,为textblock, imageblock, table中其中的一种

header

字段名 类型 描述
type string

页眉块类型,固定为 header

pos array

文本行四个角点坐标

blocks array

单元格内容,为textblock, imageblock, table中的其中一种

imagedata

字段名 类型 描述
base64 string

图像文件(jpg, png)的base64字符串

region array

图像在页图像中的区域(四边形4个点坐标)

path string

图像文件路径(如在zip包中的路径)

JSON结构示例

{"code":200,"message":"success","result":{"total_page_number":10,"document_type":"pdf","valid_page_number":3,"paragraph_number":18,"character_number":3280,"pages":[{"status":"success","page_id":0,"durations":612.5,"image_id":"90u12adcad08r2","width":0,"height":0,"angle":0,"content":[{"id":0,"type":"line","text":"string","angle":0,"pos":[0,0,0,0,0,0,0,0],"sub_type":"handwriting","direction":0,"score":1,"char_pos":[[0,0,0,0,0,0,0,0]],"char_cand":[["string"]],"char_cand_score":[[1]]},{"id":0,"type":"image","pos":[0,0,0,0,0,0,0,0],"sub_type":"string","stamp_type":"公章","stamp_shape":"园章","stamp_color":"红色","size":[0,0],"data":{"base64":"string","region":[0,0,0,0,0,0,0,0],"path":"string"}}],"structured":[{"type":"textblock","pos":[0,0,0,0,0,0,0,0],"content":[0,1,2],"sub_type":"title","continue":true},{"type":"table","sub_type":"bordered","pos":[0,0,0,0,0,0,0,0],"rows":0,"cols":0,"columns_width":[0],"rows_height":[0],"continue":true,"cells":[{"row":0,"col":0,"row_span":0,"col_span":0,"pos":[10,10,100,10,100,50,10,50],"content":[{"type":"textblock","pos":[0,0,0,0,0,0,0,0],"content":[0,1,2],"sub_type":"title","continue":true},{"type":"image","pos":[0,0,0,0,0,0,0,0],"lines":[1],"zorder":0,"content":[0]}]}]},{"type":"image","pos":[0,0,0,0,0,0,0,0],"lines":[1],"zorder":0,"content":[0]},{"type":"footer","pos":[0,0,0,0,0,0,0,0],"blocks":[{"type":"textblock","pos":[0,0,0,0,0,0,0,0],"content":[0,1,2],"sub_type":"title","continue":true},{"type":"image","pos":[0,0,0,0,0,0,0,0],"lines":[1],"zorder":0,"content":[0]},{"type":"table","sub_type":"bordered","pos":[0,0,0,0,0,0,0,0],"rows":0,"cols":0,"columns_width":[0],"rows_height":[0],"continue":true,"cells":[{"row":0,"col":0,"row_span":0,"col_span":0,"pos":[10,10,100,10,100,50,10,50],"content":[{"type":"textblock","pos":[0,0,0,0,0,0,0,0],"content":[0,1,2],"sub_type":"title","continue":true},{"type":"image","pos":[0,0,0,0,0,0,0,0],"lines":[1],"zorder":0,"content":[0]}]}]}]},{"type":"header","pos":[0,0,0,0,0,0,0,0],"blocks":[{"type":"textblock","pos":[0,0,0,0,0,0,0,0],"content":[0,1,2],"sub_type":"title","continue":true},{"type":"image","pos":[0,0,0,0,0,0,0,0],"lines":[1],"zorder":0,"content":[0]},{"type":"table","sub_type":"bordered","pos":[0,0,0,0,0,0,0,0],"rows":0,"cols":0,"columns_width":[0],"rows_height":[0],"continue":true,"cells":[{"row":0,"col":0,"row_span":0,"col_span":0,"pos":[10,10,100,10,100,50,10,50],"content":[{"type":"textblock","pos":[0,0,0,0,0,0,0,0],"content":[0,1,2],"sub_type":"title","continue":true},{"type":"image","pos":[0,0,0,0,0,0,0,0],"lines":[1],"zorder":0,"content":[0]}]}]}]}]}],"detail":[{"page_id":1,"paragraph_id":0,"outline_level":-1,"text":"hellomarkdown","type":"paragraph","image_url":"string","content":0,"position":[217,390,1336,390,1336,460,217,460]}],"markdown":"#hellomarkdown"},"version":"2.1.0","duration":999,"metrics":[{"page_image_width":1024,"page_image_height":768,"dpi":72,"durations":0,"status":"string","page_id":0,"angle":90,"image_id":"string"}]}

错误码说明

错误码 描述
40101 x-ti-app-id 或 x-ti-secret-code 为空
40102 x-ti-app-id 或 x-ti-secret-code 无效,验证失败
40103 客户端IP不在白名单
40003 余额不足,请充值后再使用
40004 参数错误,请查看技术文档,检查传参
40007 机器人不存在或未发布
40008 机器人未开通,请至市场开通后重试
40301 图片类型不支持
40302 上传文件大小不符,文件大小不超过 500M
40303 文件类型不支持
40304 图片尺寸不符,图像宽高须介于 20 和 10000(像素)之间
40305 识别文件未上传
40422 文件损坏(The file is corrupted.)
40423 PDF密码错误(Password required or incorrect password.)
40424 页数设置超出文件范围(Page number out of range.)
40425 文件格式不支持(The input file format is not supported.)
40427 Input DPI is not in the allowed DPIs list(72,144,216).
50207 部分页面解析失败(Partial failed)
30203 基础服务故障,请稍后重试
500 服务器内部错误
技术交流群
体验中心

联系我们