操作PDF文件(读取、分割、合并、移动)

1 投票
2 回答
2255 浏览
提问于 2025-04-16 13:21

我正在尝试找到一种方法,用Python或PHP处理扫描的PDF文件。我需要能够打开一个多页的PDF,读取内容,并根据文本中的某个标识符,将页面移动到单独的PDF文件中(或者如果需要分组的话,放到一个文件里)。

我下载并稍微玩了一下pdftotext,但不确定这是否是最好的方法。我用一个示例扫描的PDF文件,经过pdftotext处理成了一个txt文件,然后在里面查找了一下。效果还不错;我能找到一些标识符,但为了提高效率,我需要更多的正则表达式技能。不过,我在如何拆分PDF和根据pdftotext的结果移动它们这方面遇到了瓶颈。

有没有什么想法?


编辑:澄清一下。

  1. 使用pdftotext将每一页PDF输出为单独的txt文件;
  2. 在txt文件中查找标识符,并编制一个相似页面的列表;
  3. 根据这个列表提取并合并(如果适用)相关页面,然后输出每个页面的PDF;
  4. 根据分组将生成的PDF移动到另一个位置;

PyPDF似乎是一个不错的起点。这是我目前的进展:

from pyPdf import PdfFileWriter, PdfFileReader
import re

output = PdfFileWriter()
input1 = PdfFileReader(file("test.PDF", "rb"))
totalPages = input1.getNumPages()
print "total pages to process:" +str(totalPages)

for i in range(totalPages):
    p = i
    print "processing page %s" %str(i)
    output.addPage(input1.getPage(p))
    p = input1.getPage(p).extractText()#extract text to search for identifier
    pr = re.search("identifier", p)#search for the identifier; to be replaced with a list
    #if there's a match, do work
    if pr:
        outputStream = file("test"+str(i)+".pdf", "wb")
        output.write(outputStream)
        outputStream.close()
        print 'match on page %s' %str(i)
        print '\n'

然后我可以使用另一个库,根据它们的位置合并PDF。

不过还有一个问题:Python的re.search函数有多强大?特别是在处理不太可靠的OCR时,它能否可靠?

2 个回答

2

你试过 pypdf 吗?

这里有一个使用 pypdf 提取文本的示例: http://code.activestate.com/recipes/511465-pure-python-pdf-to-text-converter/

2

我在一些小项目中成功使用过 pypdf 这个工具。

撰写回答