28.Python OCR로 이미지 속 텍스트 추출하기: VSCode 실전 가이드

저도 처음에는 회사에서 스캔한 계약서 이미지 수십 장을 눈으로 보며 일일이 손으로 타이핑하고 있었습니다. A4 용지 30장이 넘어가는 글자들을 치다 보니 눈도 침침하고 손목이 부서질 것 같아 파이썬 OCR을 찾아보게 되었죠. 그런데 코드를 다 짜고 실행하니 계속 tesseract is not installed or it's not in your PATH라는 에러만 뿜어대더라고요. 내가 뭘 잘못했나 싶어 프로그램만 5번 넘게 지웠다 깔며 3시간 동안 삽질을 했습니다. 알고 보니 엔진은 잘 깔려 있었는데 컴퓨터가 길을 못 찾는 '환경변수' 문제였습니다. 코드에 딱 한 줄로 실행 파일 경로를 직접 지정해 주자마자, 단 1초 만에 이미지 속 글자들이 텍스트로 술술 뽑혀 나오는 신세계를 보았습니다. 이 글을 읽는 분들은 저처럼 억울한 삽질을 하지 않으시길 바라는 마음으로, VS Code에서 파이썬 OCR을 완벽하게 세팅하고 활용하는 방법을 정리해 보겠습니다





스캔한 문서나 사진 속에 있는 글자를 일일이 손으로 타이핑해본 경험이 있으신가요? 명함 이미지에서 전화번호를 옮겨 적거나, 종이 영수증을 엑셀로 정리하는 작업은 생각보다 훨씬 번거롭고 시간이 오래 걸립니다. 이럴 때 필요한 기술이 바로 OCR(광학 문자 인식)이며, Python을 활용하면 이미지 속 텍스트를 자동으로 추출하는 프로그램을 손쉽게 만들 수 있습니다. 이번 글에서는 VSCode 환경에서 Python OCR 라이브러리를 설치하고 실제로 이미지에서 텍스트를 뽑아내는 방법까지 실전 예제와 함께 정리해보겠습니다.

OCR이란 무엇인가

이미지 속 문자를 텍스트로 변환하는 기술

OCR은 Optical Character Recognition의 줄임말로, 이미지나 스캔 문서 안에 있는 문자를 인식해서 컴퓨터가 편집 가능한 텍스트 데이터로 변환해주는 기술입니다. 사람이 눈으로 글자를 읽고 이해하는 과정을 컴퓨터가 흉내 내는 것이라고 이해하면 쉽습니다.

비유하자면 OCR은 마치 외국어를 전혀 모르는 사람에게 그림카드를 보여주고 글자 모양을 하나씩 학습시켜서, 나중에는 비슷한 모양만 봐도 어떤 글자인지 맞히게 만드는 훈련 과정과 비슷합니다. 처음에는 완벽하지 않을 수 있지만, 이미지 품질이 좋고 글자가 선명할수록 인식률은 눈에 띄게 올라갑니다.

OCR이 활용되는 대표적인 사례

  • 스캔한 종이 문서를 디지털 텍스트로 변환
  • 명함이나 영수증 속 정보 자동 추출
  • 자동차 번호판 인식 시스템
  • 책이나 논문 이미지를 텍스트 데이터로 아카이빙
  • 다국어 이미지 번역 서비스의 전처리 단계

VSCode에서 Python OCR 환경 준비하기

Tesseract와 pytesseract 설치하기

Python에서 OCR을 구현할 때 가장 널리 쓰이는 조합은 구글에서 개발한 오픈소스 엔진인 Tesseract와, 이를 Python에서 쉽게 사용할 수 있게 해주는 pytesseract 라이브러리입니다. 먼저 Tesseract 엔진 자체를 운영체제에 설치해야 하고, 그다음 Python 패키지를 설치하는 순서로 진행됩니다.

pip install pytesseract Pillow

Windows 사용자라면 Tesseract 공식 설치 파일을 다운로드해서 별도로 설치해야 하며, 설치 후에는 실행 파일 경로를 코드에서 지정해줘야 합니다.


실행 경로 설정 시 주의할 점

