首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python从PDF所有页面和输出文件中提取文本

使用Python从PDF所有页面和输出文件中提取文本
EN

Stack Overflow用户
提问于 2017-04-10 11:28:52
回答 3查看 13.9K关注 0票数 6

我是Python的新手。我使用这段代码来提取文本。是否可以提取所有页面并将其输出到文件中?

代码语言:javascript
复制
import PyPDF2
pdf_file = open('sample.pdf','rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(10)
page_content = page.extractText()
print (page_content)
EN

回答 3

Stack Overflow用户

发布于 2017-04-10 11:33:42

使用循环提取每个页面的文本,并将每个页面的文本写入单个文件。

代码语言:javascript
复制
import PyPDF2
with open('sample.pdf','rb') as pdf_file, open('sample.txt', 'w') as text_file:
    read_pdf = PyPDF2.PdfFileReader(pdf_file)
    number_of_pages = read_pdf.getNumPages()
    for page_number in range(number_of_pages):   # use xrange in Py2
        page = read_pdf.getPage(page_number)
        page_content = page.extractText()
        text_file.write(page_content)
票数 9
EN

Stack Overflow用户

发布于 2018-12-24 13:16:10

我使用以下代码将多个pdf文件转换为txt

P

代码语言:javascript
复制
df_dir = "D:/search/pdf"
txt_dir = "D:/pdf_to_text"


corpus = (f for f in os.listdir(pdf_dir) if not f.startswith('.') and isfile(join(pdf_dir, f)))
pdfWriter = PyPDF2.PdfFileWriter()


for filename in corpus:

    pdf = open(join(pdf_dir, filename),'rb')
    pdfReader = PyPDF2.PdfFileReader(pdf)


    for page in range(1, pdfReader.numPages):
        pageObj = pdfReader.getPage(page)
        pdfWriter.addPage(pageObj)

        text = pageObj.extractText()


        page_name = "{}-page{}.txt".format(filename[:4], page + 1)

        with open(join(txt_dir, page_name), mode="w", encoding='UTF-8') as o:
            o.write(text)

这段代码工作正常,但是对于每个文件,我有多个页面,当我运行上面的代码时,它给我的数据是file1-page1.txt,file1-page2.txt,file1-page3.txt。但我希望file.txt包含所有页面的信息。我该怎么做。

票数 0
EN

Stack Overflow用户

发布于 2018-12-28 16:02:20

代码语言:javascript
复制
    def getPptContent(path, text):
        pdfWriter = PyPDF2.PdfFileWriter()
        pdf = open(join(pdf_dir, filename),'rb')
        pdfReader = PyPDF2.PdfFileReader(pdf)
        for page in range(1, pdfReader.numPages):
        pageObj = pdfReader.getPage(page)
        pdfWriter.addPage(pageObj)
        text = pageObj.extractText()
  return text

  pdf_dir = "pdf_directory name"
  corpus = [str(f) for f in os.listdir(pdf_dir) if not f.startswith('.') and 
            isfile(join(pdf_dir, f))]

 for filename in corpus:
   Path = pdf_dir + "/" +filename
   print(Path)
   file_content = getPptContent(Path)
   f = open(pdf_dir + "/output/" + filename.split(".")[0]  +".txt" ,"w+", 
       encoding="utf-8")
   f.write(str(file_content))
   f.close()

上面的代码适用于我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43314559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档