파이썬을 이용하여 PDF 안에 있는 내용을 수집하는 방법을 알아보겠습니다.
PDF 내용을 수집하기 위해 아래와 같은 모듈이 필요합니다. 몇 가지 모듈이 필요하지만 복사해서 넣으면 됩니다. 아래 PDF2TXT도 조금 길지만, 이해보다는 응용 먼저 해봅시다.
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO
def pdf2txt(pdf_file):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
fp = open(pdf_file, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ""
maxpages = 0
caching = True
pagenos = set()
for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,
caching=caching, check_extractable=True):
interpreter.process_page(page)
text = retstr.getvalue()
fp.close()
device.close()
retstr.close()
return text
OS 모듈은 Operating System의 약자로서 운영체제에서 제공되는 여러 기능을 파이썬에서 수행할 수 있게 해줍니다. OS모듈을 통해 C드라이브에 있는 workspace 로 가서 sample 검색하고 「인공지능 업무자동화교육」 참가신청서.pdf를 pdf_path로 불러오고 있습니다.
import os
os.chdir('C:\\workspace')
os.listdir('sample/')
pdf_path='sample/「인공지능 업무자동화교육」 참가신청서.pdf'
아래는 「인공지능 업무자동화교육」 참가신청서.pdf 내용입니다.
pdf_path로 불러온 해당 PDF를 pdf2txt를 통해 읽고 있습니다.
text = pdf2txt(pdf_path)
text
아래는 해당 PDF 크롤링 결과입니다.
'[서식. 참가신청서]\\n\\npdf 크롤링 되었습니다 ~ \\n\\n\\x0c'
크롤링 결과를 보면 깔끔하지 않은 데요. 일단 '\n\n'를 제거해봅시다. split 통해 test에 있는 '\n\n' 제거했습니다.