RAG를 하려면 수 많은 Raw Data들을 파싱해야 한다
Raw Data들 중에서도 가장 범용적으로 사용되는 파일은 PDF이기 때문에, 이번 글에서는 여러 파이썬 라이브러리의 PDF 파일에서 한글을 추출해내는 능력을 비교해 볼 것이다
인터넷 검색을 통해 무료 + 많은 사람들이 사용하고 있는 5개의 라이브러리를 실험 대상으로 정했다.
PyPDFium2, PyMuPDF, PyPDF2, PDFMiner, PDFPlumber 이렇게 5개를 비교해보도록 하자
실험은 가장 무난한 5개의 Domain(medical, law, finance, commerce, public)의 PDF로 진행했다.
텍스트 추출 능력만 실험하기 위해, 이미지나 표가 있는 문서들은 일단 제외하였다.
from langchain_community.document_loaders import PyPDFium2Loader
loader = PyPDFium2Loader(pdf_path)
load = loader.load()
print(load[0].page_content)
import fitz
doc = fitz.open(pdf_path)
for page in doc:
text = page.get_text()
print(text)
from PyPDF2 import PdfReader
reader = PdfReader(pdf_path)
pages = reader.pages
text = ""
for page in pages:
sub = page.extract_text()
text += sub
print(text)
from pdfminer.high_level import extract_pages
from pdfminer.layout import LTTextContainer
def extract_text_by_page(pdf_path):
for page_layout in extract_pages(pdf_path):
page_text = ""
for element in page_layout:
if isinstance(element, LTTextContainer):
page_text += element.get_text()
yield page_text
for page_number, page_text in enumerate(extract_text_by_page(pdf_path), start=1):
print(f"Page {page_number}:\\n{page_text}\\n{'-'*40}\\n")