ssqchina 发表于 2023-7-18 15:08:17

帮我看看这个错那?

运行没反应 没错误提示 但是没转换

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)

陶远航 发表于 2023-7-18 15:08:34

这段代码可能出现了几个问题导致没有产生预期的输出或错误提示。

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',以确保输出换行。

请按照上述建议修改你的代码,并检查是否仍然存在其他问题。如果需要进一步帮助,请提供更详细的错误信息或代码上下文。

isdkz 发表于 2023-7-18 15:08:51

在你的代码中,我没有看到显著的错误。问题可能出在你所处理的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 )一起使用。

isdkz 发表于 2023-7-18 15:25:23

你的pdf会不会是纯图片pdf?

ssqchina 发表于 2023-7-18 15:51:36

isdkz 发表于 2023-7-18 15:25
你的pdf会不会是纯图片pdf?

应该是的 里面的文字搜索不出来 这个要怎么改?

isdkz 发表于 2023-7-18 18:07:17

ssqchina 发表于 2023-7-18 15:51
应该是的 里面的文字搜索不出来 这个要怎么改?

如果是纯图片pdf那指定是读不出文字的,图片只能用ocr
页: [1]
查看完整版本: 帮我看看这个错那?