You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法提取PDF文本求助:PyPDF2与pymupdf均提取失败

问题分析与解决方案

核心原因

你遇到的问题是目标PDF属于图像型PDF(扫描件生成),而非原生可编辑的文本PDF。这类PDF的内容以像素图像形式存储,没有嵌入可被PyPDF2、pymupdf直接提取的文本流,所以无论用哪种普通文本提取库,都会得到空结果。

你可以自行验证:打开PDF后尝试选中文字,如果无法选中任何内容,即可确认是图像型PDF。

解决方案:使用OCR提取图像文字

要提取这类PDF的内容,必须借助OCR(光学字符识别)工具,比如Tesseract,配合Python库实现图像转文字。

步骤1:安装依赖

  1. 安装Tesseract OCR引擎:
    • Windows:下载安装包后,将其路径加入系统环境变量(或在代码中手动指定)
    • Linux:执行sudo apt install tesseract-ocr
    • macOS:执行brew install tesseract
  2. 安装Python库:
    pip install pytesseract pymupdf
    

步骤2:提取文本的示例代码

import fitz  # pymupdf
import pytesseract

# 若Tesseract未加入系统PATH,需手动指定路径(以Windows为例)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 打开PDF文档
doc = fitz.open("favorite.pdf")

# 遍历每页提取文字
for page_idx in range(len(doc)):
    page = doc.load_page(page_idx)
    # 将PDF页面转换为像素图像
    pix = page.get_pixmap()
    # 用Tesseract识别图像中的文字(lang参数指定语言,这里用英文)
    extracted_text = pytesseract.image_to_string(pix.tobytes(), lang='eng')
    print(f"第 {page_idx+1} 页提取结果:\n{extracted_text}\n")

注意事项

  • 如果PDF包含多语言内容,可在lang参数中指定多语言包(比如lang='eng+dan'识别英文和丹麦语,需提前安装对应语言包)
  • 若图像清晰度较低,可先对图像做预处理(比如调整对比度、降噪)来提升OCR准确率

内容的提问来源于stack exchange,提问作者balexandre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:45:03