Определить тип содержимого нескольких PDF в папке - PullRequest
0 голосов
/ 12 сентября 2018

До сих пор я использую PyPDF2 на платформе Anaconda, чтобы поместить водяной знак в 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 

1 Ответ

0 голосов
/ 13 сентября 2018

Поскольку вы уже используете PyPDF2, вы можете использовать функцию PageObject.extractText , чтобы увидеть, есть ли у вас какой-либо текст на каждой странице PDF.Если вы получаете пустую строку со страницы, то это, вероятно, изображение.

...