문자 인식 웹 앱 만들기
streamlit 패키지를 사용해서 지금까지 실습만 문자 인식 프로그램을 웹 앱으로 만들어 보겠습니다. 웹 앱에 이미지 파일을 업로드하면, 함수 read_text_and_draw_line()을 사용해서 이미지 속 문자를 인식하고 바운딩 박스를 그린 결과를 출력한 것입니다. 웹 앱의 레이아웃을 간단히 그려 보면 다음과 같습니다.
비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_2_4.py'로 지정한 후, 다음 코드를 입력하세요.
from pathlib import Path
import streamlit as st
from step_1 import OUT_DIR
from step_2_3 import OUT_2_3, read_text_and_draw_line
st.title("✌ 만들면서 배우는 문자 인식 웹 앱") # 웹 앱 제목
uploaded = st.file_uploader("인식할 이미지를 선택하세요.") # 파일 업로더 위젯 # 08
if uploaded is not None: # 파일이 업로드 되면, # 09
tmp_path = OUT_DIR / f"{Path(__file__).stem}.tmp" # 10
tmp_path.write_bytes(uploaded.getvalue()) # 업로드한 이미지 지정 # 11
col_left, col_right = st.columns(2) # 두 개의 열로 생성 # 13
with col_left: # 첫 번째 열 # 14
st.subheader("원본 이미지") # 부제목 # 15
st.image(tmp_path.as_posix()) # 원본 이미지 출력 # 16
with col_right: # 두 번째 열 # 17
st.subheader("문자 인식 결과") # 부제목
with st.spinner(text="문자를 인식하는 중입니다..."): # 진행 상황 표시 # 19
read_text_and_draw_line(tmp_path) # 문자 인식 및 박스 그리기
st.image(OUT_2_3.as_posix()) # 결과 이미지 출력 # 21
08 streamlit 패키지의 함수 file_uploader()를 사용하여 파일 업로드 위젯을 만듭니다.
09 코드가 최초로 실행되는 시점에는 업로드된 파일이 없기 때문에 변수 uploaded를 None으로 초기화합니다.
10~11 변수 uploaded에 저장된 이미지 파일을 temp_path 경로에 임지 파일로 저장합니다.
13 함수 columns()에 숫자 2를 전달하여 두 개의 열을 만들고, 변수 col_left, col_right에 각각 저장합니다.
14~16 첫 번째 열에 '원본 이미지' 문자열과 업로드한 이미지를 출력합니다.
17 '문자 인식 결과' 문자열과 이미지를 출력하기 위해 두 번째 열을 불러옵니다.
19 함수 spinner()를 사용하여 이미지를 불러오는 동안 '문자를 인식하는 중입니다...'를 출력합니다.
21 문자 인식 결과 이미지를 출력합니다.
stremlit 패키지를 사용해 생성한 웹 앱은 터미널에서 명령어를 입력해 실행해야 합니다. 비주얼 스튜디오 코드에서 웹 앱으로 연결됩니다.
01 비주얼 스튜디오 코드에서 터미널을 열고 다음과 같이 입력하면 웹 브라우저가 열리며 문자 인식 웹 앱으로 연결됩니다.
$ streamlit run ch05/step_2_4.py
02 웹 앱 상단의 위젯에서 [Browse files] 버튼을 클릭하고, 'input' 폴더에서 'ocr.jpg' 파일을 선택하세요. 함수 read_text_and_draw_line()이 실행되는 동안 스피너가 들어 가며 '문자를 인식하는 중입니다...'라는 문자열을 보여줍니다.

03 문자 인식이 완료되면 원본 이미지와 문자 인식 결과를 웹 앱에서 확인할 수 있습니다.

'프로그래밍 언어 > Python' 카테고리의 다른 글
| 외국어 번역 함수 만들기 (0) | 2026.01.15 |
|---|---|
| DeepL 번역 기능 추가하기 (0) | 2026.01.12 |
| 문자 인식 프로그램(2) (0) | 2026.01.05 |
| 문자 인식 프로그램 만들기(1) (0) | 2026.01.02 |
| 웹의 작동 원리 이해하기 (1) | 2025.12.30 |