Python pdf text 읽기
파이썬으로 pdf 파일에서 텍스트를 추출해내는 방법에 대하여 다루어보도록 하겠습니다.
여기에는 매우 다양한 방법이 있지만 여기서는 간편한 방법 예시 2가지로 pypdf2 모듈과
tika 모듈을 활용한 예제를 살펴보겠습니다.
이 두 모듈이 설치되어 있지않다면 먼저 아래 명령어로 사용할 모듈을 설치해주세요.
!pip install pypdf2
!pip install tika
아래의 매우 간단한 텍스트 두 줄이 있는 pdf_1.pdf 파일을 예시로 설명하겠습니다.
pypdf2 모듈 활용 방법
먼저, PdfFileReader를 활용하여 아래의 형식으로
파일 디렉토리와 읽기 모드(rb) 부분을 지정해줍니다.
from PyPDF2 import PdfFileReader
pdf1 = PdfFileReader(open("pdf_1.pdf", 'rb')) # 디렉토리 주의
이제 위에서 선언한 변수를 가지고 다음 코드처럼 파싱을 진행해주시면 됩니다.
(n 페이지 부분의 내용을 가져오려면 pages에 대한 인덱스를 n-1로 설정해주세요.)
# 1 페이지의 내용을 가져오는 경우(pages[1], pages[2], ...는 2, 3, ... 페이지 의미)
pdf1.pages[0].extractText().split('\n')
위의 코드 실행 결과, 아래처럼 한 줄의 텍스트씩 리스트에 담겨진 결과를 받을 수 있습니다.
['1번 파일입니다 .', '@@@ 1번 파일 내용 @@@']
tika 모듈 활용 방법
여기서는 tika 모듈 내의 parser 메소드로 pdf 파일을 읽어오면 되는데,
pypdf2에서와는 달리 input으로 파일의 디렉토리만 지정해주시면 됩니다.
from tika import parser
pdf1 = parser.from_file("pdf_1.pdf") # 디렉토리 주의
위에서 읽어들인 변수 내에는 다양한 값들이 딕셔너리와 비슷한 형태로 저장되어 있는데,
이 중 content 인자 내에 읽어들일 텍스트가 들어있습니다.
한 줄의 내용씩 리스트의 원소로 가져오기 위해서는 아래처럼 코드를 작성해주시면 됩니다.
pdf1['content'].strip().split('\n')
실행 결과는 다음과 같은데 여러 페이지의 내용이 전부 모아져서 추출된다는 특징이 있으며,
pypdf2를 사용한 경우와 미세한 결과 차이가 있을 수 있습니다.
(해당 예제에서는 첫 줄의 콤마 이전에 공백의 여부가 다릅니다.)
['1번 파일입니다.', '@@@ 1번 파일 내용 @@@']
'Python > Utils' 카테고리의 다른 글
구글 코랩(Colab)에서 파일을 업로드하는 3가지 방법 (0) | 2022.08.23 |
---|---|
파이참(Pycharm) 디버깅 모드 사용 방법 정리(변수 값, 오류 체크) (0) | 2022.07.05 |
파이썬 미분 구현 예제(미분계수, 도함수) (0) | 2022.06.30 |