저도 처음에 PATH에서 막혔는데, Tesseract를 설치했는데도 계속 "tesseract is not installed or it's not in your PATH"라는 오류가 발생해서 한참을 헤맨 적이 있습니다. 알고 보니 설치는 정상적으로 되었지만 환경변수에 경로가 등록되지 않아서 생긴 문제였고, 결국 코드 안에서 직접 실행 파일 경로를 지정해주고 나서야 해결할 수 있었습니다.

import pytesseract

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

VSCode 터미널에서 tesseract --version 명령어를 입력했을 때 버전 정보가 정상적으로 출력된다면 설치가 제대로 된 것이니, 이 부분을 먼저 확인하는 것을 추천합니다.

[📸 스크린샷: VSCode 터미널에서 tesseract --version 실행 결과 화면]

Python OCR 기본 사용법 실습

이미지에서 텍스트 추출하기

환경 설정이 끝났다면 이제 실제로 이미지에서 텍스트를 추출하는 코드를 작성해보겠습니다.

from PIL import Image
import pytesseract

img = Image.open('sample_text.png')
text = pytesseract.image_to_string(img)

print("추출된 텍스트:")
print(text)

이 몇 줄의 코드만으로 이미지 속 문자가 그대로 텍스트로 변환되어 출력되는 것을 확인할 수 있습니다.

한글 인식을 위한 언어 데이터 설정

기본적으로 Tesseract는 영어 인식에 최적화되어 있어서, 한글 문서를 인식하려면 한국어 언어 데이터를 별도로 설치하고 옵션을 지정해줘야 합니다.

text = pytesseract.image_to_string(img, lang='kor')
print(text)

한글과 영어가 섞여 있는 이미지라면 다음과 같이 언어를 함께 지정할 수도 있습니다.

text = pytesseract.image_to_string(img, lang='kor+eng')
print(text)

인식률을 높이는 이미지 전처리

OCR의 정확도는 원본 이미지 품질에 크게 좌우됩니다. 마치 흐릿하게 찍힌 사진 속 글씨를 사람도 잘 못 읽는 것처럼, 컴퓨터도 노이즈가 많거나 기울어진 이미지에서는 인식률이 뚝 떨어집니다. 이때 Pillow를 활용해 흑백 변환이나 대비 조정 같은 전처리 작업을 거치면 인식 정확도를 크게 끌어올릴 수 있습니다.

from PIL import Image
import pytesseract

img = Image.open('sample_text.png').convert('L')  # 흑백 변환
text = pytesseract.image_to_string(img, lang='kor')

print(text)

실전 활용 팁

여러 이미지 파일 일괄 처리하기

폴더 안에 있는 여러 이미지 파일에서 텍스트를 한 번에 추출하고 싶다면 반복문과 결합하면 됩니다.

import os
from PIL import Image
import pytesseract

folder_path = './scans'

for filename in os.listdir(folder_path):
    if filename.lower().endswith(('.png', '.jpg')):
        img = Image.open(os.path.join(folder_path, filename))
        text = pytesseract.image_to_string(img, lang='kor+eng')
        print(f"[{filename}]")
        print(text)
        print("-" * 30)

추출한 텍스트를 파일로 저장하기

추출된 텍스트는 다음과 같이 파일로 저장해두면 나중에 검색하거나 편집하기 편리합니다.

with open('output.txt', 'w', encoding='utf-8') as f:
    f.write(text)

마무리

지금까지 Python OCR을 활용해 이미지 속 텍스트를 추출하는 방법을 VSCode 환경에서 실습해봤습니다. 처음에는 환경 설정 과정이 다소 번거롭게 느껴질 수 있지만, 한 번 세팅해두면 이후로는 반복적인 문서 정리 작업을 크게 줄일 수 있습니다.

핵심 내용을 정리하면 다음과 같습니다.

  • OCR은 이미지 속 문자를 인식해서 텍스트 데이터로 변환하는 기술입니다
  • Python에서는 Tesseract 엔진과 pytesseract 라이브러리 조합이 널리 사용됩니다
  • Windows 환경에서는 실행 파일 경로를 PATH에 등록하거나 코드에서 직접 지정해야 합니다
  • 한글 인식을 위해서는 lang='kor' 옵션을 반드시 지정해야 합니다
  • 이미지 전처리를 거치면 OCR 인식률을 크게 높일 수 있습니다

다음 글에서는 OCR로 추출한 텍스트 데이터를 활용해 자동으로 분류하거나 데이터베이스에 저장하는 방법에 대해 더 자세히 다뤄보도록 하겠습니다.


