이 프로그램은 시각 장애인 또는 텍스트 정보를 음성으로 변환하여 편리하게 접근하고자 하는 사용자를 위해 개발되었습니다.
이미지를 통해 텍스트를 추출하고, 텍스트를 음성으로 변환하며, OCR 및 음성 변환 성능을 시각화하는 기능을 제공합니다.
-
이미지에서 텍스트 추출 (OCR):
- 업로드된 이미지 또는 실시간 카메라 피드에서 텍스트를 추출합니다.
- 추출된 텍스트와 OCR 신뢰도를 제공하여 결과의 품질을 평가합니다.
-
텍스트 음성 변환 (TTS):
- 추출된 텍스트를 음성으로 변환하여 읽어줍니다.
- TTS 처리 시간을 측정하여 성능 데이터를 제공합니다.
-
카메라를 통한 텍스트 캡처:
- 실시간 카메라 피드에서 텍스트를 추출합니다.
s
키를 눌러 텍스트를 추출하거나,q
키를 눌러 카메라를 종료합니다.
-
성능 시각화:
- OCR 신뢰도 및 TTS 처리 시간 데이터를 시각화합니다.
- OCR 시각화: Gaussian 기반 신뢰 구간과 평균선을 제공합니다.
- TTS 시각화: 처리 시간의 평균, 표준 편차, 최대/최소 값을 강조하여 표시합니다.
project/
├── main.py # 프로젝트 메인 실행 파일
├── app/ # 주요 앱 기능 코드가 포함된 디렉토리
│ ├── __init__.py # Python 패키지 초기화 파일
│ ├── gui.py # GUI 인터페이스 코드
│ ├── ocr.py # OCR(텍스트 추출) 관련 코드
│ ├── performance.py # 성능 시각화 관련 코드 (OCR, TTS)
│ ├── tts.py # 텍스트 음성 변환(TTS) 관련 코드
│ ├── camera.py # 카메라로 이미지 캡처 후 OCR 수행
├── data/ # 프로젝트 실행 중 생성 및 사용되는 데이터 파일
│ ├── captured_image.jpg # 카메라로 캡처된 이미지
│ ├── output.mp3 # TTS로 생성된 음성 파일
│ ├── test_image1.png # OCR 테스트용 샘플 이미지 1
│ ├── test_image2.png # OCR 테스트용 샘플 이미지 2
├── requirements.txt # 프로젝트 실행에 필요한 패키지 목록
├── README.md # 프로젝트 설명 파일 (사용 방법, 설치 가이드 등)
├── LICENSE # 프로젝트의 라이센스 정보를 포함
-
이미지 업로드:
- 사용자가 로컬 이미지 파일을 선택하여 OCR을 수행합니다.
-
카메라 캡처:
- 실시간 카메라 피드에서 텍스트를 추출합니다.
-
텍스트 음성 변환:
- 추출된 텍스트를 TTS 엔진을 통해 음성으로 변환하고, MP3 파일로 저장한 후 재생합니다.
-
성능 시각화:
- OCR 신뢰도와 TTS 처리 시간을 각각 독립적으로 시각화합니다.
이 프로그램은 Python 3.9 이상에서 동작을 권장합니다. 다음 라이브러리를 설치해야 합니다:
pytesseract
(OCR 수행)Pillow
(이미지 처리)gTTS
(음성 변환)matplotlib
(시각화)numpy
(수학 계산)tkinter
(GUI)opencv-python
(카메라 처리)
다음 명령어를 통해 필요한 라이브러리를 설치하세요:
pip install pytesseract Pillow gTTS matplotlib numpy opencv-python
Tesseract OCR 엔진은 Python 패키지(pytesseract)와 별도로 설치가 필요합니다.
Windows:
- Tesseract 설치 파일을 공식 다운로드 페이지에서 받아 설치한 후, 환경 변수에 경로를 추가하세요.
Linux/Mac:
sudo apt install tesseract-ocr
프로젝트 디렉토리 구성: 다음 파일들을 프로젝트 디렉토리에 포함시켜야 합니다:
- gui.py (프로그램 메인 GUI)
- ocr.py (OCR 관련 기능)
- tts.py (텍스트 음성 변환 기능)
- performance.py (시각화 기능)
- camera.py (카메라 텍스트 캡처 기능)
- main.py (프로그램 실행 파일)
Python 스크립트를 실행하여 프로그램을 시작하세요:
python main.py
![초기화면](https://private-user-images.githubusercontent.com/144192255/394609144-d6261bbe-8637-4a3d-a388-3b4f517ec353.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1ODc1NzIsIm5iZiI6MTczOTU4NzI3MiwicGF0aCI6Ii8xNDQxOTIyNTUvMzk0NjA5MTQ0LWQ2MjYxYmJlLTg2MzctNGEzZC1hMzg4LTNiNGY1MTdlYzM1My5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxNVQwMjQxMTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yNmQ2YTg0ZTRlYmFlZWQyNTBmNWU0OWIyY2JkYTQwNjBiYzhjM2M4MjIwN2VkYzExY2I1NzYwYWNjMzg1ZTk0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.2ylwZdarxJP3PqOlHdBPCjMdPoFPow8IxecFeEBKeEw)
1. 이미지 업로드
"이미지 업로드"
버튼을 클릭하여 텍스트를 추출할 이미지를 선택합니다.
2. 카메라 캡처
"카메라로 캡처"
버튼을 클릭하여 실시간으로 텍스트를 추출합니다.s
키를 눌러 텍스트를 추출하고,q
키를 눌러 카메라를 종료합니다.
3. 텍스트 음성 변환
- 추출된 텍스트를 음성으로 변환하려면
"소리 듣기"
버튼을 클릭합니다.
4. 성능 시각화
"OCR 성능 시각화"
버튼을 클릭하여 OCR 신뢰도를 시각화합니다."TTS 성능 시각화"
버튼을 클릭하여 TTS 처리 시간을 시각화합니다.
- 텍스트를 추출한 후 소리 듣기를 누르고 tts로 음성을 변화하는데 시간이 걸릴 수 있습니다.
- 성능 시각화를 누르기 전 텍스트 추출과 소리듣기가 완성된 후 각각의 데이터가 생성되기 때문에
성능을 확인하기 위해서는 앞서 텍스트를 추출하고 소리 듣기를 눌러주세요!
- 추출된 텍스트의 평균 신뢰도와 Gaussian 신뢰 구간이 포함된 막대 그래프가 표시됩니다.
(data 폴더 안에 test_image1과 test image2를 예시로 이용하였습니다)
- TTS로 음성 변환시 소요된 처리 시간의
평균, 표준 편차, 최대/최소
값이 포함된 막대 그래프가 표시됩니다.
(data 폴더 안에 test_image1과 test image2를 예시로 이용하였습니다)
- Tesseract OCR 엔진이 설치되어 있어야 합니다.
- OCR 신뢰도는 입력 이미지의 품질에 따라 다를 수 있습니다.
- TTS는 인터넷 연결이 필요합니다 (Google TTS 사용).
- OpenAI GPT (ChatGPT):
- 코딩 도움, 아이디어 정리 및 문서 작성 과정에서 사용하였습니다.
- 참고 자료:
- Tesseract OCR: https://github.com/tesseract-ocr/tesseract
- OpenCV: https://opencv.org/
- Google TTS: https://pypi.org/project/gTTS/
- https://wikidocs.net/132610
- https://github.com/UB-Mannheim/tesseract/wiki
- https://mj-thump-thump-story.tistory.com/entry/OCR-Tesseract-Windows-%ED%99%98%EA%B2%BD%EC%97%90-%EC%85%8B%EC%97%85
- 라이브러리 공식 문서:
- Matplotlib: https://matplotlib.org/stable/contents.html
- NumPy: https://numpy.org/doc/
- 이 프로젝트는 MIT 라이센스에 따라 라이센스가 부여됩니다. 자세한 정보는 LICENSE 파일을 참조하세요.
이 프로젝트를 구상하게 된 계기는, 세상을 흐릿하게 보거나 사물을 구별하기 어려운 시각적 어려움을 가진 분들이 텍스트가 포함된 이미지를 이해하지 못해 겪는 어려움을 돕고자 했던 마음에서 시작되었습니다. 이러한 분들이 하나의 프로그램을 통해 텍스트를 쉽게 인식하고 음성으로 내용을 전달받을 수 있도록 지원하려는 목표로 프로젝트를 시작했습니다.
프로그램을 개발하면서 여러 보완점도 발견했는데, 가장 큰 한계는 시각장애인 분들이 이 프로그램을 스스로 실행하기 어렵다는 점이었습니다. 초기 설정과 실행 과정에서 다른 사람의 도움이 필요하다는 현실적인 제약은 큰 과제로 다가왔습니다.
또한, 텍스트 추출에 사용된 Tesseract OCR의 성능이 이미지 품질과 알고리즘의 한계에 따라 달라진다는 점도 문제로 느껴졌습니다. 만약 Google OCR과 같은 고성능 도구를 활용했다면, 더 높은 정확도로 텍스트를 제공할 수 있었을 것이라는 아쉬움이 남습니다. 이 부분은 앞으로의 프로젝트 업그레이드에서 보완할 주요 방향으로 삼고자 합니다.
이번 프로젝트를 통해, 몸이 불편하거나 일상생활에서 어려움을 겪는 분들에게 도움이 되는 프로젝트에 대한 관심이 더욱 커졌습니다. 앞으로도 이러한 분들을 지원할 수 있는 프로젝트를 기획하고 개발하며, 이들의 삶에 실질적인 변화를 줄 수 있는 방향으로 나아가고자 합니다.