
OCR을 활용한 PDF/이미지 텍스트 추출 - pytesseract
들어가며
본문 문서 혹은 이미지 속 텍스트를 자동으로 인식하는 OCR(Optical Character Recognition, 광학 문자 인식) 기술은 디지털 전환 시대에 꼭 필요한 기술입니다. OCR은 온라인 명함 관리, 종이 문서 디지털화 등 다양한 분야에서 활용되고 있습니다.
이 글에서는 OCR 라이브러리인 pytesseract를 활용하여 이미지나 PDF 파일에서 텍스트를 추출하는 방법을 소개합니다.
- pytesseract 설치
- 이미지 텍스트 추출
- PDF 텍스트 추출
pytesseract 설치
pytesseract를 사용하기 위한 설치 방법은 다음과 같습니다.
1. pytesseract 설치
먼저 pip를 활용하여 이미지를 처리하는 Pillow 패키지와 pytesseract를 설치합니다.
pip install pytesseract
2. Tesseract OCR 엔진 설치
pip로 pytesseract를 설치했지만, OCR을 수행하기 위해서는 실행 파일이 필요합니다. 다음의 링크에서 윈도우용 설치 파일을 받아 설치합니다.
Home
Tesseract Open Source OCR Engine (main repository) - UB-Mannheim/tesseract
github.com
3. 실행 파일 경로 연결(윈도우 사용자 필수)
다음과 같이 필요한 패키지를 import하고 tesseract.exe의 경로를 명시하면, 텍스트를 추출할 준비는 완료됐습니다.
import pytesseract
# tesseract.exe 실행 파일 경로 설정
pytesseract.pytesseract.tesseract_cmd = r'C:\Users\Programs\Tesseract-OCR\tesseract.exe'
이미지 텍스트 추출
이미지 파일에서 OCR을 활용하여 텍스트를 추출하는 방법은 다음과 같습니다.
1. 패키지 import
먼저, 이미지 처리를 위한 PIL과 OCR에 필요한 패키지를 설치 및 import 하고 tesseract.exe를 불러옵니다.
from PIL import Image
import pytesseract
import os
pytesseract.pytesseract.tesseract_cmd = r'C:\Users\82107\AppData\Local\Programs\Tesseract-OCR\tesseract.exe'
2. 이미지 파일 열기
이미지 파일 경로를 입력하고, OCR에 적합한 형태인 RGB 형식으로 이미지를 변환합니다.
img_path = r'C:\Users\Desktop\quote.jpg'
img = Image.open(img_path).convert("RGB")
3. OCR로 한글 텍스트 추출
pytesseract.image_to_string을 활용하여 텍스트를 인식 후 추출합니다. lang='kor+eng'은 한글과 영어 모델 사용을 의미합니다.
text = pytesseract.image_to_string(img, lang='kor+eng')
print(text)
PDF 텍스트 추출
PDF 문서 안의 텍스트가 이미지로 되어 있어 일반적인 텍스트 추출 방법(.get_text())이 통하지 않는 경우, 다음과 같이 OCR을 활용하여 텍스트를 추출합니다.
1. 패키지 import
먼저, PDF 처리를 위한 PyMuPDF와 OCR에 필요한 패키지를 설치 및 import 하고 tesseract.exe를 불러옵니다.
# ! pip install pymupdf
import fitz # PyMuPDF
from PIL import Image
import pytesseract
import os
pytesseract.pytesseract.tesseract_cmd = r'C:\Users\82107\AppData\Local\Programs\Tesseract-OCR\tesseract.exe'
2. PDF 파일 열기
테스트를 위해 읽을 PDF 파일은 1페이지짜리 문서이므로 page_num을 0으로 입력했습니다. 문서에 따라 적절한 page_num 값을 입력하세요.
pdf_path = r'C:\Users\Desktop\통계+데이터+윤리+해외사례+연구.pdf'
doc = fitz.open(pdf_path)
page_num = 0
page = doc[page_num]
3. 페이지를 이미지로 렌더링
get_pixmap을 활용하여 PDF 페이지를 이미지로 렌더링합니다. Matrix(4,4)는 OCR 정확도를 높이기 위한 해상도 조절로, 4배 확대를 의미합니다. Image.frombytes()로 PIL 이미지로 변환합니다.
pix = page.get_pixmap(matrix=fitz.Matrix(4, 4)) # 4배 확대
img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
4. OCR로 한글 텍스트 추출
pytesseract.image_to_string을 활용하여 텍스트를 인식 후 추출합니다. lang='kor'은 한글 언어 모델 사용을 의미합니다.
page_text = pytesseract.image_to_string(img, lang='kor')
print(page_text[0:500])
'Python' 카테고리의 다른 글
| [파이썬] 구글 제미나이 Gemini API 활용 방법 - API 키 발급, 예제 (4) | 2025.06.27 |
|---|---|
| [파이썬] 링크 공유를 위한 QR코드 생성, 글자/이미지 삽입 - qrcode (4) | 2025.06.17 |
| [파이썬] 엑셀 통합파일(.xlsx) 시트별 저장 - ExcelWriter (4) | 2025.06.07 |
| [파이썬] 제21대 대선 후보 검색 트렌드 시각화 - pytrends, 네이버 데이터랩 (8) | 2025.05.27 |
| [모니터링] 파이썬을 활용한 로그 기록 - logging, logger (2) | 2025.05.20 |