저도 처음에는 회사에서 스캔한 계약서 이미지 수십 장을 눈으로 보며 일일이 손으로 타이핑하고 있었습니다. A4 용지 30장이 넘어가는 글자들을 치다 보니 눈도 침침하고 손목이 부서질 것 같아 파이썬 OCR을 찾아보게 되었죠. 그런데 코드를 다 짜고 실행하니 계속 tesseract is not installed or it's not in your PATH라는 에러만 뿜어대더라고요. 내가 뭘 잘못했나 싶어 프로그램만 5번 넘게 지웠다 깔며 3시간 동안 삽질을 했습니다. 알고 보니 엔진은 잘 깔려 있었는데 컴퓨터가 길을 못 찾는 '환경변수' 문제였습니다. 코드에 딱 한 줄로 실행 파일 경로를 직접 지정해 주자마자, 단 1초 만에 이미지 속 글자들이 텍스트로 술술 뽑혀 나오는 신세계를 보았습니다. 이 글을 읽는 분들은 저처럼 억울한 삽질을 하지 않으시길 바라는 마음으로, VS Code에서 파이썬 OCR을 완벽하게 세팅하고 활용하는 방법을 정리해 보겠습니다.

스캔한 문서나 사진 속에 있는 글자를 일일이 손으로 타이핑해본 경험이 있으신가요? 명함 이미지에서 전화번호를 옮겨 적거나, 종이 영수증을 엑셀로 정리하는 작업은 생각보다 훨씬 번거롭고 시간이 오래 걸립니다. 이럴 때 필요한 기술이 바로 OCR(광학 문자 인식)이며, Python을 활용하면 이미지 속 텍스트를 자동으로 추출하는 프로그램을 손쉽게 만들 수 있습니다. 이번 글에서는 VSCode 환경에서 Python OCR 라이브러리를 설치하고 실제로 이미지에서 텍스트를 뽑아내는 방법까지 실전 예제와 함께 정리해보겠습니다.

OCR이란 무엇인가

이미지 속 문자를 텍스트로 변환하는 기술

OCR은 Optical Character Recognition의 줄임말로, 이미지나 스캔 문서 안에 있는 문자를 인식해서 컴퓨터가 편집 가능한 텍스트 데이터로 변환해주는 기술입니다. 사람이 눈으로 글자를 읽고 이해하는 과정을 컴퓨터가 흉내 내는 것이라고 이해하면 쉽습니다.

비유하자면 OCR은 마치 외국어를 전혀 모르는 사람에게 그림카드를 보여주고 글자 모양을 하나씩 학습시켜서, 나중에는 비슷한 모양만 봐도 어떤 글자인지 맞히게 만드는 훈련 과정과 비슷합니다. 처음에는 완벽하지 않을 수 있지만, 이미지 품질이 좋고 글자가 선명할수록 인식률은 눈에 띄게 올라갑니다.

OCR이 활용되는 대표적인 사례

  • 스캔한 종이 문서를 디지털 텍스트로 변환
  • 명함이나 영수증 속 정보 자동 추출
  • 자동차 번호판 인식 시스템
  • 책이나 논문 이미지를 텍스트 데이터로 아카이빙
  • 다국어 이미지 번역 서비스의 전처리 단계

VSCode에서 Python OCR 환경 준비하기

Tesseract 엔진 다운로드하기

Python에서 OCR을 구현할 때 가장 널리 쓰이는 조합은 오픈소스 OCR 엔진인 Tesseract와, 이를 Python에서 쉽게 사용할 수 있게 해주는 pytesseract 라이브러리입니다. 여기서 중요한 점은 pytesseract는 Tesseract라는 실제 엔진을 호출해주는 도구일 뿐이라는 것입니다. 엔진 자체가 컴퓨터에 설치되어 있지 않으면 아무리 코드를 잘 작성해도 작동하지 않습니다.

Tesseract 공식 프로젝트는 최신 버전의 Windows 설치 파일을 직접 제공하지 않기 때문에, Windows 사용자들은 UB Mannheim(독일 만하임 대학교)에서 배포하는 사전 빌드 버전을 사실상 표준처럼 사용하고 있습니다. 검색창에 "tesseract ocr windows download" 혹은 "UB Mannheim tesseract"라고 검색하면 다운로드 페이지를 쉽게 찾을 수 있습니다.

