This article mainly introduces the method of Python parsing and reading the contents of PDF file, and describes the relevant operation skills of Python2.7 to read PDF in Win32 and Win64 environment, according to the example form, and the friends can refer to the following
This example describes how Python parses and reads the contents of a PDF file. Share to everyone for your reference, as follows:
First, the problem description
Use Python to read PDF text content.
Second, the effect
Third, the operating environment
python2.7
Iv. libraries that need to be installed
Pip Install Pdfminer
V. Realization of source Code
Code 1 (Win64)
# Coding=utf-8import sysreload (SYS) sys.setdefaultencoding (' utf-8 ') import timetime1=time.time () Import Os.pathfrom Pdfminer.pdfparser Import pdfparser,pdfdocumentfrom pdfminer.pdfinterp import Pdfresourcemanager, Pdfpageinterpreterfrom pdfminer.converter Import pdfpageaggregatorfrom pdfminer.layout import LTTextBoxHorizontal, Laparamsfrom pdfminer.pdfinterp Import Pdftextextractionnotallowedresult=[]class Cpdf2txtmanager (): Def __init__ ( Self): "Constructor" Def changepdftotext (Self, filePath): File = open (path, ' RB ') # opened in binary read mode #用文件 object to create a PDF document Parser Praser = pdfparser (file) # Create a PDF document DOC = Pdfdocument () # The Connection analyzer and the Document Object Praser.set_document ( Doc) Doc.set_parser (praser) # provides initialization password # creates an empty string without a password doc.initialize () # Detects if the document provides a TXT conversion, ignores if not Doc.is_extractable:raise pdftextextractionnotallowed # Create PDF Explorer to manage shared resources Rsrcmgr = Pdfresourcemanager () # Create a PDF device Object laparams = Laparams () device = Pdfpageaggregator (rsrcMgr, Laparams=laparams) # Create a PDF interpreter Object interpreter = Pdfpageinterpreter (rsrcmgr, device) pdfstr = ' # Loop through the list, Each time a page is processed for the page in Doc.get_pages (): # doc.get_pages () Gets the page list Interpreter.process_page (page) # accepts the Ltpage Object layout = Device.get_result () for x in Layout:if hasattr (x, "Get_text"): # Print X.get_ Text () Result.append (X.get_text ()) FileNames = Os.path.splitext (FilePath) with open (filenames[0 ] + ' txt ', ' WB ') as F:results = X.get_text () print (results) f.write (results + ' \ n ') if __ name__ = = ' __main__ ': ' Parse PDF text, save to TXT file ' path = U ' c:/data3.pdf ' Pdf2txtmanager = Cpdf2txtmanager () pdf2tx Tmanager.changepdftotext (path) # print result[0] time2 = Time.time () print u ' OK, parse pdf end! ' Print U ' total time: ' + str (time2-time1) + ' s '
Code 2 (WIN32)
# Coding=utf-8import sysreload (SYS) sys.setdefaultencoding (' utf-8 ') import timetime1=time.time () Import Os.pathfrom Pdfminer.pdfinterp import Pdfresourcemanager, pdfpageinterpreterfrom pdfminer.converter import PDFPageAggregatorfrom Pdfminer.layout Import laparamsfrom pdfminer.pdfpage import pdftextextractionnotallowedfrom pdfminer.pdfparser Import Pdfparserfrom pdfminer.pdfdocument Import pdfdocumentfrom pdfminer.pdfpage import Pdfpageresult=[]class Cpdf2txtmanager (): Def __init__ (self): "Constructor" Def changepdftotext (Self, filePath): File = Ope N (Path, ' RB ') # opens in binary read mode #用文件对象来创建一个pdf文档分析器 praser = pdfparser (file) # Create a PDF document DOC = Pdfdocument (praser) # Detects if document provides TXT conversion, does not provide ignore if not doc.is_extractable:raise pdftextextractionnotallowed # create PDF Explorer to manage shared resources Rsrcmgr = Pdfresourcemanager () # Creates a PDF device Object laparams = Laparams () device = Pdfpageaggregator (Rsrcmgr, laparams=l Aparams) # Create a PDF interpreter Object interpreter = PdfpageinterpretER (rsrcmgr, device) Pdfstr = "# loops through the list, processing one page at a time for page in Pdfpage.create_pages (DOC): # doc.get_pages () won Fetch page List interpreter.process_page (page) # accepts the page's Ltpage object layout = Device.get_result () for X in Layout: If Hasattr (x, "Get_text"): # Print X.get_text () result.append (X.get_text ()) FileNames = Os.path.splitext (FilePath) with open (Filenames[0] + ' txt ', ' WB ') as F:results = X.get_text () Print (results) f.write (results + ' \ n ') if __name__ = = ' __main__ ': "' parse PDF text, save to TXT file ' path = U ' C:/36.pdf ' Pdf2txtmanager = Cpdf2txtmanager () pdf2txtmanager.changepdftotext (path) # print result[0] time2 = Time.time () print U ' OK, parse pdf end! ' Print U ' total time: ' + str (time2-time1) + ' s '