FastAPI와 Tesseract를 사용한 로컬 OCR 서버입니다. 이미지에서 텍스트를 추출할 수 있습니다.
- ✅ 웹 GUI 인터페이스 (드래그 앤 드롭 지원)
- ✅ 이미지에서 텍스트 추출
- ✅ 한글/영어 동시 지원
- ✅ 신뢰도 점수 제공
- ✅ 상세 정보 추출 (단어별 위치, 신뢰도)
- ✅ RESTful API
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-viebrew install tesseract tesseract-langTesseract 다운로드 에서 설치 파일을 다운로드하여 설치
# 가상환경 생성 (권장)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 패키지 설치
pip install -r requirements.txtpython main.py또는
uvicorn main:app --host 0.0.0.0 --port 8000 --reload서버가 http://localhost:8000 에서 실행됩니다.
-
서버 실행 후 브라우저에서 접속:
http://localhost:8000 -
웹 페이지에서:
- 이미지를 드래그 앤 드롭하거나 클릭하여 업로드
- 언어 선택 (한글+영어, 한글만, 영어만 등)
- "텍스트 추출" 버튼 클릭
- 결과 확인 및 복사
-
상세 모드:
- "상세 모드" 체크박스 활성화
- 단어별 위치, 신뢰도 정보 확인 가능
curl http://localhost:8000/healthcurl -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
}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- 웹 GUIhttp://localhost:8000/api- API 정보http://localhost:8000/docs- Swagger API 문서http://localhost:8000/redoc- ReDoc API 문서
서버 실행 후 다음 URL에서 자동 생성된 API 문서를 확인할 수 있습니다:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
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']}%")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를 사용하면 Tesseract 설치 없이 바로 실행할 수 있습니다:
# Docker 이미지 빌드
docker-compose up --build
# 또는 직접 빌드
docker build -t ocr-server .
docker run -p 8000:8000 ocr-server서버가 http://localhost:8000 에서 실행됩니다.
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은 언제나 환영합니다!