비유하자면 Tesseract 본체는 설계도만 공개된 자동차와 같고, UB Mannheim 빌드는 그 설계도를 바탕으로 실제로 조립까지 마쳐서 바로 탈 수 있게 만들어준 완성차라고 볼 수 있습니다. 대부분의 Windows 사용자는 이 빌드를 다운로드해서 사용합니다.


페이지에 접속하면 32비트용과 64비트용 설치 파일이 나뉘어 있는데, 대부분의 최신 Windows 환경은 64비트이므로 특별한 이유가 없다면 64비트용 .exe 파일을 다운로드하면 됩니다.

Tesseract 설치 과정

다운로드한 .exe 파일을 실행하면 설치 마법사가 시작됩니다. 설치 언어를 선택하는 대화 상자가 먼저 나타나고, 이어서 설치할 구성 요소를 선택하는 화면이 나옵니다.


구성 요소 선택 화면에서 Language data 항목에 English가 기본으로 선택되어 있는지 확인해야 합니다. 한글 문서를 OCR로 처리할 계획이라면 이 화면에서 Korean 언어 데이터도 함께 체크해서 설치하는 것이 편리한데, 나중에 별도로 다운로드해서 추가하는 것도 가능하니 지금 당장 체크하지 못했다고 해서 문제가 되지는 않습니다.

Choose Components 화면
- English (기본 선택됨)
- Korean (한글 인식이 필요하다면 추가 체크)

이어지는 화면에서는 Tesseract를 설치할 디렉터리를 지정하거나 기본 경로를 그대로 사용할 수 있습니다. 특별한 이유가 없다면 기본 경로인 C:\Program Files\Tesseract-OCR을 그대로 두는 것을 추천하는데, 이 경로는 이후 환경변수를 설정하거나 코드에서 실행 파일 위치를 지정할 때 그대로 사용되기 때문에 미리 기억해두는 것이 좋습니다.


설치 경로 확인이 끝나면 시작 메뉴 폴더를 선택하는 화면이 나오고, 이후 설치가 진행됩니다. 설치 자체는 몇 초에서 길어야 1분 정도밖에 걸리지 않습니다.

pytesseract 패키지 설치하기

엔진 설치가 끝났다면 이제 Python 패키지를 설치할 차례입니다. VSCode 터미널을 열고 다음 명령어를 입력합니다.

pip install pytesseract Pillow 

실행 경로 설정 시 주의할 점

저도 처음에 PATH에서 막혔는데, Tesseract를 설치했는데도 계속 "tesseract is not installed or it's not in your PATH"라는 오류가 발생해서 한참을 헤맨 적이 있습니다. 알고 보니 설치는 정상적으로 되었지만 환경변수에 경로가 등록되지 않아서 생긴 문제였고, 결국 코드 안에서 직접 실행 파일 경로를 지정해주고 나서야 해결할 수 있었습니다.

import pytesseract

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

만약 매번 코드마다 경로를 지정하기 번거롭다면, Windows의 PATH 환경변수에 C:\Program Files\Tesseract-OCR 경로를 아예 등록해두는 방법도 있습니다. 이렇게 하면 어떤 코드에서든 별도 경로 지정 없이 바로 tesseract 명령어를 인식하게 됩니다. 다만 환경변수를 변경했다면 반드시 새 터미널 창을 열어서 확인해야 합니다. 기존에 열려 있던 터미널은 변경된 설정을 인식하지 못하기 때문인데, 이는 마치 이사를 하고 나서도 예전 주소가 적힌 명함을 계속 사용하는 것과 비슷한 상황입니다.

VSCode 터미널에서 tesseract --version 명령어를 입력했을 때 버전 정보가 정상적으로 출력된다면 설치가 제대로 된 것이니, 이 부분을 먼저 확인하는 것을 추천합니다.


Python OCR 기본 사용법 실습

이미지에서 텍스트 추출하기

환경 설정이 끝났다면 이제 실제로 이미지에서 텍스트를 추출하는 코드를 작성해보겠습니다.

from PIL import Image
import pytesseract

img = Image.open('sample_text.png')
text = pytesseract.image_to_string(img)

print("추출된 텍스트:")
print(text)

이 몇 줄의 코드만으로 이미지 속 문자가 그대로 텍스트로 변환되어 출력되는 것을 확인할 수 있습니다.

