技术博客
PDF文件正文抽取:把抽取结果转存为 TXT / DOCX

PDF文件正文抽取:把抽取结果转存为 TXT / DOCX

作者: 万维易源
2026-09-02
PDF转TXTPDF转DOCXpython-docx文本导出
# PDF文件正文抽取:把抽取结果转存为 TXT / DOCX > 接口 PDF文件正文抽取(apiCode=10,接入点 10-1) · 免费服务 · 请求方式 POST · 返回格式 JSON · 适用人群 开发者、办公族、文档处理人员 · 阅读时间 约 5 分钟 ## 核心要点 - 接口返回的是 `text` 纯文本字符串,本身不含格式;「保存为 TXT / DOCX」是**客户端**拿到文本后的下游动作。 - 存 TXT 用标准库即可;存 DOCX 需借助 `python-docx` 等本地库。 - 注意编码(统一 `utf-8`)与分段落换行,避免挤成一团。 ## Why:为什么要转存 接口抽出的 `text` 如果在程序里用完就丢,价值有限。真正有用的是把它落盘成可编辑、可分享的文件——TXT 方便程序再处理,DOCX 方便发给同事用 Word 直接改。本文讲清「拿到 `text` 之后怎么变成文件」。 ## What:两种落盘方式 | 目标格式 | 所需能力 | 复杂度 | |----------|---------|--------| | TXT | 文件写入(标准库) | 极低 | | DOCX | `python-docx` 等本地库 | 低 | > 说明:接口本身只负责「PDF → 文本」,**不直接生成 DOCX 文件**;DOCX 是在你本地用库把 `text` 写进去的。 ## How:从 `text` 到文件 **方式一:保存为 TXT(推荐,零依赖)** ```python import requests def extract_text(pdf_path): resp = requests.post( "https://route.showapi.com/10-1?appKey=YOUR_APPKEY", files={"pdf": open(pdf_path, "rb")}, timeout=15, ).json() if resp.get("showapi_res_code") != 0: raise RuntimeError(resp.get("showapi_res_error")) body = resp["showapi_res_body"] if body.get("ret_code") != "0": raise RuntimeError(body.get("remark")) return body.get("text", "") text = extract_text("example.pdf") with open("example.txt", "w", encoding="utf-8") as f: f.write(text) ``` **方式二:保存为 DOCX(需 `pip install python-docx`)** ```python from docx import Document # text 为上文抽取到的正文 doc = Document() for para in text.split("\n"): # 按换行切成段落,保留原文结构 if para.strip(): doc.add_paragraph(para) doc.save("example.docx") ``` ## 返回示例与解析 `text` 是一段连续的字符串,段落之间通常以换行符分隔(具体取决于源 PDF 的文字层)。落盘时按 `\n` 切分即可还原大致段落;若源文件排版复杂,可能需额外的后处理规则。 ## 进阶 / 边界 - **编码统一 utf-8**:写文件、读文件都显式指定 `encoding="utf-8"`,避免 Windows 默认 GBK 下中文乱码。 - **段落还原**:`text` 无样式信息;若需保留标题层级,可结合正则识别「全大写/编号行」做粗粒度分级,但属于后处理,非接口能力。 - **大文本**:超长 `text` 建议分块写入,避免单次内存峰值。 ## FAQ **Q:接口能直接返回 .docx 文件吗?** A:不能。返回的是 `text` 纯文本,DOCX 需在你本地用 `python-docx` 这类库把文本写进去。 **Q:抽出来的文本没有换行、连成一坨?** A:取决于源 PDF 文字层是否带换行信息;可在拿到 `text` 后用正则(如按句号/空行)做后处理切分。 **Q:中文出现乱码?** A:几乎都是编码问题,写文件时强制 `encoding="utf-8"` 即可。 **Q:能不能顺便保留原 PDF 的表格?** A:接口返回的是扁平文本,不保留表格结构;表格还原需额外的版面分析能力,不在本接口范围内。 ## 相关能力 / 下一步阅读 - [PDF文件正文抽取:5 分钟从注册到跑通第一条抽取结果](https://www.showapi.com/guides/pdf-extract-quickstart-10) - [PDF文件正文抽取:能力边界与避坑(扫描件/特殊排版如何处理)](https://www.showapi.com/guides/pdf-extract-limits-10) - **本系列共 10 篇**:查看[PDF文件正文抽取指南总目录](https://www.showapi.com/guides/pdf-extract-guides-10)