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

求助Claude GPT | PyPDF2 亲测可用

直接Copy网上流传最广的代码完成提取PDF转文本,十有八九报错!

流传的是旧版本用法,造成的问题是命令规则用法变化。

常见的报错:

1、读取PDF文档命令的变化:

去除PdfFileReader不可用,

改为PyPDF2.PdfReader(read_pdf)

**报错信息:

PyPDF2.errors.DeprecationError: 
PdfFileReader is deprecated and 
was removed in PyPDF2 3.0.0. 
Use PdfReader instead.

2、获取PDF文档页数的命令变化:

去除reader.getPage(page_number)不可用,

改为reader.pages[page_number]

PyPDF2.errors.DeprecationError: 
reader.getPage(pageNumber) is 
deprecated and was removed in 
PyPDF2 3.0.0. 
Use reader.pages[page_number] instead.

3、编码格式错误提示

location.writelines(extract_text)
UnicodeEncodeError: 

'cp950' codec can't encode character
'
\u2212' in position 0: 
illegal multibyte sequence

求助Claude GPT给出的修改建议

错误表示在写入提取的文本时,遇到了无法使用指定的编码'cp950'来编码文本中的某个字符。

具体是遇到了一个破折号字符'\u2212',它在Unicode中的编码无法用cp950来表示,所以抛出了UnicodeEncodeError。

可能的解决方案:

  1. 尝试使用其他编码格式来写入文件,比如'utf-8':
#1 方案
location.writelines(extract_text.encode('utf-8'))
  1. 将无法编码的字符替换为可编码的字符:
#2 方案
extract_text = extract_text.replace('\u2212''-')
location.writelines(extract_text)
  1. 忽略无法编码的字符:
#3 方案
location.writelines(extract_text.encode('cp950', errors='ignore'))
  1. 将文本转化为另一种兼容格式再写入:
#4 方案
extract_text = extract_text.encode('cp950', errors='ignore').decode('cp950'
location.writelines(extract_text)

主要原因是'cp950'编码范围有限,无法表示文本中的所有Unicode字符。

可以尝试更高版本的Unicode编码如utf-8,或者处理掉无法编码的字符。

结论:经过测试方案#3 有效,一次运行成功通过!

完整的PDF 2 TXT 的代码:

import PyPDF2
read_pdf = open("D://0 All_in_one//Alevel 教程//Game Theory An Introduction.pdf"'rb')
pdfload = PyPDF2.PdfReader(read_pdf)

num_pages = len(pdfload.pages)#read_pdf.numPages
print(num_pages)

# 初始化文本字符串变量
text = ""

# 遍历每一页
for pageNum in range(num_pages):
    pageObj = pdfload.pages[pageNum-1]
    text += pageObj.extract_text()

# 保存文本结果
location = open("D://0 All_in_one//Alevel 教程//Game Theory An Introduction.txt""a")
outfile = "D://0 All_in_one//Alevel 教程//Game Theory An Introduction.txt"
with open(outfile, 'w') as f:
    f.writelines(text.encode('cp950', errors='ignore').decode('cp950'))

更多相关链接:

本文由 mdnice 多平台发布


http://www.kler.cn/a/37615.html

相关文章:

  • 综合实验---基于卷积神经网络的目标分类案例
  • 【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 30 日论文合集)
  • 橙河网络:怎么搭建海外问卷网站呢?
  • 基于springboot+Redis的前后端分离项目(九)-【黑马点评】
  • RPM包详解以及如何制作RPM包
  • 1.17 什么是微服务
  • wincc与300以太网通讯教程在建材行业矿粉磨生产自动化控制系统中应用
  • 你的隐私被泄漏了吗
  • await、async、事件循环(宏任务、微任务队列执行顺序)
  • Python 列表 pop()函数使用详解
  • Arthas和常量池
  • 【云原生丶Kubernetes】Kubernetes初体验
  • BIO、NIO、AIO之间有什么区别
  • Linux下Nginx升级
  • 阿里云无影云电脑具体价格表(1元入口)
  • 【程序人生】如何在工作中保持稳定的情绪?
  • spring复习:(19)单例bean是在哪里被加入到一级缓存的?
  • 网络安全(黑客技术)自学笔记
  • 解决MAC IDEA终端每次都要source ~/.zshrc
  • AOSP基础