PDFPlumber解析PDF文本报错:AssertionError: (‘Unhandled’, 6)

文章目录

1、问题描述

今天在使用PDFPlumber模块提取PDF文本时extract_text()方法报错,报错内容如下:

python 复制代码
Traceback (most recent call last):
  ......
  File "F:\Python\...\site-packages\pdfminer\pdffont.py", line 1091, in __init__
    self.unicode_map = ttf.create_unicode_map()
  File "F:\Python\...\site-packages\pdfminer\pdffont.py", line 826, in create_unicode_map
    assert False, str(("Unhandled", fmttype))
AssertionError: ('Unhandled', 6)

报错代码如下:

python 复制代码
import pdfplumber

with pdfplumber.open(rf'F:\...\file.pdf') as pdf:
    for page in pdf.pages:
        print(page.extract_text())

2、问题原因

经查找原因,最终确定可能是PDF文件本身的原因,具体可见这篇文章:https://github.com/jsvine/pdfplumber/discussions/994?sort=new

ChatGPT则认这种错误是因为库内部遇到了某种它无法处理的情况,ChatGPT给出的解决方案如下:

1) 更新PDFPlumber

python 复制代码
pip install --upgrade pdfplumber

2) 检查PDF文件

确认PDF文件没有损坏,并且是文本格式的PDF而不是扫描的图像

3) 使用其他方法

可以尝试使用extract_words()extract_tables()等其他方法,这取决于你需要提取的内容类型

4) 捕获异常

添加异常处理,这样即使遇到错误也不会导致程序崩溃

python 复制代码
try:
    text = page.extract_text()
except AssertionError as e:
    print(e)
    text = None

5) 尝试其他库

可以考虑使用其他PDF处理库,如PyPDF2或PyMuPDF等

在尝试了ChatGPT的一些建议后,确定可能是PDF本身的原因,因此考虑使用其他库

3、问题解决

经过尝试,最终发现PyMuPDF库可以解析使用:

python 复制代码
import fitz

with fitz.open(rf'F:\...\file.pdf') as doc:
    for page in doc.pages():
        print(page.get_text())

看来是PDF本身的原因,我们的PDF可能已经损坏

相关推荐
胖虎喜欢静香8 分钟前
从零到一快速实现 Mini DeepResearch
人工智能·python·开源
qq_3926906614 分钟前
Redis怎样应对Redis集群整体宕机带来的雪崩
jvm·数据库·python
Muyuan199833 分钟前
22.让 RAG Agent 更像真实产品:聊天页面优化、PDF 上传、知识库重建与检索片段展示
python·django·pdf·fastapi
程序员-小李44 分钟前
uv 学习总结:从零到一掌握现代化 Python 工具链
python·学习·uv
Python大数据分析@1 小时前
CLI一键采集,使用Python搭建TikTok电商爬虫Agent
开发语言·爬虫·python
研究点啥好呢1 小时前
高德多模态算法工程师面试题精选:10道高频考题+答案解析
python·面试·llm·求职招聘·笔试·高德
测试员周周1 小时前
【AI测试系统】第3篇:AI生成的测试用例太“水”?14年老兵:规则引擎+AI才是王炸组合
人工智能·python·测试
秦ぅ时2 小时前
保姆级教程|OpenAI tts-1-hd模型调用全流程(Python+curl+懒人用法)
开发语言·python
Muyuan19982 小时前
25.Paper RAG Agent 优化记录:上传反馈、计算器安全与 Chunk 参数调整
python·安全·django·sqlite·fastapi
Java面试题总结2 小时前
使用 Python 设置 Excel 数据验证
开发语言·python·excel