【问题标题】:Have writen a program to extract text from a PDF in python, and now need to make it run for every PDF in the folder and save as a text file已经编写了一个程序来从 python 中的 PDF 中提取文本,现在需要让它为文件夹中的每个 PDF 运行并保存为文本文件
【发布时间】:2024-05-29 15:05:02
【问题描述】:

到目前为止,这是我拥有的代码(它正在工作并按应有的方式提取文本。)

import pyPdf

def getPDFContent(path):
    content = ""
    # Load PDF into pyPDF
    pdf = pyPdf.PdfFileReader(file(path, "rb"))
    # Iterate pages
    for i in range(0, pdf.getNumPages()):
        # Extract text from page and add to content
        content += pdf.getPage(i).extractText() + "\n"
    # Collapse whitespace
    content = " ".join(content.replace(u"\xa0", " ").strip().split())
    return content

print getPDFContent("/home/nick/TAM_work/TAM_pdfs/2006-1.pdf").encode("ascii", "ignore")

我现在需要添加一个 for 循环以使其在 /TAM_pdfs 中的所有 PDF 上运行,将文本保存为 CSV 并(如果可能)添加一些内容来计算图片。任何帮助将不胜感激。感谢观看。

马特

【问题讨论】:

  • 很抱歉缩进失败。
  • 使用“代码块”按钮来格式化您的代码。 (每行添加四个空格)

标签: python pdf csv


【解决方案1】:

看看os.walk()

【讨论】:

    【解决方案2】:

    for 循环让它在一个目录中的所有 PDF 上运行:查看 glob 模块

    将文本保存为 CSV:查看 csv 模块

    数图片:看看 pyPDF 模块 :-)

    关于此声明的两个 cmet:

    content = " ".join(content.replace(u"\xa0", " ").strip().split())
    

    (1) 不需要将 NBSP (U+00A0) 替换为 SPACE,因为 NBSP(自然)被unicode.split() 视为空白

    (2) 使用 strip() 是多余的:

    >>> u"  foo  bar  ".split()
    [u'foo', u'bar']
    >>>
    

    【讨论】:

      【解决方案3】:

      glob 模块可以帮助您在单个目录中查找与通配符模式匹配的所有文件。

      【讨论】: