pypdf Python 工具
使用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文档里的大部分“文字”其实并不是真正的文字:它们主要是图片。实际的文字在我尝试提取的时候似乎是可以正确提取出来的(不过我得承认,除了首页的一些小段落和页码外,我看不懂里面的内容;-))。
至于第二个问题:我不太明白你在问什么。