pypdf Python 工具

2 投票
2 回答
2839 浏览
提问于 2025-04-16 04:58

使用pypdf这个Python模块,怎么读取下面这个PDF文件 http://www.envis-icpe.com/pointcounterpointbook/Hindi_Book.pdf

# -*- coding: utf-8 -*-
from pyPdf import PdfFileWriter, PdfFileReader
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/tom/Desktop/Hindi_Book.pdf").encode("ascii", "xmlcharrefreplace")

上面的代码只打印了二进制数据

那么,下面的代码怎么才能打印出内容呢

from pyPdf import PdfFileWriter, PdfFileReader
import sys
import pyPdf

from pyPdf import PdfFileWriter, PdfFileReader

output = PdfFileWriter()
input1 = PdfFileReader(file("/home/tom/Desktop/Hindi_Book.pdf", "rb"))

# print the title of document1.pdf
print "title = %s" % (input1.getDocumentInfo().title)

2 个回答

0

如果你想从PDF文件中提取特定的文字,可以使用extractText(),就像下面的例子一样:

from path_to_folder import main_path as my_text
import os
from PyPDF2 import PdfFileReader

my_pdf_path = os.path.join(my_text, "my_pdf.pdf")

with open(os.path.join(my_text, "out_put.txt"), 'w') as out_text:
    pdf_read = PdfFileReader(open(my_pdf_path, "rb"))
    out_text.write(pdf_read.getDocumentInfo().title)
    for pages in range(pdf_read.getNumPages()):
        text = pdf_read.getPage(pages).extractText()
        out_text.write(text)

在上面的例子中,我是从每一页提取了文字,然后把这些文字写入了一个文本文件。你可以选择任何内容。如果你需要从PDF中提取特定的页面,可以使用下面的代码:

from pyPdf import PdfFileWriter, PdfFileReader
import os, sys
main_path = "/home/tom/Desktop/"
output_file = PdfFileWriter()
input_file = PdfFileReader(file("/home/tom/Desktop/Hindi_Book.pdf", "rb"))
for page_number in range(input_file.getNumPages()):
    output_file.addPage(input_file.getPage(page_number))

new_file = os.path.join(main_path, "Out_folder/new_pdf.pdf")
out_fil1 = open(new_file, "wb")
output_file.write(out_fil1)
output_file.close()

你提供的链接无法打开,所以我没法查看文件,抱歉。

2

请注意,你提到的那个PDF文档里的大部分“文字”其实并不是真正的文字:它们主要是图片。实际的文字在我尝试提取的时候似乎是可以正确提取出来的(不过我得承认,除了首页的一些小段落和页码外,我看不懂里面的内容;-))。

至于第二个问题:我不太明白你在问什么。

撰写回答