작지만 조금씩 발전하고 있으니 좋음
코드도 깔끔하게 쓰려고 노력하는게 좋음
[✔] 각 조건일때 키밸류 읽는것 해보기
[✔] TS Expert 주엘지에 가져갈것 확인해보기
[✔] PDF 문서 추출 테스트
from koalanlp.proc import SentenceSplitter, Tagger
tagger = Tagger(...) ### 품사분석기 ###
tagged_sentence = tagger.tagSentence("무엇인가 품사분석을 수행할 문단")
paragraph = SentenceSplitter.sentencesTagged(tagged_sentence[0]) # tagged_sentence는 각 인자별로 한 문장으로 간주된 List[Sentence]임.
from koalanlp import API
from koalanlp.proc import SentenceSplitter
splitter = SentenceSplitter(splitter_type=API.HANNANUM)
paragraph = splitter("분리할 문장을 이렇게 넣으면 문장이 분리됩니다. 간단하죠?")
# 또는 splitter.sentences(...), splitter.invoke(...)
print(paragraph[0]) # == 분리할 문장을 이렇게 넣으면 문장이 분리됩니다.
print(paragraph[1]) # == 간단하죠?
$pip install nltk
$python -m nltk.downloader all
1) Tabula
장점:
간편함: 단순한 테이블 추출에 있어서 설치와 사용이 비교적 쉽다.
Java 기반: Java에 의존하고 있으며, 일정한 레이아웃을 가진 PDF에서 잘 작동한다.
성능: 텍스트 기반의 PDF (텍스트를 선택할 수 있는 PDF)에서 특히 잘 작동한다.
단점:
Java 설치 필요: Tabula를 사용하려면 Java가 설치되어 있어야 한다.
복잡한 테이블에 취약: 셀 병합이 있거나 복잡한 레이아웃을 가진 테이블을 처리하는 데 한계가 있을 수 있다.
2) Camelot
장점:
파이썬만 사용: Java 의존성이 없어서 파이썬 환경에서 더 가볍게 사용할 수 있다.
정교한 제어 가능: 테이블 추출을 더 세밀하게 조정할 수 있는 옵션이 많아 복잡한 테이블에서도 효과적이다.
Stream 방식: 테이블과 텍스트의 경계가 명확하지 않은 경우에도 물리적 구조에 기반해 테이블을 추출할 수 있는 방법을 제공한다.
스캔된 PDF에 강함: 스캔된 PDF나 복잡한 레이아웃에서도 Tabula보다 유연하게 대응할 수 있다.
단점:
설정이 필요함: Tabula보다 초기 설정과 튜닝이 더 복잡할 수 있다.
속도 문제: 간단한 PDF에서는 Tabula보다 처리 속도가 느릴 수 있다.
텍스트 추출과 테이블 형식으로 리턴하는건 둘 다 잘 나왔다.
사실 camelot이 더 잘 나올줄 알았는데, 실제로 테스트 결과 camelot은 테이블이 분리되는 증상이 있어서 tabula가 나은듯 추출되는 결과물은 dataframe 형식인듯 하다.
!apt-get install openjdk-11-jdk
!pip install tabula-py
import tabula
tables = tabula.read_pdf(file_name, pages='all')
for table in tables:
print(table)
!apt-get install ghostscript
!pip install camelot-py[cv]
!pip install PyPDF2==1.26.0
import camelot
tables = camelot.read_pdf(file_name, pages='all')
for table in tables:
print(table.df)
dataframe을 dictionary처럼 다뤘을때 나는 에러.
.to_dict()를 해야함.