POST
/
ai
/
service
/
v1
/
pdf_to_markdown
文档解析
curl --request POST \
  --url https://api.textin.com/ai/service/v1/pdf_to_markdown \
  --header 'Content-Type: application/octet-stream' \
  --header 'x-ti-app-id: <api-key>' \
  --header 'x-ti-secret-code: <api-key>'
{
  "code": 200,
  "message": "success",
  "result": {
    "markdown": "# hello markdown",
    "detail": [
      {
        "page_id": 1,
        "paragraph_id": 123,
        "outline_level": -1,
        "text": "hello markdown",
        "position": [
          217,
          390,
          1336,
          390,
          1336,
          460,
          217,
          460
        ],
        "origin_position": [
          217,
          390,
          1336,
          390,
          1336,
          460,
          217,
          460
        ],
        "content": 0,
        "type": "paragraph",
        "sub_type": "catalog",
        "image_url": "<string>",
        "tags": [
          "formula",
          "handwritten"
        ],
        "caption_id": {
          "page_id": 123,
          "paragraph_id": 123
        },
        "cells": [
          {
            "row": 123,
            "col": 123,
            "row_span": 123,
            "col_span": 123,
            "position": [
              10,
              10,
              100,
              10,
              100,
              50,
              10,
              50
            ],
            "origin_position": [
              123
            ],
            "text": "<string>",
            "type": "<string>"
          }
        ],
        "split_section_page_ids": [
          1,
          2,
          3
        ],
        "split_section_positions": [
          [
            0,
            0,
            100,
            100,
            100,
            200,
            0,
            200
          ],
          [
            0,
            0,
            100,
            100,
            100,
            200,
            0,
            200
          ],
          [
            0,
            0,
            100,
            100,
            100,
            200,
            0,
            200
          ]
        ]
      }
    ],
    "pages": [
      {
        "status": "success",
        "page_id": 0,
        "durations": 612.5,
        "image_id": "90u12adcad08r2",
        "origin_image_id": "90u12adcad08r2",
        "base64": "<string>",
        "origin_base64": "<string>",
        "width": 123,
        "height": 123,
        "angle": 123,
        "content": [
          {
            "id": 123,
            "type": "line",
            "text": "<string>",
            "angle": 0,
            "pos": [
              123
            ],
            "origin_position": [
              123
            ],
            "sub_type": "handwriting",
            "direction": 123,
            "score": 0.5,
            "char_pos": [
              [
                123
              ]
            ]
          }
        ],
        "raw_ocr": [
          {
            "text": "这是一个例子。",
            "score": 0.99,
            "type": "text",
            "position": [
              10,
              10,
              100,
              10,
              100,
              50,
              10,
              50
            ],
            "angle": 123,
            "direction": 1,
            "handwritten": 1,
            "char_scores": [
              0.99,
              0.98,
              0.95,
              0.95,
              0.99,
              0.93,
              0.87
            ],
            "char_centers": [
              [
                20,
                10
              ],
              [
                30,
                10
              ],
              [
                40,
                10
              ],
              [
                50,
                10
              ],
              [
                60,
                10
              ],
              [
                70,
                10
              ],
              [
                80,
                10
              ]
            ],
            "char_positions": [
              [
                18,
                8,
                22,
                8,
                22,
                12,
                18,
                12
              ],
              [
                28,
                88,
                32,
                8,
                32,
                12,
                28,
                12
              ],
              [
                38,
                88,
                42,
                8,
                42,
                12,
                38,
                12
              ],
              [
                48,
                88,
                52,
                8,
                52,
                12,
                48,
                12
              ],
              [
                58,
                88,
                62,
                8,
                62,
                12,
                58,
                12
              ],
              [
                68,
                88,
                72,
                8,
                72,
                12,
                68,
                12
              ],
              [
                78,
                88,
                82,
                8,
                82,
                12,
                78,
                12
              ]
            ],
            "char_candidates": [
              [
                "这"
              ],
              [
                "是"
              ],
              [
                "一",
                "-"
              ],
              [
                "个"
              ],
              [
                "例"
              ],
              [
                "子"
              ],
              [
                "。",
                "O"
              ]
            ],
            "char_candidates_score": [
              [
                0.99
              ],
              [
                0.99
              ],
              [
                0.95,
                0.05
              ],
              [
                0.99
              ],
              [
                0.99
              ],
              [
                0.99
              ],
              [
                0.89,
                0.11
              ]
            ]
          }
        ],
        "structured": [
          {
            "type": "textblock",
            "pos": [
              123
            ],
            "origin_position": [
              123
            ],
            "content": [
              0,
              1,
              2
            ],
            "sub_type": "text",
            "continue": true,
            "next_page_id": 2,
            "next_para_id": 1,
            "text": "<string>",
            "outline_level": 123
          }
        ]
      }
    ],
    "catalog": {
      "toc": [
        [
          {
            "hierarchy": 2,
            "title": "1.公司简介和主要财务指标",
            "page_id": 3,
            "pos": [
              10,
              10,
              100,
              10,
              100,
              50,
              10,
              50
            ]
          },
          {
            "hierarchy": 3,
            "title": "1.1 公司简介",
            "page_id": 4,
            "pos": [
              10,
              10,
              100,
              10,
              100,
              50,
              10,
              50
            ]
          }
        ]
      ]
    },
    "total_page_number": 10,
    "valid_page_number": 3,
    "excel_base64": ""
  },
  "version": "2.1.0",
  "duration": 999,
  "metrics": [
    {
      "page_image_width": 1024,
      "page_image_height": 768,
      "dpi": 72,
      "durations": 123,
      "status": "<string>",
      "page_id": 123,
      "angle": 90,
      "image_id": "<string>"
    }
  ]
}

