帮我看看这个错那?
运行没反应 没错误提示 但是没转换import pdfplumber
def pdf2txt(file_name):
p = pdfplumber.open(file_name + ".pdf")
page_num = len(p.pages)
with pdfplumber.open(file_name + ".pdf") as pdf:
for i in range(page_num):
page = pdf.pages
text = page.extract_text()
if text != None:
with open(file_name + ".txt", "a", encoding = "utf-8") as f:
f.write(text)
print(file_name+' '+str(i+1)+'/'+str(page_num)+' 页读写完成', end='\r')
file_name = r'f:\\123'
pdf2txt(file_name) 这段代码可能出现了几个问题导致没有产生预期的输出或错误提示。
1. 首先,你提到你想使用pdfplumber库进行PDF文件转换,但是在代码中没有看到你导入该库的语句。你需要在代码开头添加import pdfplumber语句,以便正确导入该库。
2. 其次,在函数pdf2txt中,你使用了变量p来打开PDF文件,但之后并没有使用它进行后续操作。这可能导致没有正确提取文本内容。你可以尝试删除这部分代码,因为已经在之后使用了pdfplumber.open(file_name + ".pdf")来打开PDF文件。
3. 另外,在对每个页面进行文本提取时,你使用了page.extract_text()来获取文本内容,这是正确的。但是需要注意的是,有些页面可能无法提取到文本,返回的结果是None。所以在判断文本内容时,建议使用if text is not None:来检查条件。
4. 最后,print语句中的end='\r'参数表示不换行输出,但这在某些环境下可能不起作用。你可以尝试将其改为end='\n',以确保输出换行。
请按照上述建议修改你的代码,并检查是否仍然存在其他问题。如果需要进一步帮助,请提供更详细的错误信息或代码上下文。 在你的代码中,我没有看到显著的错误。问题可能出在你所处理的PDF文件上,可能是你的PDF文档没有包含可提取的文本,而是包含图片或扫描件。这时, pdfplumber的extract_text()方法将返回None 。
在你的代码中,你对每一页文本做了None检查。如果所有页面的文本都是None ,你的代码将不会写入任何东西到文本文件,同时也没有任何错误提示。
为了解决这个问题,你可以在 extract_text() 返回 None 时,打印出一些警告信息。这样你可以知道PDF文档中是否存在可提取的文本。
这是修改后的代码:
import pdfplumber
def pdf2txt(file_name):
with pdfplumber.open(file_name + ".pdf") as pdf:
page_num = len(pdf.pages)
for i in range(page_num):
page = pdf.pages[ i]
text = page.extract_text()
if text != None:
with open(file_name + ".txt", "a", encoding = "utf-8") as f:
f.write(text)
print(file_name+' '+str(i+1)+'/'+str(page_num)+' 页读写完成', end='\r')
else:
print(f"警告:第 {i+1} 页没有找到可提取的文本.")
file_name = r'f:\\123'
pdf2txt(file_name)
在此修改的代码中,我增加了一个else分支,如果extract_text()返回None ,则会打印出警告信息。
请注意,如果你的PDF文件实际上包含的是图像,那么你需要使用OCR(光学字符识别)技术来从图像中提取文本。 pdfplumber库本身并不包含OCR功能,但它可以与其他具有OCR功能的库(如pytesseract )一起使用。 你的pdf会不会是纯图片pdf? isdkz 发表于 2023-7-18 15:25
你的pdf会不会是纯图片pdf?
应该是的 里面的文字搜索不出来 这个要怎么改? ssqchina 发表于 2023-7-18 15:51
应该是的 里面的文字搜索不出来 这个要怎么改?
如果是纯图片pdf那指定是读不出文字的,图片只能用ocr
页:
[1]