한글 인식을 위한 언어 데이터 설정

1단계: 
한국어 데이터 파일 다운로드GitHub Tesseract 공식 traineddata 페이지에 접속합니다.
목록에서 kor.traineddata 파일을 찾아 클릭한 뒤 다운로드합니다.
2단계: 
파일을 올바른 경로에 넣기다운로드한 kor.traineddata 파일을 오류 메시지에 표시된 아래 경로 폴더 안에 그대로 넣어주세요.
경로: C:\Program Files\Tesseract-OCR\tessdata\



기본적으로 Tesseract는 영어 인식에 최적화되어 있어서, 한글 문서를 인식하려면 한국어 언어 데이터를 별도로 설치하고 옵션을 지정해줘야 합니다.

text = pytesseract.image_to_string(img, lang='kor')
print(text)

한글과 영어가 섞여 있는 이미지라면 다음과 같이 언어를 함께 지정할 수도 있습니다.

text = pytesseract.image_to_string(img, lang='kor+eng')
print(text)

인식률을 높이는 이미지 전처리

OCR의 정확도는 원본 이미지 품질에 크게 좌우됩니다. 마치 흐릿하게 찍힌 사진 속 글씨를 사람도 잘 못 읽는 것처럼, 컴퓨터도 노이즈가 많거나 기울어진 이미지에서는 인식률이 뚝 떨어집니다. 이때 Pillow를 활용해 흑백 변환이나 대비 조정 같은 전처리 작업을 거치면 인식 정확도를 크게 끌어올릴 수 있습니다.

from PIL import Image
import pytesseract

img = Image.open('sample_text.png').convert('L')  # 흑백 변환
text = pytesseract.image_to_string(img, lang='kor')

print(text)

실전 활용 팁

여러 이미지 파일 일괄 처리하기

폴더 안에 있는 여러 이미지 파일에서 텍스트를 한 번에 추출하고 싶다면 반복문과 결합하면 됩니다.

import os
from PIL import Image
import pytesseract

folder_path = './scans'

for filename in os.listdir(folder_path):
    if filename.lower().endswith(('.png', '.jpg')):
        img = Image.open(os.path.join(folder_path, filename))
        text = pytesseract.image_to_string(img, lang='kor+eng')
        print(f"[{filename}]")
        print(text)
        print("-" * 30)

추출한 텍스트를 파일로 저장하기

추출된 텍스트는 다음과 같이 파일로 저장해두면 나중에 검색하거나 편집하기 편리합니다.

with open('output.txt', 'w', encoding='utf-8') as f:
    f.write(text)

마무리

지금까지 Tesseract 엔진 다운로드와 설치 과정부터, Python OCR을 활용해 이미지 속 텍스트를 추출하는 방법까지 VSCode 환경에서 실습해봤습니다. 처음에는 환경 설정 과정이 다소 번거롭게 느껴질 수 있지만, 한 번 세팅해두면 이후로는 반복적인 문서 정리 작업을 크게 줄일 수 있습니다.

핵심 내용을 정리하면 다음과 같습니다.

  • OCR은 이미지 속 문자를 인식해서 텍스트 데이터로 변환하는 기술입니다
  • Tesseract는 UB Mannheim 빌드를 다운로드해서 설치하는 것이 Windows 환경의 표준 방법입니다
  • Python에서는 Tesseract 엔진과 pytesseract 라이브러리 조합이 널리 사용됩니다
  • Windows 환경에서는 실행 파일 경로를 PATH에 등록하거나 코드에서 직접 지정해야 합니다
  • 한글 인식을 위해서는 lang='kor' 옵션을 반드시 지정해야 합니다
  • 이미지 전처리를 거치면 OCR 인식률을 크게 높일 수 있습니다

다음 글에서는 OCR로 추출한 텍스트 데이터를 활용해 자동으로 분류하거나 데이터베이스에 저장하는 방법에 대해 더 자세히 다뤄보도록 하겠습니다.


댓글

이 블로그의 인기 게시물

1.Python 설치부터 실행까지 10분 만에 끝내기 — 초보자도 바로 따라 하는 완벽 가이드

30.Python pyautogui로 마우스와 키보드 자동화하기: VSCode 실전 가이드

29.Python subprocess로 외부 명령어 실행하기: VSCode 실전 활용법