Authorizations

x-ti-app-id
string
header
required

登录Textin后前往 "工作台-账号设置-开发者信息" 查看 x-ti-app-id

x-ti-secret-code
string
header
required

登录Textin后前往 "工作台-账号设置-开发者信息" 查看 x-ti-secret-code

Query Parameters

pdf_pwd
string

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

page_start
integer
default:0

当上传的是pdf时,表示从第几页开始解析,不传该参数时默认从首页开始

page_count
integer
default:1000

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

parse_mode
enum<string>
default:scan

pdf文档的解析模式,默认为scan模式。图片不用设置,均默认按scan模式处理。

  • auto 综合文字识别和解析模式:对pdf电子档解析,会直接提取pdf中的文字
  • scan 仅按文字识别模式:将pdf当成图片处理
Available options:
auto,
scan
dpi
enum<integer>
default:144

pdf文档的坐标基准,默认144dpi,与parse_mode参数联动:

  • 当parse_mode=auto时,默认动态,支持72,144,216;
  • 当parse_mode=scan时,默认144,支持72,144,216;
Available options:
72,
144,
216
apply_document_tree
enum<integer>
default:1

markdown中是否生成标题层级,默认为1,生成标题。

  • 0 不生成标题,同时也不会返回catalog字段
  • 1 生成标题
Available options:
0,
1
table_flavor
enum<string>
default:html

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

  • md 按md语法输出表格
  • html 按html语法输出表格
  • none 不进行表格识别,把表格图像当成普通文字段落来识别
Available options:
md,
html,
none
get_image
enum<string>
default:objects

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

  • none 不返回任何图像
  • page 返回每一页的整页图像:即pdf页的完整页图片
  • objects 返回页面内的子图像:即pdf页内的各个子图片
  • both 返回整页图像和图像对象
Available options:
none,
page,
objects,
both
image_output_type
enum<string>
default:default

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

  • base64str 指定所有图片对象为base64字符串,适用于没有云存储的用户,但是引擎返回结果体积会很大。识别页数page_count超过1000页时,不支持base64返回,只会以default格式返回。
  • default 指定子图片对象为图片url,页图片对象为图片id
Available options:
base64str,
default
paratext_mode
enum<string>

