👨🏼‍💻

ch2 - 2. PDF 크롤링

 

1. PDF 크롤링

파이썬을 이용하여 PDF 안에 있는 내용을 수집하는 방법을 알아보겠습니다.

2. PDF 모듈 입력하기 및 PDF2TXT 정의하기

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

4. OS 모듈 및 PDF 불러오기

OS 모듈은 Operating System의 약자로서 운영체제에서 제공되는 여러 기능을 파이썬에서 수행할 수 있게 해줍니다. OS모듈을 통해 C드라이브에 있는 workspace 로 가서 sample 검색하고 「인공지능 업무자동화교육」 참가신청서.pdf를 pdf_path로 불러오고 있습니다.
import os os.chdir('C:\workspace') os.listdir('sample/') pdf_path='sample/「인공지능 업무자동화교육」 참가신청서.pdf'

5. PDF 읽기

아래는 「인공지능 업무자동화교육」 참가신청서.pdf 내용입니다.
notion imagenotion image
pdf_path로 불러온 해당 PDF를 pdf2txt를 통해 읽고 있습니다.
text = pdf2txt(pdf_path) text
아래는 해당 PDF 크롤링 결과입니다.
'[서식. 참가신청서]\n\npdf 크롤링 되었습니다 ~ \n\n\x0c'
 

6. PDF 내용 정리하기

크롤링 결과를 보면 깔끔하지 않은 데요. 일단 '\n\n'를 제거해봅시다. split 통해 test에 있는 '\n\n' 제거했습니다.
pdf_list = text.split('\n\n') pdf_list
아래는 제거된 결과물이고요.
['[서식. 참가신청서]', 'pdf 크롤링 되었습니다 ~ ', '\x0c']
strip를 통해 test에 '\x0c'도 마저 제거해봅시다.
text.strip()
아주 깔끔해졌죠?
'[서식. 참가신청서]\n\npdf 크롤링 되었습니다 ~'
 

7. PDF 크롤링 응용방안

업무를 하다 보면 한글과 더불어 PDF로 다수의 파일을 받을 때가 있습니다. 이럴 때 일일이 들어가서 확인하는 작업을 거치는 데요. PDF 크롤링을 통해 일정한 양식의 PDF 파일에 있는 정보를 크롤링하여 정리할 수 있습니다. PDF 파일 업무 자동화로 볼 수 있습니다.