from?urllib.request?import?urlopen
from?pdfminer.pdfparser?import?PDFParser,?PDFDocument
from?pdfminer.pdfinterp?import?PDFResourceManager,?PDFPageInterpreter
from?pdfminer.pdfdevice?import?PDFDevice
from?pdfminer.converter?import?PDFPageAggregator
from?pdfminer.layout?import?LTTextBoxHorizontal,?LAParams
#?獲取文檔
#?fp?=?open("naacl06-shinyama.pdf",?'rb')
fp?=?urlopen('https://www.tencent.com/zh-cn/articles/802741466496787.pdf')
#?創建解釋器
parser?=?PDFParser(fp)
#?PDF文檔對象
doc?=?PDFDocument()
#?連接解釋器和文檔對象
parser.set_document(doc)
doc.set_parser(parser)
#?初始化文檔
doc.initialize()
#?創建PDF資源管理器
resource?=?PDFResourceManager()
#?創建一個PDF參數分析器
laparam?=?LAParams()
#?創建聚合器
device?=?PDFPageAggregator(resource,?laparams=laparam)
#?創建PDF頁面解析器
interpreter?=?PDFPageInterpreter(resource,?device)
#?循環遍歷列表,每次處理一頁的內容
#?doc.get_pages()?獲取page列表
for?page?in?doc.get_pages():
????#?使用頁面解釋器來讀取
????interpreter.process_page(page)
????#?使用聚合器獲得內容
????layout?=?device.get_result()
????for?out?in?layout:
????????if?hasattr(out,?'get_text'):
????????????print(out.get_text())