当前位置: 首页 > news >正文

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

文章目录

      • 1、问题描述
      • 2、问题原因
      • 3、问题解决



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_mapassert False, str(("Unhandled", fmttype))
AssertionError: ('Unhandled', 6)

报错代码如下:

import pdfplumberwith 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 fitzwith fitz.open(rf'F:\...\file.pdf') as doc:for page in doc.pages():print(page.get_text())

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



相关文章:

  • SpringBoot基础入门
  • fastgpt本地详细部署以及配置
  • Spring boot 集成netty实现websocket通信
  • Android 二维码相关(一)
  • 微信小程序修改placeholder样式
  • Java必须掌握的B树知识点(含面试大厂题含源码)
  • PyTorch搭建LeNet训练集详细实现
  • C语言:内存函数
  • 向ChatGPT高效提问模板
  • DAY by DAY 史上最全的Linux常用命令汇总----命令格式
  • 微信小程序返回上一页刷新组件数据
  • NVMFS5A160PLZT1G汽车级功率MOSFET P沟道60 V 15A 满足AEC-Q101标准
  • 【Logback】Logback 中的 Appenders
  • C#使用Stack<T>类进行堆栈设计
  • Mybatis Plus + Spring 分包配置 ClickHouse 和 Mysql 双数据源
  • 【剑指offer】让抽象问题具体化
  • angular2 简述
  • ES6系统学习----从Apollo Client看解构赋值
  • HTTP 简介
  • Js基础——数据类型之Null和Undefined
  • React中的“虫洞”——Context
  • vue:响应原理
  • yii2权限控制rbac之rule详细讲解
  • 你不可错过的前端面试题(一)
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • ​Linux·i2c驱动架构​
  • (70min)字节暑假实习二面(已挂)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (七)理解angular中的module和injector,即依赖注入
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .CSS-hover 的解释
  • .NET Framework .NET Core与 .NET 的区别
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .net中的Queue和Stack
  • [AutoSar]BSW_Com02 PDU详解
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [C++] sqlite3_get_table 的使用
  • [C++]模板与STL简介
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape
  • [flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?
  • [gdc19]《战神4》中的全局光照技术
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [IE9] IE9 RC版下载链接
  • [kubernetes]控制平面ETCD
  • [leetcode] 103. 二叉树的锯齿形层次遍历
  • [Machine Learning] 领域适应和迁移学习
  • [na]wac无线控制器集中转发部署的几种情况
  • [NLP] 使用Llama.cpp和LangChain在CPU上使用大模型