Tesseract OCR 설정 방법설치 및 흔한 실수에 대한 초보자 가이드

Tesseract는 세계에서 가장 널리 사용되는 오픈소스 OCR 엔진입니다. 무료이고, 100개 이상의 언어를 지원하며, 어떤 환경에서도 실행됩니다. 하지만 처음 시도에 설치하고 유용한 출력을 얻으려면 GitHub README가 설명하지 않는 몇 가지 단계가 필요합니다. 이 가이드가 바로 그 내용을 다룹니다: 설치, 첫 추출, 실제로 자주 사용하게 될 명령어 치트시트, 그리고 대부분의 초보자를 막히게 하는 세 가지 함정입니다.

Tesseract OCR 설치 방법: 초보자 가이드Tesseract OCR 설치 및 일반적인 함정에 대한 초보자 가이드. 설치, 첫 추출, 유용한 명령어, 그리고 초보자가 자주 겪는 세 가지 실수와 해결 방법을 다룹니다.
수작업 입력은 그만 — AI가 대신 읽어드립니다
이미지나 PDF를 업로드하세요 — 10초 만에 정형 데이터로
지금 체험하기 →
Tesseract OCR 설정에 관한 기사 제목과 OS별 명령어, 인보이스용 PSM 4, 구조화된 필드가 없는 평문 텍스트 출력이라는 세 가지 아이콘이 포함된 블로그 표지 일러스트레이션.

핵심 요점

  1. Tesseract — 세계에서 가장 많이 사용되는 오픈소스 OCR 엔진 — 무료이며, 100개 이상의 언어를 지원하고, 깨끗한 스캔에서 95–99% 정확도를 달성합니다. 하지만 기본 설정에서는 휴대폰 사진과 영수증에서 종종 깨진 단어, 병합된 줄, 또는 악명 높은 "Empty page!!" 오류가 발생합니다.
  2. 초보자 문제의 약 80%는 세 가지 고칠 수 있는 실수에서 비롯됩니다 — 그중 어느 것도 "엔진이 나쁘다"는 아닙니다. 가장 효과가 큰 수정은 PSM 모드를 변경하는 것입니다: PSM 3에서 깨진 출력을 반환하는 영수증도 하나의 플래그(--psm 4)로 깨끗하고 읽기 쉬운 출력을 만들 수 있습니다.
  3. 모든 Tesseract 사용자는 결국 같은 벽에 부딪힙니다: 인보이스 번호, 날짜, 합계, 품목이 모두 문자로 존재하지만, 도구는 어느 것이 어느 것인지 알지 못합니다. 올바른 스프레드시트 열에 들어가는 명명된 필드를 얻으려면 문자뿐만 아니라 문서 의미를 읽는 레이어가 필요합니다.

Tesseract OCR란 무엇인가

Tesseract는 1980년대 Hewlett-Packard에서 처음 개발되고 2006년부터 Google이 유지 관리해 온 오픈소스 광학 문자 인식 엔진입니다. 스캔한 문서나 페이지 사진 같은 텍스트 이미지를 입력받아 문자 단위로 텍스트를 추출합니다.

한 가지 작업을 탁월하게 수행합니다: 깨끗한 인쇄 텍스트의 문자 인식. 300 DPI로 스캔한 타자 문서를 주면 95-99% 정확도로 단어를 반환합니다. 휴대폰으로 찍은 영수증 사진을 주면 정확도가 떨어집니다. 손으로 쓴 양식을 주면 사실상 사용할 수 없게 됩니다.

이 경계를 이해하는 것이 중요한 이유는 대부분의 초보자가 "OCR 성능이 나쁘다"고 탓하는 경우가 실제로는 올바른 도구를 잘못된 문제에 적용한 것이기 때문입니다. Tesseract는 문자를 읽습니다. 문서 구조를 이해하지는 못합니다 — 어떤 숫자가 청구서 합계인지 품목별 소계인지 알지 못하고, 표를 인식하지 못하며, 의미론적 필드 개념도 없습니다. 평면적인 텍스트 출력은 버그가 아니라 기능입니다. Tesseract가 최신 AI 추출과 어떻게 비교되는지 자세히 알아보려면 OCR이란 무엇인가 설명과 최고의 오픈소스 OCR 도구 비교를 참조하세요.

Tesseract는 Apache 2.0 라이선스로 배포됩니다 — 무료로 사용, 수정, 재배포할 수 있습니다.

Tesseract가 읽을 수 있는 것의 3열 비교: 95-99% 정확도의 깨끗한 300 DPI 스캔과 녹색 체크 표시, 정확도가 떨어지는 영수증 휴대폰 사진에 주황색 경고 표시, 45% 정확도의 손글씨 양식에 빨간색 X 표시.

설치: 세 가지 운영체제, 각각 하나의 명령어

Tesseract에는 GUI 설치 마법사가 포함되어 있지 않습니다. Linux와 macOS에서는 시스템 패키지 관리자를 통해 설치하고, Windows에서는 타사 설치 프로그램을 통해 설치합니다. 핵심: 엔진과 필요한 언어 데이터를 모두 설치해야 합니다.