markdown中非正文文本内容展示模式。默认为annotation。非正文内容包括页眉页脚,子图中的文本。

  • none 不展示
  • annotation 以注释格式插入到markdown中。页眉页脚中的图片只保留文本,图片base64或url不保留。
  • body 以正文格式插入到markdown中
Available options:
none,
annotation,
body
formula_level
enum<integer>
default:0

公式识别等级,默认为0,全识别。

  • 0 全识别
  • 1 仅识别行间公式,行内公式不识别
  • 2 不识别
Available options:
0,
1,
2
apply_merge
enum<integer>
default:1

是否进行段落合并和表格合并。默认为1,合并段落和表格。

  • 0 不合并
  • 1 合并
Available options:
0,
1
apply_image_analysis
enum<integer>
default:0

利用大模型对文档中的子图进行分析。分析结果以markdown格式输出,并替换掉子图的文本识别内容。默认为0,不进行图像分析。

  • 0 不进行图像分析
  • 1 进行图像分析
Available options:
0,
1
markdown_details
enum<integer>
default:1

是否返回结果中的detail字段。默认为1,返回detail字段,保存markdown各类型元素的详细信息。

  • 0 不生成
  • 1 生成
Available options:
0,
1
page_details
enum<integer>
default:1

是否返回结果中的pages字段。默认为1,返回pages字段,保存每一页更加详细的解析结果。

Available options:
0,
1
raw_ocr
enum<integer>
default:0

是否返回全部文字识别结果(包含字符坐标信息),结果字段为raw_ocr。默认为0,不返回。与page_details参数联动,当page_details为0或false时不返回。

  • 0 不返回
  • 1 返回
Available options:
0,
1
char_details
enum<integer>
default:0

是否返回结果中的char_pos字段(保存每个字符的位置信息)和raw_ocr中的char_相关字段。默认为0,不返回。

  • 0 不返回
  • 1 返回
Available options:
0,
1
catalog_details
enum<integer>
default:0

是否返回结果中的catalog字段,保存目录相关信息。与apply_document_tree参数联动,当apply_document_tree为0时不返回。

  • 0 不返回
  • 1 返回
Available options:
0,
1
get_excel
enum<integer>
default:0

是否返回excel的base64结果,结果字段为excel_base64,可以根据该字段进行后处理保存excel文件。默认为0,不返回。

  • 0 不返回
  • 1 返回
Available options:
0,
1
crop_dewarp
enum<integer>
default:0

是否进行切边矫正处理,默认为0,不进行切边矫正

  • 0 不进行切边矫正
  • 1 进行切边矫正
Available options:
0,
1
remove_watermark
enum<integer>
default:0

是否进行去水印处理,默认为0,不去水印

  • 0 不去水印
  • 1 去水印
Available options:
0,
1
apply_chart
enum<integer>
default:0

是否开启图表识别,开启图表识别会将识别到的图表以表格形式输出。默认为0,不进行图表识别。

  • 0 不开启图表识别
  • 1 开启图表识别
Available options:
0,
1

Body

支持以下两种请求格式:

  1. Content-Type: application/octet-stream

    支持的文件格式:png, jpg, jpeg, pdf, bmp, tiff, webp, doc, docx, html, mhtml, xls, xlsx, csv, ppt, pptx, txt, ofd, rtf。

    • 如果是xls/xlsx/csv文件,每个sheet行数不能超过2000,列数不能超过100。
    • 如果是txt文件,文件大小不超过100k。
    • 请求体为本地文件的二进制流,非 FormData 或其他格式。
    • 文件大小不超过500M。
    • 长宽比小于2的图片宽高需在20~20000像素范围内,其他图片的宽高需在20~10000像素范围内。
  2. Content-Type: text/plain

    请求体为文本,内容为在线文件的URL链接(支持http以及https协议)。

    • 在线文件大小不超过500M。
    • 长宽比小于2的图片宽高需在20~20000像素范围内,其他图片的宽高需在20~10000像素范围内。

The body is of type file.

Response

200 - application/json

解析结果

返回markdown及结构化数据