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




1、问题描述


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

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)

报错代码如下:

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

pip install --upgrade pdfplumber

2) 检查PDF文件

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

3) 使用其他方法

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

4) 捕获异常

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

try:
    text = page.extract_text()
except AssertionError as e:
    print(e)
    text = None

5) 尝试其他库

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

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

3、问题解决


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

import fitz

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

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



相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 08:50:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 08:50:06       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 08:50:06       82 阅读
  4. Python语言-面向对象

    2024-03-10 08:50:06       91 阅读

热门阅读

  1. 大数据开发(Spark面试真题-卷二)

    2024-03-10 08:50:06       35 阅读
  2. docker本地搭建spark yarn hive环境

    2024-03-10 08:50:06       32 阅读
  3. 金蝶天燕ALB 替换nginx

    2024-03-10 08:50:06       41 阅读
  4. 2024年跳槽面试心得

    2024-03-10 08:50:06       43 阅读
  5. IOS面试题object-c 51-60

    2024-03-10 08:50:06       48 阅读
  6. rust开发100问?

    2024-03-10 08:50:06       43 阅读
  7. docker删除、停止所有容器或镜像

    2024-03-10 08:50:06       40 阅读
  8. 英语随笔,发散了 3.9

    2024-03-10 08:50:06       41 阅读
  9. iOS小技能:设置app语言(跟随系统和特定语言)

    2024-03-10 08:50:06       41 阅读
  10. AJAX-常用请求方法和数据提交

    2024-03-10 08:50:06       40 阅读
  11. mysql和redis的区别

    2024-03-10 08:50:06       41 阅读
  12. 表单进阶(4)-下拉菜单

    2024-03-10 08:50:06       36 阅读
  13. 大型语言模型的智能助手:检索增强生成(RAG)

    2024-03-10 08:50:06       42 阅读