[Python] pdf 파일 텍스트 추출하기, pdfquery 일부분만 읽어올 때 해결 방법

파이썬 pdf 파일 텍스트 추출하기

오늘은 python pdfquery, pdfreader 패키지로 pdf 파일을 읽어 텍스트를 추출하는 방법을 알아보도록 하겠습니다.
저는 식품안전나라에서 다운로드 받은 아래 ‘1-11_엽산.pdf’ 파일의 텍스트를 추출해보려고 합니다.

1. pdfquery로 pdf 텍스트 추출하기

from pdfquery import PDFQuery

pdf_file_path = './data/1-11_엽산.pdf'
pdf = PDFQuery(pdf_file_path)
pdf.load()
text_elements = pdf.pq("LTTextLineHorizontal")
text = [t.text for t in text_elements]
text = '\n'.join(text)
print(text)

위의 코드를 통해서 1-11_엽산.pdf 파일을 읽어올 수 있어요. 읽어 온 text를 출력해보면 아래와 같은 결과를 얻을 수 있습니다.

pdfquery로 텍스트 추출 결과

잘 읽어온 것 처럼 보이지만 사실 몇몇 텍스트들이 빠진 걸 알 수 있어요. ‘2) 규격‘, ‘3) 제품의 요건‘ 등 몇몇 부분이 아예 누락된 것을 볼 수 있습니다. 이를 해결하기 위해 pdfquery 대신 pdfreader를 사용하여 파일을 읽어보겠습니다.

2. pypdf로 pdf 파일 읽기

from pypdf import PdfReader

pdf_file_path = './data/1-11_엽산.pdf'
pdf_file = open(pdf_file_path, 'rb')
pdf_reader = PdfReader(pdf_file)

#페이지 수
page_num = len(pdf_reader.pages)

#text 추출
text = ''
for pn in range(page_num):
  page = pdf_reader.pages[pn]
  text += page.extract_text()
  
print(text)

아래 이미지는 위의 코드를 사용하여 읽어온 text 입니다.

pypdf로 텍스트 추출 결과

누락없이 모든 텍스트들이 잘 읽어지는 것을 확인할 수 있어요. 감사합니다🙂

Leave a Comment