技术博客
PDF文件正文抽取:5 分钟从注册到跑通第一条抽取结果

PDF文件正文抽取:5 分钟从注册到跑通第一条抽取结果

作者: 万维易源
2026-09-02
PDF正文抽取快速接入Python示例cURLNode.js
# PDF文件正文抽取:5 分钟从注册到跑通第一条抽取结果 > 接口 PDF文件正文抽取(apiCode=10,接入点 10-1) · 免费服务 · 请求方式 POST · 返回格式 JSON · 适用人群 新注册用户、初级开发者、普通办公族 · 阅读时间 约 5 分钟 ## 核心要点 - 接口只需传一个**必填参数 `pdf`(File 类型)**,其余由系统统一封装。 - 抽取到的正文在 `showapi_res_body.text` 字段中返回。 - 属于**免费服务**,注册即有默认调用档位,非常适合快速试水。 ## Why:这跟我有什么关系 日常里经常遇到「PDF 里全是文字,但没法直接选中复制、没法全文搜索、想整理进笔记却只能截图」的窘境——论文、合同、报告、发票、说明书都在此列。PDF文件正文抽取接口把这件事变成一次 HTTP 调用:你上传 PDF,它返回纯文本,剩下的编辑、检索、分析都交给你的工具链。 对开发者来说,这意味着不用再为「怎么把 PDF 变成文字」自己搭一套解析环境;对办公族来说,这意味着选中、复制、搜索这些基础操作重新可用。 ## What:前置条件与接口速览 | 项目 | 说明 | |------|------| | 接口名称 | PDF文件正文抽取 | | 接口编号 / 接入点 | apiCode=10 / 接入点 10-1 | | 服务商 | 昆明秀派科技有限公司(官方自营) | | 请求地址 | `https://route.showapi.com/10-1?appKey={your_appKey}` | | 请求方式 | POST(multipart/form-data) | | 返回格式 | JSON | | 计费 | 免费服务(注册后默认可调用,含使用档次限制) | | 必填参数 | `pdf`(File) | | 集成能力 | MCP 服务、OpenAPI 3.0 文档 | **前置条件**:一个 ShowAPI 账号与一对 AppKey(在控制台「我的应用」获取)。 ## How:四步跑通 **步骤 1 — 获取 AppKey** 登录后在 [AppKey 管理页](https://www.showapi.com/console#/myApp) 创建应用,复制 `appKey`。 **步骤 2 — 准备一个 PDF 文件** 任意一份包含文字层的 PDF 即可,例如 `example.pdf`。 **步骤 3 — 发起调用** 下面三段代码任选其一,把 `YOUR_APPKEY` 替换成你的真实 AppKey、把文件路径改成你的 PDF 即可运行。 Python(requests): ```python import requests url = "https://route.showapi.com/10-1" params = {"appKey": "YOUR_APPKEY"} # 替换为你的真实 AppKey files = {"pdf": open("example.pdf", "rb")} # 必填:PDF 文件 try: resp = requests.post(url, params=params, files=files, timeout=10) resp.raise_for_status() data = resp.json() except Exception as e: print("请求失败:", e) raise if data.get("showapi_res_code") != 0: print("系统级错误:", data.get("showapi_res_error")) else: body = data["showapi_res_body"] if body.get("ret_code") != "0": print("业务错误:", body.get("remark")) else: print(body.get("text")) # 抽取到的正文 ``` cURL: ```bash curl -X POST "https://route.showapi.com/10-1?appKey=YOUR_APPKEY" \ -F "pdf=@/path/to/example.pdf" ``` Node.js: ```javascript const fs = require("fs"); (async () => { const form = new FormData(); form.append("pdf", fs.createReadStream("example.pdf")); const resp = await fetch("https://route.showapi.com/10-1?appKey=YOUR_APPKEY", { method: "POST", body: form, }); const data = await resp.json(); if (data.showapi_res_code !== 0) { console.error("系统级错误:", data.showapi_res_error); } else { const body = data.showapi_res_body; if (body.ret_code !== "0") console.error("业务错误:", body.remark); else console.log(body.text); } })(); ``` **步骤 4 — 解析返回** 返回的 JSON 里,真正的内容在 `showapi_res_body.text`。把它打印出来、写文件、或送进你的搜索引擎即可。 ## 返回示例与解析 ```json { "showapi_res_error": "", "showapi_fee_num": 1, "showapi_res_code": 0, "showapi_res_id": "66163322fb638c08b8363af5", "showapi_res_body": { "ret_code": "0", "text": "这里是 PDF 中抽出的正文……", "remark": "" } } ``` | 字段 | 位置 | 类型 | 说明 | |------|------|------|------| | `showapi_res_code` | 系统级 | 数值 | 0 表示系统级成功 | | `showapi_res_error` | 系统级 | 字符串 | 系统级错误信息 | | `showapi_res_body` | 系统级 | 对象 | 业务数据均封装于此 | | `ret_code` | 业务级 | String | `"0"` 表示业务成功 | | `text` | 业务级 | String | 抽取出的正文文本 | | `remark` | 业务级 | String | 备注信息 | ## 进阶 / 边界 - **超时**:示例统一设 10 秒;大文件建议适当延长并加重试。 - **错误处理**:务必先判 `showapi_res_code`(系统级),再判 `showapi_res_body.ret_code`(业务级),二者都为成功才消费 `text`。 - **免费档位**:免费调用有「使用档次限制」,高频/批量场景请看 [PDF文件正文抽取:免费档位限制与频率/成本控制](https://www.showapi.com/guides/pdf-extract-free-tier-10)。 ## FAQ **Q:提示缺少必填参数怎么办?** A:确认请求体里带上了 `pdf` 字段且为 File 类型(cURL 用 `-F "pdf=@文件"` 而非 `-d`)。该参数是唯一必填项。 **Q:返回的 `text` 是空字符串?** A:可能 PDF 本身没有可抽取的文字层(如纯图片扫描件)。具体边界见 [PDF文件正文抽取:能力边界与避坑](https://www.showapi.com/guides/pdf-extract-limits-10)。 **Q:免费调用有次数限制吗?** A:文档说明为免费服务且「为防止滥用设有使用档次限制」,具体档位以 [官方免费 API 档位说明](https://www.showapi.com/free-api) 为准,本文不编造具体数字。 **Q:AppKey 泄露了怎么办?** A:到 [AppKey 管理页](https://www.showapi.com/console#/myApp) 重置即可;代码中务必用占位符,不要硬编码真实 key。 ## 相关能力 / 下一步阅读 - [PDF文件正文抽取:返回字段全解(text / ret_code / remark)](https://www.showapi.com/guides/pdf-extract-response-10) - [PDF文件正文抽取:学术论文与文献 PDF 批量抽取实战](https://www.showapi.com/guides/pdf-extract-academic-10) - **本系列共 10 篇**:查看[PDF文件正文抽取指南总目录](https://www.showapi.com/guides/pdf-extract-guides-10)