脚本如何提取PDF文字内容

wen 实用脚本 28

本文目录导读:

脚本如何提取PDF文字内容

  1. 方法一:使用 Python 库(最灵活,适合批量、自动化)
  2. 方法二:命令行工具(适合单次快速提取、不写代码)
  3. 方法三:图形化工具(完全无需编程)
  4. 常见问题与解决方案
  5. 总结推荐

提取PDF文字内容有多种方法,具体取决于你的技术背景、使用场景(单次提取 vs 批量处理)以及对格式保真度的要求。

以下是几种主流且高效的提取方式,按推荐度排序:

使用 Python 库(最灵活,适合批量、自动化)

首选:PyMuPDF (fitz) 这是目前速度最快、提取精度最高的库之一,特别擅长处理复杂的排版。

  • 安装pip install PyMuPDF

  • 示例代码

    import fitz  # PyMuPDF
    def extract_text_pymupdf(pdf_path):
        doc = fitz.open(pdf_path)
        full_text = ""
        for page_num in range(len(doc)):
            page = doc.load_page(page_num)
            # extract_text() 会按阅读顺序提取
            text = page.get_text()
            full_text += text
        doc.close()
        return full_text
    # 使用
    text = extract_text_pymupdf("你的文件.pdf")
    print(text)

备选:pdfplumber 如果PDF中的文字是以表格形式存在,或者需要精准的坐标信息,pdfplumber 比 PyMuPDF 更好用。

  • 安装pip install pdfplumber

  • 示例代码

    import pdfplumber
    def extract_text_pdfplumber(pdf_path):
        with pdfplumber.open(pdf_path) as pdf:
            full_text = ""
            for page in pdf.pages:
                # 提取文字,也可以提取表格 page.extract_tables()
                text = page.extract_text()
                if text:  # 防止空页报错
                    full_text += text
        return full_text
    text = extract_text_pdfplumber("你的文件.pdf")

传统选择:PyPDF2 / pypdf PyPDF2 是经典库,但维护较少。pypdf 是它的继承者,功能类似但更现代。

  • 安装pip install pypdf

  • 示例

    from pypdf import PdfReader
    reader = PdfReader("你的文件.pdf")
    full_text = ""
    for page in reader.pages:
        full_text += page.extract_text()
    print(full_text)

    注意:pypdf 对某些非标准编码的PDF提取效果可能不如 pymupdf

命令行工具(适合单次快速提取、不写代码)

pdftotext (Linux/Mac/WSL/Windows via poppler) 这是最经典、最可靠的开源工具,速度快,支持布局保留。

  • 安装

    • Ubuntu/Debian: sudo apt install poppler-utils
    • Mac: brew install poppler
    • Windows: 下载 poppler for Windows 并添加到环境变量。
  • 使用

    # 提取全部文本
    pdftotext input.pdf output.txt
    # 保留布局(类似 PDF 的视觉排列)
    pdftotext -layout input.pdf output.txt
    # 只提取第一页
    pdftotext -f 1 -l 1 input.pdf output.txt

Mutool (随 PyMuPDF 附带的工具) 如果安装了 PyMuPDF,通常在 fitz 目录下会附带 mutool

  • 使用
    mutool draw -F text input.pdf > output.txt

图形化工具(完全无需编程)

如果你只是偶尔需要提取,不想安装任何环境,推荐:

PDF24 Tools(在线/桌面) 免费、无广告、支持 OCR,拖拽上传即可提取文本。

Adobe Acrobat Pro 付费软件,但功能最强大,可以直接“导出为” -> “文本”。

浏览器直接查看 将 PDF 拖入 Chrome/Edge 浏览器,Ctrl+A 全选 -> Ctrl+C 复制 -> 粘贴到记事本,最简单,但对排版复杂的内容可能丢字。


常见问题与解决方案

问题 原因 解决方法
提取后是乱码 PDF 中的文字是“图形”或特殊编码 需要 OCR(光学字符识别)。
提取到的是空格/无文字 PDF 被扫描成图片了 使用 OCR 工具,如 pytesseract + pdf2image
文字顺序错乱 PDF 排版复杂(如多栏、表格) 尝试 pdfplumberextract_text(layout=True)pdftotext -layout
速度太慢 文件巨大,或用了效率低的库 使用 PyMuPDFpdftotext,它们是用 C 语言解析的。

总结推荐

  • 我是程序员,想批量/自动化:直接上 pip install pymupdf pdfplumber,用 fitz 提取常规文本,用 pdfplumber 处理表格。
  • 我只用一次,不想装东西:打开浏览器,用 PDF24直接拖入Chrome全选复制
  • PDF是扫描件(图片):上述方法都不行,需要 OCR,推荐 PaddleOCREasyOCR(有免费额度),或者 Adobe Acrobat 自带的 OCR 功能。

抱歉,评论功能暂时关闭!