개인 프로젝트를 진행하다가 pdf를 읽어야 되는데 패키지라 여러 개라 어떤 패키지를 골라야 하는지 고민을 좀 했다.
나의 요구조건은 띄어쓰기가 제대로 되고 표가 포함된 pdf를 잘 읽을 수 있는지다.
테스트용 pdf

코드
def read_pdf(key):
file_stream = get_pdf_file_stream(key)
reader = PyPDF2.PdfReader(file_stream)
text = ''
for page in range(len(reader.pages)):
text += reader.pages[page].extract_text()
print("[INFO] Extracted text from PDF:")
print(text[:300])
결과
[time:3.2418527603149414 ] Extracted text from PDF:
2. A WS EC2 vs Light sail
12 . A W S E C 2 v s L i g h t s a i l
Amaz on Light sail Amaz on EC2
사용사용자 지정 코드 및 일반 CMS 를
포함한 간단한 웹 애플리케이션 및
웹 사이트에 사용됩니다 .HPC, 빅 데이터 및 분석 워크로드
와 같은 소규모 내지 엔터프라이즈
애플리케이션에 사용됩니다 .
성능소규모에서 중간 규모에 이르는 워
크로드가 있는 애플리케이션에 사용
됩니다 .복잡한 아키텍처에서 소규모
코드
def read_pdf(key):
file_stream = get_pdf_file_stream(key)
docs = pdfplumber.open(file_stream)
text = ''
for page in docs.pages:
text += page.extract_text()
print("[INFO] Extracted text from PDF:")
print(text[:300])
결과
[time:3.5518717765808105 ] Extracted text from PDF:
2. AWS EC2 vs Lightsail
Amazon Lightsail Amazon EC2
사용자 지정 코드 및 일반 CMS를 HPC, 빅 데이터 및 분석 워크로드
사용 포함한 간단한 웹 애플리케이션 및 와 같은 소규모 내지 엔터프라이즈
웹 사이트에 사용됩니다. 애플리케이션에 사용됩니다.
소규모에서 중간 규모에 이르는 워
복잡한 아키텍처에서 소규모 이상의
성능 크로드가 있는 애플리케이션에 사용
워크로드에 사용됩니다.
됩니다.
Amazon EC2에서 애플리케이션을
배포하는 것은 애플리케이션 유형,
몇 번의 클릭만으로 Lightsai
결과
def read_pdf(key):
file_stream = get_pdf_file_stream(key)
doc = fitz.open(stream=file_stream)
text = ''
for page in doc:
text += page.get_text()
print("[INFO] Extracted text from PDF:")
print(text[:300])
결과
[time:3.208136558532715 ] Extracted text from PDF:
2. AWS EC2 vs Lightsail
1
2. AWS EC2 vs Lightsail
Amazon Lightsail
Amazon EC2
사용
사용자 지정 코드 및 일반 CMS를
포함한 간단한 웹 애플리케이션 및
웹 사이트에 사용됩니다.
HPC, 빅 데이터 및 분석 워크로드
와 같은 소규모 내지 엔터프라이즈
애플리케이션에 사용됩니다.
성능
소규모에서 중간 규모에 이르는 워
크로드가 있는 애플리케이션에 사용
됩니다.
복잡한 아키텍처에서 소규모 이상의
워크로드에 사용됩니다.
편의성
몇 번의 클릭만으로 Lightsail에서
애플리케이션
시간: PyMuPDF > PyPDF2 > pdfplumber
PyMuPDF가 표의 인덱스와 각 셀을 가장 잘 나누어 주었다. 맨 위에 알 수 없는 중복이 나타나긴 하지만... 다른 패키지는 인덱스와 셀이 섞여있는 경우도 있어서 현재까지로는 PyMuPDF를 사용하는게 가장 안전할 것 같다