Skip to content

TigerKim9/ocr-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

로컬 OCR 서버

FastAPI와 Tesseract를 사용한 로컬 OCR 서버입니다. 이미지에서 텍스트를 추출할 수 있습니다.

기능

  • ✅ 웹 GUI 인터페이스 (드래그 앤 드롭 지원)
  • ✅ 이미지에서 텍스트 추출
  • ✅ 한글/영어 동시 지원
  • ✅ 신뢰도 점수 제공
  • ✅ 상세 정보 추출 (단어별 위치, 신뢰도)
  • ✅ RESTful API

설치 방법

1. Tesseract OCR 설치

Ubuntu/Debian

sudo apt-get update

# 기본 설치 (영어 + 한글)
sudo apt-get install tesseract-ocr tesseract-ocr-kor

# 모든 언어 설치 (권장 - Docker 사용 시 자동 설치됨)
sudo apt-get install tesseract-ocr \
  tesseract-ocr-eng tesseract-ocr-kor tesseract-ocr-jpn \
  tesseract-ocr-chi-sim tesseract-ocr-chi-tra \
  tesseract-ocr-fra tesseract-ocr-deu tesseract-ocr-spa \
  tesseract-ocr-ita tesseract-ocr-por tesseract-ocr-rus \
  tesseract-ocr-ara tesseract-ocr-hin tesseract-ocr-ben \
  tesseract-ocr-tha tesseract-ocr-vie

macOS

brew install tesseract tesseract-lang

Windows

Tesseract 다운로드 에서 설치 파일을 다운로드하여 설치

2. Python 의존성 설치

# 가상환경 생성 (권장)
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 패키지 설치
pip install -r requirements.txt

실행 방법

python main.py

또는

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

서버가 http://localhost:8000 에서 실행됩니다.

사용 방법

웹 GUI 사용 (추천)

  1. 서버 실행 후 브라우저에서 접속:

    http://localhost:8000
    
  2. 웹 페이지에서:

    • 이미지를 드래그 앤 드롭하거나 클릭하여 업로드
    • 언어 선택 (한글+영어, 한글만, 영어만 등)
    • "텍스트 추출" 버튼 클릭
    • 결과 확인 및 복사
  3. 상세 모드:

    • "상세 모드" 체크박스 활성화
    • 단어별 위치, 신뢰도 정보 확인 가능

API 사용법 (프로그래밍)

1. 서버 상태 확인

curl http://localhost:8000/health

2. 기본 OCR (텍스트 추출)

curl -X POST "http://localhost:8000/ocr" \
  -H "accept: application/json" \
  -H "Content-Type: multipart/form-data" \
  -F "file=@image.jpg" \
  -F "lang=eng+kor"

응답 예시:

{
  "success": true,
  "filename": "image.jpg",
  "text": "추출된 텍스트 내용",
  "language": "eng+kor",
  "confidence": 87.5,
  "word_count": 15,
  "char_count": 50
}

3. 상세 OCR (단어별 정보 포함)

curl -X POST "http://localhost:8000/ocr/detailed" \
  -H "accept: application/json" \
  -H "Content-Type: multipart/form-data" \
  -F "file=@image.jpg" \
  -F "lang=eng+kor"

응답 예시:

{
  "success": true,
  "filename": "image.jpg",
  "full_text": "추출된 전체 텍스트",
  "language": "eng+kor",
  "words": [
    {
      "text": "단어",
      "confidence": 95,
      "bbox": {
        "x": 100,
        "y": 50,
        "width": 80,
        "height": 30
      }
    }
  ],
  "total_words": 15
}

언어 옵션

주요 언어 코드

조합 (추천)

  • eng+kor: 영어 + 한글 (기본값)
  • eng+jpn: 영어 + 일본어
  • eng+chi_sim: 영어 + 중국어(간체)

동아시아

  • kor: 한국어
  • jpn: 일본어
  • chi_sim: 중국어(간체)
  • chi_tra: 중국어(번체)
  • tha: 태국어
  • vie: 베트남어

유럽

  • eng: 영어
  • fra: 프랑스어
  • deu: 독일어
  • spa: 스페인어
  • ita: 이탈리아어
  • por: 포르투갈어
  • rus: 러시아어
  • pol: 폴란드어
  • nld: 네덜란드어
  • swe: 스웨덴어
  • nor: 노르웨이어
  • dan: 덴마크어
  • fin: 핀란드어
  • ell: 그리스어
  • tur: 터키어
  • 기타: ukr, ces, ron, hun, bul, hrv, slk, slv

중동

  • ara: 아랍어
  • heb: 히브리어
  • fas: 페르시아어

남아시아

  • hin: 힌디어
  • ben: 벵골어
  • tam: 타밀어
  • tel: 텔루구어
  • 기타: mar, kan, mal, guj, pan, urd

기타

  • ind: 인도네시아어
  • msa: 말레이어
  • fil: 필리핀어
  • afr: 아프리칸스어
  • swa: 스와힐리어

참고: 언어를 조합하려면 +로 연결하세요 (예: eng+kor+jpn)

엔드포인트

  • http://localhost:8000 - 웹 GUI
  • http://localhost:8000/api - API 정보
  • http://localhost:8000/docs - Swagger API 문서
  • http://localhost:8000/redoc - ReDoc API 문서

API 문서

서버 실행 후 다음 URL에서 자동 생성된 API 문서를 확인할 수 있습니다:

Python 코드 예제

import requests

url = "http://localhost:8000/ocr"
files = {"file": open("image.jpg", "rb")}
data = {"lang": "eng+kor"}

response = requests.post(url, files=files, data=data)
result = response.json()

print(f"추출된 텍스트: {result['text']}")
print(f"신뢰도: {result['confidence']}%")

JavaScript 코드 예제

const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('lang', 'eng+kor');

fetch('http://localhost:8000/ocr', {
  method: 'POST',
  body: formData
})
  .then(response => response.json())
  .then(data => {
    console.log('추출된 텍스트:', data.text);
    console.log('신뢰도:', data.confidence);
  });

Docker로 실행

Docker를 사용하면 Tesseract 설치 없이 바로 실행할 수 있습니다:

# Docker 이미지 빌드
docker-compose up --build

# 또는 직접 빌드
docker build -t ocr-server .
docker run -p 8000:8000 ocr-server

서버가 http://localhost:8000 에서 실행됩니다.

문제 해결

Tesseract를 찾을 수 없다는 오류

Windows에서 Tesseract 경로를 수동으로 지정해야 할 수 있습니다:

# main.py 상단에 추가
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

특정 언어가 인식되지 않는 경우

해당 언어 팩이 설치되어 있는지 확인:

# 설치된 언어 확인
tesseract --list-langs

# 필요한 언어 팩 설치 (Ubuntu/Debian)
# 예: 한글
sudo apt-get install tesseract-ocr-kor

# 예: 일본어
sudo apt-get install tesseract-ocr-jpn

# 예: 아랍어
sudo apt-get install tesseract-ocr-ara

참고: Docker를 사용하면 모든 주요 언어가 자동으로 설치됩니다.

라이선스

MIT License

기여

이슈나 PR은 언제나 환영합니다!

About

로컬 ocr서버

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published