检测文件夹中多个PDF的内容类型
Detect the content type of multiple PDF in a Folder
到目前为止,我在 anaconda 平台中使用 PyPDF2 在 20000+ pdf 中放置水印。该代码适用于大多数 PDF 文件,但其中有一些文件的内容是来自报告的扫描质量不佳的图像。
我想知道 python 中是否有工具或任何其他方法可以分析 PDF 的内容并确定 PDF 是图像还是包含文本字符的 pdf 文件。这将使我知道哪些文件有此缺陷并将它们放在其他文件夹中。
谢谢
我添加了我的代码。
import PyPDF2 #this library requires to be installed
import os
if __name__ == "__main__":
ROOT_PATH = "."
#STAMP_PATH = "." + "/stamped/"
TEMPLATE_PATH = "."
STAMP_PATH = "."
count = 0
for dirName, subdirList, fileList in os.walk(ROOT_PATH):
files=[]
print('Found directory: %s' % dirName)
for fileName in fileList:
if fileName.find('.pdf') > 0:
count += 1
print('\tHandling %s - %s %s' % (count, dirName, fileName))
files.append(fileName)
#=======================main code part ==========================================
file= open(fileName,'rb')
reader = PyPDF2.PdfFileReader(file)
page= reader.getPage(0)
water = open(TEMPLATE_PATH + 'StampTemplate1109.pdf','rb')
reader2 = PyPDF2.PdfFileReader(water)
waterpage = reader2.getPage(0)
#command to merge parent PDF first page with PDF watermark page
page.mergeTranslatedPage(waterpage, 0, -20, expand=True)
writer =PyPDF2.PdfFileWriter()
writer.addPage(page)
#add rest of PDF pages
for pageNum in range(1, reader.numPages): # this will give length of book
pageObj = reader.getPage(pageNum)
writer.addPage(pageObj)
#return the parent PDF file with the watermark
# here we are writing so 'wb' is for write binary
resultFile = open(STAMP_PATH + 'Reviewed ' + fileName,'wb')
writer.write(resultFile)
file.close()
resultFile.close()
#==============================================================================
print "TOTAL OF %s PROCESSED" % count
由于您已经在使用 PyPDF2,因此您可能希望使用 PageObject.extractText 函数来查看您是否在 PDF 的每一页上获得任何文本。如果您从页面中得到一个空字符串,那么它可能是一张图片。
到目前为止,我在 anaconda 平台中使用 PyPDF2 在 20000+ pdf 中放置水印。该代码适用于大多数 PDF 文件,但其中有一些文件的内容是来自报告的扫描质量不佳的图像。
我想知道 python 中是否有工具或任何其他方法可以分析 PDF 的内容并确定 PDF 是图像还是包含文本字符的 pdf 文件。这将使我知道哪些文件有此缺陷并将它们放在其他文件夹中。
谢谢
我添加了我的代码。
import PyPDF2 #this library requires to be installed
import os
if __name__ == "__main__":
ROOT_PATH = "."
#STAMP_PATH = "." + "/stamped/"
TEMPLATE_PATH = "."
STAMP_PATH = "."
count = 0
for dirName, subdirList, fileList in os.walk(ROOT_PATH):
files=[]
print('Found directory: %s' % dirName)
for fileName in fileList:
if fileName.find('.pdf') > 0:
count += 1
print('\tHandling %s - %s %s' % (count, dirName, fileName))
files.append(fileName)
#=======================main code part ==========================================
file= open(fileName,'rb')
reader = PyPDF2.PdfFileReader(file)
page= reader.getPage(0)
water = open(TEMPLATE_PATH + 'StampTemplate1109.pdf','rb')
reader2 = PyPDF2.PdfFileReader(water)
waterpage = reader2.getPage(0)
#command to merge parent PDF first page with PDF watermark page
page.mergeTranslatedPage(waterpage, 0, -20, expand=True)
writer =PyPDF2.PdfFileWriter()
writer.addPage(page)
#add rest of PDF pages
for pageNum in range(1, reader.numPages): # this will give length of book
pageObj = reader.getPage(pageNum)
writer.addPage(pageObj)
#return the parent PDF file with the watermark
# here we are writing so 'wb' is for write binary
resultFile = open(STAMP_PATH + 'Reviewed ' + fileName,'wb')
writer.write(resultFile)
file.close()
resultFile.close()
#==============================================================================
print "TOTAL OF %s PROCESSED" % count
由于您已经在使用 PyPDF2,因此您可能希望使用 PageObject.extractText 函数来查看您是否在 PDF 的每一页上获得任何文本。如果您从页面中得到一个空字符串,那么它可能是一张图片。