Tesseract OCR 설치 방법
초보자를 위한 설치 가이드 & 흔한 실수
Tesseract는 세계에서 가장 널리 사용되는 오픈소스 OCR 엔진입니다. 무료이고, 100개 이상의 언어를 지원하며, 모든 플랫폼에서 실행됩니다. 하지만 처음 설치하고 제대로 된 결과를 얻기까지는 GitHub README에 나와 있지 않은 몇 가지 단계가 필요합니다. 이 가이드에서는 설치, 첫 번째 텍스트 추출, 실제로 자주 사용하는 명령어 치트 시트, 그리고 초보자들이 가장 많이 실수하는 세 가지 문제를 다룹니다.
핵심 요약
- Tesseract는 세계에서 가장 많이 사용되는 오픈소스 OCR 엔진으로, 무료이며 100개 이상의 언어를 지원하고 깨끗한 스캔본에서 95~99%의 정확도를 보입니다. 하지만 기본 설정으로는 휴대폰 사진이나 영수증에서 종종 깨진 단어, 병합된 줄, 또는 악명 높은 "Empty page!!" 오류가 발생합니다.
- 초보자 문제의 약 80%는 세 가지 수정 가능한 실수에서 비롯되며, 그중 어느 것도 "엔진이 나쁘다"는 이유가 아닙니다. 가장 효과적인 해결책은 PSM 모드를 변경하는 것입니다. PSM 3("완전 자동")에서 쓰레기를 반환하던 영수증이
--psm 4플래그 하나로 깨끗하고 읽기 쉬운 출력을 생성할 수 있습니다. - 모든 Tesseract 사용자는 결국 같은 벽에 부딪힙니다. 송장 번호, 날짜, 합계, 품목이 모두 문자로 존재하지만, 도구는 어떤 것이 무엇인지 전혀 알지 못합니다. 올바른 스프레드시트 열에 들어가는 명명된 필드를 얻으려면 문자뿐만 아니라 문서 의미를 읽는 계층이 필요합니다.
Tesseract OCR이란 무엇인가 (그리고 아닌 것)
Tesseract는 1980년대 Hewlett-Packard에서 개발되어 2006년부터 Google이 유지 관리하는 오픈소스 광학 문자 인식 엔진입니다. 스캔한 문서나 페이지 사진 같은 텍스트 이미지를 받아 문자 단위로 텍스트를 추출합니다.
한 가지에 특화되어 있습니다: 깨끗한 인쇄 텍스트의 문자 인식. 300 DPI로 스캔한 타자 문서는 95-99% 정확도로 단어를 반환합니다. 휴대폰으로 찍은 영수증 사진은 정확도가 떨어집니다. 손글씨 양식은 사실상 사용이 불가능합니다.
이 경계를 이해하는 것이 중요합니다. 대부분의 초보자는 "OCR이 나쁘다"고 생각하지만, 실제로는 올바른 도구를 잘못된 문제에 적용한 경우가 많습니다. Tesseract는 문자를 읽습니다. 문서 구조를 이해하지 못합니다. — 어떤 숫자가 송장 합계인지 항목별 소계인지 알지 못하며, 표를 인식하지 못하고, 의미론적 필드 개념도 없습니다. 평문 텍스트 출력은 버그가 아니라 기능입니다. Tesseract가 최신 AI 추출과 어떻게 비교되는지 자세히 알아보려면 OCR이란 무엇인가 설명과 최고의 오픈소스 OCR 도구 비교를 참조하세요.
Tesseract는 Apache 2.0 라이선스로 배포되며, 무료로 사용, 수정 및 재배포할 수 있습니다.
설치: 세 가지 운영체제, 각각 하나의 명령어
Tesseract는 GUI 설치 마법사(Windows NSIS 설치 프로그램 제외)와 함께 제공되지 않습니다. Linux와 macOS에서는 시스템 패키지 관리자를 통해, Windows에서는 타사 설치 프로그램을 통해 설치합니다. 핵심은 엔진 과 필요한 언어 데이터를 모두 설치하는 것입니다.
아래 표는 각 OS의 기본 설치 방법을 설명합니다. 설치 후에는 항상 tesseract --version으로 확인하세요.
| 운영체제 | 설치 명령어 | 추가 언어 데이터 |
|---|---|---|
| Ubuntu/Debian Linux | sudo apt install tesseract-ocr | sudo apt install tesseract-ocr-deu (독일어), tesseract-ocr-fra (프랑스어) 등 |
| macOS (Homebrew) | brew install tesseract | brew install tesseract-lang (모든 언어 한 번에) |
| Windows | UB Mannheim에서 다운로드 (64비트 설치 프로그램) | 설치 중 언어 선택, 또는 .traineddata 파일을 C:\Program Files\Tesseract-OCR\tessdata\에 다운로드 |
Windows에서 중요한 세부 사항: 일부 버전에서는 설치 프로그램이 Tesseract를 시스템 PATH에 자동으로 추가하지 않습니다. 설치 디렉터리(일반적으로 C:\Program Files\Tesseract-OCR)를 시스템 PATH에 추가하거나, TESSDATA_PREFIX 환경 변수를 tessdata 폴더를 가리키도록 설정해야 합니다. 이것은 초보자 오류의 가장 흔한 원인이며, 아래 문제 해결 섹션에서 자세히 다룹니다.
첫 번째 추출: Python + pytesseract
Tesseract는 명령줄에서 직접 사용할 수 있지만, 대부분의 개발자는 Python에서 호출하기를 원합니다. pytesseract 라이브러리는 Tesseract 바이너리를 위한 깔끔한 Python 래퍼를 제공합니다.
Python 패키지를 설치하세요:
pip install pytesseract pillow인쇄된 텍스트가 선명한 이미지(타자 편지, 스캔한 문서 페이지, 깨끗한 영수증 사진)를 찾아 작업 디렉토리에 sample.png로 저장하세요. 그런 다음 실행하세요:
from PIL import Image
import pytesseract
img = Image.open('sample.png')
text = pytesseract.image_to_string(img)
print(text)모든 것이 올바르게 설치되었다면 추출된 텍스트가 터미널에 출력되는 것을 볼 수 있습니다. TesseractNotFoundError: tesseract is not installed or it's not in your PATH 오류가 발생하면 아래 문제 해결 섹션으로 이동하세요. 이것이 문제 #1이며 해결 방법은 간단합니다.
Windows에서는 pytesseract에 Tesseract 실행 파일의 위치를 알려줘야 할 수도 있습니다:
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'첫 번째 추출에서 기대할 수 있는 것: 깨끗한 고해상도 문서에서는 적절한 줄바꿈과 함께 정확한 텍스트를 얻을 수 있습니다. 저화질 사진이나 복잡한 레이아웃의 문서에서는 단어가 깨지고, 줄이 합쳐지고, 문자가 누락될 수 있습니다. 이것은 버그가 아닙니다. Tesseract는 깨끗한 출력을 위해 깨끗한 입력이 필요합니다. 실제 문서에서는 이미지 전처리(임계값 처리, 기울기 보정, 노이즈 제거)가 종종 필요합니다.
실제로 사용할 5가지 명령어
Tesseract의 명령줄 인터페이스에는 수십 개의 옵션이 있습니다. 실제로는 정기적으로 소수만 사용하게 됩니다. 다음은 치트 시트입니다:
기본 텍스트 추출
tesseract scan.png stdout추출된 텍스트를 터미널에 바로 출력합니다. stdout 대신 output을 사용하면 output.txt로 저장됩니다.
언어 지정
tesseract scan.png stdout -l deu-l 플래그와 3자리 ISO 코드를 사용합니다. 여러 언어: -l eng+deu+fra. 이 플래그가 없으면 Tesseract는 기본적으로 영어만 인식합니다.
페이지 분할 모드 (PSM)
tesseract receipt.png stdout --psm 4가장 영향력이 큰 튜닝 파라미터입니다. PSM 4는 단일 텍스트 열을 가정합니다(송장에 적합). PSM 6은 균일한 블록, PSM 7은 이미지를 한 줄로 처리합니다. 표가 깨져 나올 때는 보통 PSM을 조정하면 해결됩니다.
검색 가능한 PDF 출력
tesseract scan.png output pdf원본 이미지 위에 텍스트 레이어가 있는 PDF를 생성합니다. 스캔 문서를 보관하면서 검색 가능하게 유지하는 데 유용합니다. 필요에 따라 -l 및 --psm과 함께 사용할 수 있습니다.
폴더 내 모든 이미지 일괄 처리
for file in *.jpg; do tesseract "$file" "${file%.jpg}"; done현재 디렉토리의 모든 JPG 파일을 처리하여 이미지당 하나의 .txt 파일을 생성합니다. .jpg 확장자를 .png 또는 사용 중인 파일 형식으로 변경하세요. Windows PowerShell에서는 다음 명령어와 동일합니다: Get-ChildItem *.jpg | ForEach-Object { tesseract $_.Name $_.BaseName }.
PSM 모드 이해하기: 가장 중요한 단일 설정
Tesseract는 14가지 페이지 분할 모드(PSM 0–13)를 제공합니다. 기본값은 PSM 3(완전 자동 페이지 분할)입니다. 실제 문서에서는 자동 모드가 잘못 추측하는 경우가 많으며, 이 설정을 변경하는 것이 가장 큰 효과를 볼 수 있는 조정입니다.
실제로 사용하게 될 모드에 대한 실용적인 가이드는 다음과 같습니다:
| PSM | 기능 | 사용 시기 |
|---|---|---|
3 | 완전 자동 페이지 분할 (기본값) | 단일 텍스트 블록과 명확한 레이아웃을 가진 간단한 페이지. 편지, 기사, 간단한 문서에 적합합니다. |
4 | 가변 크기의 단일 텍스트 열로 가정 | 인보이스 및 양식에 최적. 인보이스는 일반적으로 헤더와 라인 항목의 글꼴 크기가 다른 단일 데이터 열로 구성됩니다. PSM 4는 행을 함께 유지합니다. |
6 | 단일 균일 텍스트 블록으로 가정 | 전체 이미지가 하나의 연속된 단락인 경우. PSM 6은 4보다 엄격하며, 전체에 걸쳐 균일한 글꼴과 줄 간격을 가정합니다. |
7 | 이미지를 단일 텍스트 줄로 처리 | 번호판, 바코드 번호, 단일 줄 문서 필드. PSM 7은 Tesseract에 "정확히 한 줄의 텍스트가 있습니다. 읽으십시오."라고 알립니다. |
11 | 희소 텍스트 — 가능한 많은 텍스트를 찾되 순서 없음 | 페이지 전체에 텍스트가 흩어져 있는 문서 — 표지판, 텍스트가 겹쳐진 스크린샷, 레이아웃이 중요하지 않은 혼합 콘텐츠 이미지. |
PSM 모드에 대한 직관을 기르는 가장 쉬운 방법은 하나의 이미지를 각 모드로 실행하여 출력을 비교하는 것입니다. PSM 3에서 쓰레기를 반환하는 영수증이 PSM 4에서는 깨끗하고 읽기 쉬운 출력을 반환하는 경우가 많습니다. 잘못된 PSM 모드는 초보자가 "Tesseract가 작동하지 않는다"고 결론짓는 가장 흔한 원인입니다. 실제로는 잘 작동하지만 잘못된 레이아웃 가정을 사용하고 있는 것입니다.
Tesseract 출력을 개선하는 이미지 전처리에 대한 자세한 가이드는 OCR 정확도 향상 방법에 대한 문서를 참조하십시오.
언어 팩: 영어 외 언어 지원 추가하기
Tesseract는 100개 이상의 언어를 지원하지만, 기본 설치에는 영어만 포함되어 있습니다. 추가 언어는 .traineddata 파일 형태로 제공되며, Tesseract의 tessdata 디렉토리에 넣어 사용합니다.
공식 traineddata 저장소는 세 가지이며, 용도에 맞게 선택해야 합니다:
tessdata_fast— 속도에 최적화된 LSTM 기반 모델입니다.tessdata_best보다 약 2~3배 빠르며 정확도 손실은 미미합니다. 대부분의 사용자에게 권장합니다.tessdata_best— 가장 정확한 LSTM 모델입니다. 약 2~3배 느리지만, 정확도가 중요하고 처리 속도가 문제되지 않을 때 사용합니다.tessdata(레거시) — 레거시 엔진 모델과 LSTM 모델을 모두 포함합니다. OEM 모드 0 또는 2(레거시 엔진)를 사용하려면 필요합니다.
수동으로 언어를 추가하려면 tessdata_fast 저장소에서 .traineddata 파일을 다운로드하여 tessdata 디렉토리에 넣으세요:
# Linux 기본 tessdata 위치
sudo cp ~/Downloads/deu.traineddata /usr/share/tesseract-ocr/5/tessdata/
# macOS (Homebrew 기본)
cp ~/Downloads/deu.traineddata /opt/homebrew/share/tessdata/
# Windows
# C:\Program Files\Tesseract-OCR\tessdata\에 복사Ubuntu/Debian에서는 언어 패키지를 직접 설치하는 것이 더 쉽습니다: 독일어는 sudo apt install tesseract-ocr-deu, 프랑스어는 tesseract-ocr-fra 등으로 설치합니다. macOS에서는 brew install tesseract-lang 명령어로 모든 언어 팩을 한 번에 설치할 수 있습니다.
가장 흔한 3가지 문제 (그리고 해결 방법)
다양한 환경에서 Tesseract를 설정해본 결과, 다음 세 가지 문제가 초보자 문제의 약 80%를 차지합니다.
TesseractNotFoundError / "tesseract is not in your PATH"
이 오류는 Tesseract 바이너리(설치된 엔진)가 설치되지 않았거나 시스템이 찾을 수 없을 때 발생합니다.
진단: 터미널을 열고 tesseract --version을 실행하세요. "command not found"가 뜨면 Tesseract가 PATH에 없는 것입니다.
해결 (Linux/macOS): 패키지 관리자는 보통 PATH에 포함된 표준 경로에 설치합니다. 그렇지 않다면 export PATH=$PATH:/usr/bin/tesseract를 실행하거나 패키지 관리자로 재설치하세요.
해결 (Windows): Tesseract 설치 디렉토리를 시스템 PATH에 추가하세요(시스템 속성 → 환경 변수 → PATH 편집 → C:\Program Files\Tesseract-OCR 추가). 또는 Python 스크립트에서 직접 설정: pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'.
"빈 페이지" 또는 쓰레기 출력 — 잘못된 PSM 모드
영수증이나 인보이스에서 Tesseract를 실행했는데, 문자가 뒤죽박죽 합쳐져서 나오거나 "Empty page!!"가 뜹니다.
진단: 기본 PSM 3은 전체 페이지 텍스트 레이아웃을 가정합니다. 영수증은 보통 좁은 단일 열입니다. Tesseract가 열과 줄을 감지하려다 혼란을 겪어 모든 것을 합치거나 포기합니다.
해결: 단일 열 문서에는 PSM 4(--psm 4), 균일한 블록에는 PSM 6, 한 줄에는 PSM 7을 시도하세요. 특정 영역을 추출하려면 먼저 이미지를 해당 영역으로 자른 후 PSM 6 또는 7을 시도하세요.
Reddit r/learnpython의 한 사용자는 이렇게 직설적으로 말했습니다: "대부분의 사람들은 전처리 단계를 건너뛰고 정확도가 낮은 이유를 궁금해합니다." 휴대폰 사진의 경우, 임계값 처리(순수 흑백으로 변환) 단계를 추가하면 쓸모없는 출력과 사용 가능한 텍스트의 차이가 생기는 경우가 많습니다.
이미지 전처리 불필요 — 휴대폰 사진은 결과가 나쁩니다
Tesseract는 스캔 문서용으로 설계되었습니다 — 평평하고, 조명이 균일하며, 300 DPI, 정렬이 곧바른 상태. 휴대폰 사진은 원근 왜곡, 그림자, 불균일한 조명, 페이지 곡률을 유발합니다. Tesseract는 이 중 어느 것도 잘 처리하지 못합니다.
진단: 휴대폰 사진에서 문자가 누락되거나, 임의의 기호가 나타나거나, 단어가 붙어 나오지만 스캔에서는 정상 작동한다면 이미지 전처리가 필요합니다.
해결책: OpenCV 또는 Pillow를 사용하여 전처리 단계를 추가하세요: 그레이스케일 변환, 임계값 적용(Otsu 또는 적응형), 페이지가 회전된 경우 기울기 보정. 다음은 최소한의 실행 가능한 전처리 파이프라인입니다:
from PIL import Image, ImageEnhance, ImageFilter
import pytesseract
img = Image.open('sample.jpg')
# 그레이스케일 변환 및 대비 향상
img = img.convert('L')
enhancer = ImageEnhance.Contrast(img)
img = enhancer.enhance(2.0)
# 임계값 적용
img = img.point(lambda x: 0 if x < 140 else 255)
text = pytesseract.image_to_string(img, config='--psm 4')이 세 줄의 전처리 블록은 실제 문서에서 발생하는 대부분의 "OCR 불량" 불만을 해결합니다. 더 자세한 내용은 공식 ImproveQuality 가이드에서 테두리 제거, 노이즈 제거, 회전 보정 등 추가 기술을 다룹니다.
Tesseract만으로 부족할 때
Tesseract는 인쇄된 텍스트 이미지를 기계가 읽을 수 있는 문자로 변환하는 데 탁월하며, 추가 비용이 들지 않습니다. 하지만 워크플로에 구조화된 데이터가 필요하다면 — 예를 들어 송장 번호, 날짜, 합계, 품목을 스프레드시트의 명명된 필드로 추출해야 한다면 — Tesseract는 텍스트가 엔진에서 출력되는 시점부터 적절한 도구가 아닙니다.
모든 Tesseract 사용자는 결국 이 벽에 부딪힙니다: 텍스트는 얻었지만, 여전히 이를 파싱하고 레이블을 붙이며 구조화해야 합니다. 송장의 표는 행-열 관계 없이 연속된 문자 덩어리로 출력됩니다. 품목과 가격은 존재하지만, 헤더나 푸터 텍스트와 구분할 수 없습니다. 이 평면적인 텍스트 출력을 구조화된 데이터로 바꾸려면 광범위한 후처리(정규식, 퍼지 매칭, 레이아웃 재구성)나 완전히 다른 접근 방식이 필요합니다.
현대의 AI 기반 문서 추출 도구는 다른 수준에서 이 문제를 해결합니다: 문자를 읽는 대신 문서의 의미를 읽습니다. 송장 번호와 마감일의 차이를 이해하는데, 이는 해당 필드가 어떻게 보이는지가 아니라 무엇을 의미하는지를 알기 때문입니다. 표, 다단 레이아웃, 형식 변형을 공급업체별 설정 없이 처리합니다. 문서에 표, 필기체, 휴대폰 사진이 포함되거나 원시 텍스트 대신 구조화된 데이터를 추출해야 하는 경우, AI 추출은 Tesseract가 원래 설계되지 않았던 격차를 메우는 상위 계층입니다.
자주 묻는 질문
초보자에게 Tesseract와 EasyOCR 중 어떤 것이 더 나은가요?
Tesseract는 더 빠르며(CPU 기준 분당 약 25페이지 vs EasyOCR의 8페이지) 훨씬 작은 용량(~10MB vs ~500MB)을 차지합니다. EasyOCR은 곡선 및 회전된 텍스트를 더 잘 처리하고 전처리가 덜 필요합니다. 문서가 깨끗한 인쇄 텍스트라면 Tesseract로 시작하세요. 곡선 텍스트나 혼합 스크립트가 포함된 사진을 작업하는 경우 EasyOCR이 기본적으로 더 나은 결과를 제공할 수 있습니다. 둘 다 평면 텍스트 출력을 생성하며, 구조화된 데이터 추출 기능은 제공하지 않습니다.
Tesseract가 필기체를 읽을 수 있나요?
잘 읽지 못합니다. Tesseract는 인쇄된 문자 인식용으로 설계되었으며, LSTM 엔진은 필기체에서 약 45%의 정확도를 보입니다. 즉, 절반 이상의 단어를 잘못 읽습니다. 필기 문서 처리를 위해서는 문서를 의미적으로 읽는 AI 비전 모델(정확도 가이드에서 설명)이 실용적인 대안입니다.
Tesseract가 PDF에서 직접 작동하나요?
직접 작동하지 않습니다. Tesseract는 이미지 파일(PNG, JPEG, TIFF)에서 작동합니다. PDF에 OCR을 적용하려면 먼저 각 페이지를 이미지로 변환해야 합니다. pdftoppm(Linux/macOS) 같은 도구를 사용하거나, 내부적으로 pdftoppm 또는 poppler를 호출하는 Python의 pdf2image를 사용하면 됩니다. 또는 OCRmyPDF가 이 전체 워크플로를 ocrmypdf input.pdf output.pdf라는 단일 명령어로 처리합니다.
2026년에도 클라우드 OCR API가 많은데 Tesseract가 여전히 유용한가요?
구조가 필요 없는 대량 인쇄 텍스트 디지털화라는 특정 사용 사례에서는 그렇습니다. Tesseract의 무료, CPU 전용 작동은 도서관 아카이빙이나 수백만 문서 검색 인덱싱과 같은 대량 처리 시나리오에서 여전히 따라올 수 없습니다. 구조화된 출력(명명된 필드, 표, 스프레드시트 행)이 필요한 시나리오의 경우, 클라우드 AI API 또는 ImageToTable.ai처럼 의미적으로 추출하는 도구가 더 실용적입니다. Tesseract 기반 파이프라인의 총 비용을 좌우하는 후처리 엔지니어링 시간을 없애주기 때문입니다.
Tesseract를 내 데이터로 학습시킬 수 있나요?
가능하지만 과정이 복잡합니다. Tesseract는 LSTM 미세 조정을 지원하며, 각 학습 이미지에 대한 .box 파일 생성(정답 레이블링 단계), 학습 파이프라인 실행, 사용자 정의 .traineddata 파일 생성이 필요합니다. 대부분의 실제 시나리오에서는 범용 AI 비전 모델을 미세 조정하거나 학습 없이 형식에 적응하는 추출을 지원하는 도구를 사용하는 것이 더 효율적인 방법입니다.
원시 텍스트에서 구조화된 데이터로
Tesseract는 텍스트를 제공합니다. ImageToTable.ai는 구조화된 데이터를 제공합니다 — 송장 번호, 날짜, 합계, 품목이 명명된 열에 정리되어 스프레드시트에 바로 사용할 수 있습니다. 문서를 업로드하고 차이를 확인해보세요.
내 문서로 차이 확인하기