아래 표는 각 OS의 기본 설치 방법을 다룹니다. 설치 후에는 항상 tesseract --version으로 확인하세요.

OS설치 명령어추가 언어 데이터
Ubuntu/Debian Linuxsudo apt install tesseract-ocrsudo apt install tesseract-ocr-deu, tesseract-ocr-fra (프랑스어) 등
macOS (Homebrew)brew install tesseractbrew install tesseract-lang (모든 언어 한 번에)
WindowsUB Mannheim에서 다운로드설치 중 언어 선택, 또는 .traineddata 파일을 C:\Program Files\Tesseract-OCR\tessdata\에 다운로드
Ubuntu 또는 Debian, macOS(Homebrew), Windows에 Tesseract를 설치하는 세 가지 비교 카드. 각 카드에 설치 명령어가 나열되어 있고, Windows 카드에는 설치 디렉터리를 PATH에 추가해야 한다는 표시가 있습니다.

Windows에서 중요한 세부 사항 하나: 일부 버전에서는 설치 프로그램이 Tesseract를 시스템 PATH에 자동으로 추가하지 않습니다. 설치 디렉터리를 시스템 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의 명령줄 인터페이스에는 수십 개의 옵션이 있습니다. 실제로는 정기적으로 소수만 사용하게 됩니다. 다음은 치트 시트입니다:

1

기본 텍스트 추출

tesseract scan.png stdout

추출된 텍스트를 터미널에 직접 출력합니다. stdout을 output으로 바꾸면 output.txt 파일로 저장됩니다.

2

언어 지정

tesseract scan.png stdout -l deu

-l 플래그에 3자리 ISO 코드를 사용합니다. 여러 언어: -l eng+deu+fra. 이 플래그를 생략하면 Tesseract OCR은 기본적으로 영어만 인식합니다.

3

페이지 분할 모드(PSM)

tesseract receipt.png stdout --psm 4

가장 영향력이 큰 튜닝 파라미터입니다. PSM 4는 단일 텍스트 열을 가정합니다. PSM 6은 균일한 블록을 가정합니다. PSM 7은 이미지를 한 줄로 처리합니다. 표가 깨져 나올 때는 보통 PSM으로 해결됩니다.

4

검색 가능한 PDF 출력

tesseract scan.png output pdf

원본 이미지 위에 텍스트 레이어가 있는 PDF를 생성합니다. 스캔 문서를 보관하면서 검색 가능한 상태로 유지하는 데 유용합니다. 필요에 따라 -l 및 --psm과 함께 사용할 수 있습니다.

5

폴더의 모든 이미지 일괄 처리

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 모드 이해하기: 가장 중요한 단일 설정

네 가지 PSM 모드가 깨진 Tesseract 출력을 해결하는 방법을 보여주는 체크리스트 일러스트레이션. 기본 PSM 3이 영수증에서 문자가 병합되고 빈 페이지를 반환한다는 빨간색 메모와 함께 PSM 4, 6, 7, 11에 대한 번호가 매겨진 행이 표시됨.

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
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%를 차지합니다.

1

TesseractNotFoundError / "tesseract is not in your PATH"

이 오류는 가장 많이 검색되는 Tesseract 오류입니다. Tesseract 바이너리가 설치되지 않았거나 시스템에서 찾을 수 없는 경우 발생합니다.

진단: 터미널을 열고 tesseract --version을 실행하세요. "command not found"가 표시되면 Tesseract가 PATH에 없는 것입니다.

해결 방법 (Linux/macOS): 패키지 관리자는 일반적으로 PATH에 이미 포함된 표준 경로에 설치합니다. 그렇지 않은 경우 export PATH=$PATH:/usr/bin/tesseract를 실행하거나 패키지 관리자를 통해 재설치하세요.

해결 방법 (Windows): Tesseract 설치 디렉터리를 시스템 PATH에 추가하세요. 또는 Python 스크립트에서 설정할 수도 있습니다: pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'.

2

"빈 페이지" 또는 잘못된 출력 — 잘못된 PSM 모드

영수증이나 인보이스에 Tesseract를 실행했는데 출력이 병합된 문자들의 벽이거나, 더 심하면 "Empty page!!"가 표시됩니다.

진단: 기본 PSM 3은 전체 페이지 텍스트 레이아웃을 가정합니다. 영수증은 일반적으로 좁은 단일 열입니다. Tesseract가 열과 줄을 감지하려다 혼란을 겪고 모든 것을 병합하거나 포기합니다.

해결 방법: 단일 열 문서에는 PSM 4(--psm 4), 균일한 블록에는 PSM 6, 단일 줄에는 PSM 7을 시도하세요. 특정 영역을 추출하는 경우 먼저 해당 영역으로 이미지를 자른 다음 PSM 6 또는 7을 시도하세요.

