2

我正在尝试阅读一个 pdf 文件,其中每个页面都分为 3x3 块信息

A | B | C
D | E | F
G | H | I

每个条目被分成多行。一个条目的简化示例是这张卡片。但是其他 8 个插槽中也会有类似的卡。我希望能够阅读 A,然后是 B,然后是 C……;但是,如果我阅读A,B和C的第一行,然后是A,B和C的第二行等,我可以生存。我看过pdfminer和pypdf,但我没有看过任何适合我正在寻找的东西。这里的答案效果很好,但
列的顺序经常被扭曲。

4

2 回答 2

1

在此处的第二个答案中替换

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]))

非常重要:请参阅此答案的最后一段。

于 2015-04-25T12:00:10.543 回答
0

我无法想出一个完美的解决方案,但以下最适合我的需要。

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
于 2015-04-21T17:36:49.903 回答