Python 分节阅读 pdf
Python read pdf in sections
我正在尝试读取一个 pdf 文件,其中每一页都分为 3x3 的信息块,格式为
A | B | C
D | E | F
G | H | I
每个条目都分为多行。一个条目的简化示例是 this card。但随后其他 8 个插槽中将有类似的卡。
我希望能够阅读 A,然后是 B,然后是 C……;但是,如果我阅读 A、B 和 C 的第一行,然后阅读 A、B 和 C 等的第二行,我就可以生存。我看过 pdfminer 和 pypdf,但我没有看到任何适合我正在寻找的东西。答案 here 工作得很好,但是
的顺序
列通常会扭曲。
我无法想出完美的解决方案,但以下最适合我的需要。
import PyPDF2
from StringIO import StringIO
def getPDFContent(path, pages=[]):
content = ""
p = file(path, "rb")
pdf = PyPDF2.PdfFileReader(p)
if pages:
for i in pages:
content += pdf.getPage(i).extractText() + "\n"
else:
numPages = pdf.getNumPages()
for i in range(numPages):
content += pdf.getPage(i).extractText() + "\n"
content = " ".join(content.replace(u"\xa0", " ").strip().split())
return content
在第二个答案中here替换
self.rows = sorted(self.rows, key = lambda x: (x[0], -x[2]))
来自
self.rows = sorted(self.rows, key = lambda x: (x[0], -x[2], x[1]))
非常重要:请参阅此答案的最后一段。
我正在尝试读取一个 pdf 文件,其中每一页都分为 3x3 的信息块,格式为
A | B | C
D | E | F
G | H | I
每个条目都分为多行。一个条目的简化示例是 this card。但随后其他 8 个插槽中将有类似的卡。
我希望能够阅读 A,然后是 B,然后是 C……;但是,如果我阅读 A、B 和 C 的第一行,然后阅读 A、B 和 C 等的第二行,我就可以生存。我看过 pdfminer 和 pypdf,但我没有看到任何适合我正在寻找的东西。答案 here 工作得很好,但是
的顺序
列通常会扭曲。
我无法想出完美的解决方案,但以下最适合我的需要。
import PyPDF2
from StringIO import StringIO
def getPDFContent(path, pages=[]):
content = ""
p = file(path, "rb")
pdf = PyPDF2.PdfFileReader(p)
if pages:
for i in pages:
content += pdf.getPage(i).extractText() + "\n"
else:
numPages = pdf.getNumPages()
for i in range(numPages):
content += pdf.getPage(i).extractText() + "\n"
content = " ".join(content.replace(u"\xa0", " ").strip().split())
return content
在第二个答案中here替换
self.rows = sorted(self.rows, key = lambda x: (x[0], -x[2]))
来自
self.rows = sorted(self.rows, key = lambda x: (x[0], -x[2], x[1]))
非常重要:请参阅此答案的最后一段。