r/learnpython의 Reddit 사용자는 이렇게 단호하게 말했습니다: "대부분의 사람들은 전처리 단계를 건너뛰고 정확도가 낮은 이유를 궁금해합니다." 휴대폰 사진의 경우 임계값 처리 단계를 추가하면 쓸모없는 출력과 사용 가능한 텍스트의 차이를 만들 수 있습니다.

3

이미지 전처리 없음 — 휴대폰 원본 사진은 결과가 좋지 않음

Tesseract는 스캔 문서용으로 설계되었습니다 — 평평하고, 조명이 고르고, 300 DPI, 기울어짐이 없는 문서를 전제로 합니다. 휴대폰 사진은 원근 왜곡, 그림자, 고르지 못한 조명, 페이지 곡률을 유발합니다. Tesseract는 이러한 조건을 제대로 처리하지 못합니다.

진단: 휴대폰 사진에서 문자가 누락되거나, 임의의 기호가 나타나거나, 단어가 서로 붙어 보이지만 스캔에서는 정상 작동한다면, 이미지 전처리가 필요합니다.

해결 방법: OpenCV 또는 Pillow를 사용하여 전처리 단계를 추가하세요: 그레이스케일 변환, 임계값 적용, 페이지가 회전된 경우 기울기 보정을 수행합니다. 최소한의 실용적인 전처리 파이프라인은 다음과 같습니다:

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가 설계상 다루지 못한 격차를 메우는 상위 레이어입니다.

FAQ

초보자에게 Tesseract와 EasyOCR 중 무엇이 더 나은가요?

Tesseract는 더 빠르고 훨씬 가볍습니다. EasyOCR은 곡선 및 회전 텍스트를 더 잘 처리하며 전처리가 덜 필요합니다. 문서가 깨끗한 인쇄 텍스트라면 Tesseract로 시작하세요. 곡선 텍스트나 혼합 문자 체계가 포함된 사진을 다룬다면 EasyOCR이 기본 상태에서 더 나은 결과를 낼 수 있습니다. 둘 다 평면 텍스트 출력을 생성하며, 구조화된 데이터 추출을 제공하지는 않습니다.

Tesseract가 손글씨를 읽을 수 있나요?

잘 읽지 못합니다. Tesseract는 인쇄된 문자 인식용으로 설계되었으며, LSTM 엔진은 필기체에서 약 45%의 정확도를 보입니다. 즉, 단어의 절반 이상이 잘못 읽힌다는 뜻입니다. 손글씨 문서 처리를 위해서는 문서를 의미적으로 읽는 AI 비전 모델(정확도 가이드에서 설명)이 실용적인 대안입니다.

Tesseract가 PDF에서 직접 작동하나요?

직접 작동하지 않습니다. Tesseract는 이미지 파일(PNG, JPEG, TIFF)에서 작동합니다. PDF를 OCR하려면 먼저 각 페이지를 이미지로 변환해야 합니다. pdftoppm(Linux/macOS) 같은 도구를 사용하거나 Python에서 pdf2image를 사용하면 되며, 내부적으로 pdftoppm 또는 poppler를 호출합니다. 또는 OCRmyPDF가 이 전체 워크플로우를 단일 명령으로 처리합니다: ocrmypdf input.pdf output.pdf.

클라우드 OCR API가 많은데 2026년에도 Tesseract가 여전히 유용한가요?

구조가 필요 없는 대량 인쇄 텍스트 디지털화라는 특정 용도에서는 그렇습니다. Tesseract의 무료, CPU 전용 작동은 도서관 아카이빙이나 수백만 문서의 검색 인덱싱 같은 대용량 시나리오에서 여전히 비교할 수 없을 정도로 뛰어납니다. 명명된 필드, 테이블, 스프레드시트 행 같은 구조화된 출력이 필요한 시나리오에서는 의미적으로 추출하는 클라우드 AI API나 ImageToTable.ai 같은 도구가 더 실용적입니다. Tesseract 기반 파이프라인의 총 비용을 지배하는 후처리 엔지니어링 시간을 없애주기 때문입니다.

Tesseract를 내 데이터로 학습시킬 수 있나요?

가능하지만 과정이 복잡합니다. Tesseract는 LSTM 미세 조정을 지원하며, 각 학습 이미지에 대한 .box 파일 생성, 학습 파이프라인 실행, 맞춤 .traineddata 파일 생성이 필요합니다. 대부분의 실용적인 시나리오에서는 범용 AI 비전 모델을 미세 조정하거나 학습 없이 형식 적응형 추출을 지원하는 도구를 사용하는 것이 더 효율적인 경로입니다.

원시 텍스트에서 구조화된 데이터로

Tesseract는 텍스트를 제공합니다. ImageToTable.ai는 구조화된 데이터를 제공합니다 — 인보이스 번호, 날짜, 합계, 품목이 명명된 열에 담겨 스프레드시트에 바로 사용할 수 있습니다. 문서를 업로드하고 차이를 확인해 보세요.

직접 문서로 차이 확인하기
📮 contact email: [email protected]