几百个PDF批量提取文字到txt(实跑验证)

导师丢来几十个PDF论文要汇总关键词,一个个复制到手抽筋。下面脚本把目录下所有PDF提取全文存成同名txt,本次完整实跑过:2个测试PDF共3页,提取结果逐字核对全对。

核心脚本

#!/usr/bin/env python3
"""批量提取PDF文字到同名txt
用法: python3 pdf2txt.py  [输出目录]"""
import sys, os
from pathlib import Path
import pymupdf                      # pip install pymupdf

src = Path(sys.argv[1])
out = Path(sys.argv[2]) if len(sys.argv) > 2 else src / "txt_out"
out.mkdir(parents=True, exist_ok=True)

for f in sorted(src.glob("*.pdf")):
    try:
        doc = pymupdf.open(f)
        text = "\n".join(page.get_text() for page in doc)
        (out / (f.stem + ".txt")).write_text(text, encoding="utf-8")
        print(f"{f.name}: {doc.page_count}页 -> {f.stem}.txt")
        doc.close()
    except Exception as e:
        print(f"[跳过] {f.name}: {e}")   # 坏文件报文件名,不静默

实跑结果

$ python3 pdf2txt.py /tmp/pdftest /tmp/pdftest/out
a.pdf: 2页 -> a.txt
b.pdf: 1页 -> b.txt

$ cat out/a.txt
a page 1 content

a page 2 content

2个文件3页全部提取成功,内容逐字核对无误。

实跑踩到的坑

1. import fitz 已弃用:pip 装 pymupdf 后老教程都是 import fitz,能跑但每次打一屏 deprecation warning,新代码直接 import pymupdf,API 一致。
2. 扫描件是图片,提不出字:get_text() 对扫描版PDF返回空字符串但不报错。批量跑完记得检查哪些txt是空的——那些是需要OCR的,脚本不会替你发现。
3. 输出目录别设在输入目录里却用同扩展名:本脚本输出txt不会自我污染,但如果你顺手把输出也存成pdf就会递归套娃。txt输出目录默认是 原目录/txt_out,干净隔离。

不想自己跑?我们代做

把PDF打包发给我们,代提取、代清洗、代汇总成你要的格式(txt/Word/Excel)。¥19.9起,到下单页看看。虚拟物品交付后不退款;未收到或未达承诺免费补发/重做。

← 返回更多实测指南