흘려쓴 한글+한자 필사본, Claude Code+bkit으로 디지털화 뚝딱

흘려쓴 한글+한자 필사본, Claude Code+bkit으로 디지털화 뚝딱

한줄 요약

500페이지 손글씨 필사본을 일일이 타이핑하던 걸, OCR + AI 교정 앱으로 자동화함. 코딩 지식 없이 하루 만에 Streamlit Cloud 배포까지 완료.


문제 상황

지난 주말 다녀온 경주 답사 여행. 80세 노교수님이 흘려쓴 한글+한자 혼용 필사본을, 70대 후배분들이 한 글자씩 손으로 타이핑해서 500페이지 답사 교재를 만들었다함.

일반 OCR로는 흘림체 한글+한자 혼용 문서의 인식률이 너무 낮음. Claude Code로 바이브코딩을 막 배우던 참에, 이 문제를 직접 해결해보기로 함.


사용 도구

  • Claude Code + Claude Sonnet 4.6

  • Streamlit Community Cloud (무료 배포)

  • PyMuPDF, Anthropic SDK, Google Drive API


작업 과정

bkit 활성화하고 시작

bkit은 Claude Code용 플러그인으로, PDCA 워크플로우와 32개 개발 스킬을 제공함. 활성화하면 기획부터 배포까지 체계적으로 진행 가능.

여기 bkit 깔렸어?
bkit을 활용해서 프로젝트를 하고 싶은데 bkit 활성화 해줘.

설치 여부 확인하고 바로 활성화해줌.


버그 발생 → "그래 네가 알아서 해줘"

테스트 중 세션 상태 관련 오류 발생:

st.session_state.text_0 cannot be modified after the widget with key text_0 is instantiated

오류 메시지 그대로 붙여넣었더니 Claude Code가 원인을 바로 찾아냄. 수정 방향을 설명해줬는데 솔직히 무슨 말인지 잘 몰랐음. 그래서:

그래 네가 알아서 해줘.

했더니 진짜로 알아서 함. app.py 수정, 연관 모듈 점검, .env.example 파일까지 같이 생성. "알아서 해줘"가 통하는 AI 코딩 툴은 처음이었음.


API 키 오류 → 재시작으로 해결

처리 오류: Error code: 401 - authentication_error

Windows 시스템 환경변수에 새 키를 업데이트했는데 왜 안 되는지 몰랐음.

Claude Code 설명: load_dotenv()는 기본적으로 시스템 환경변수를 덮어쓰지 않기 때문에, Streamlit을 완전히 재시작해야 새 키가 적용된다는 것. 재시작 후 해결됨. 혼자였으면 한참 헤맸을 내용.


GitHub 커밋 → Streamlit Cloud 배포

이전 세션에서 작업하던거, 깃헙에 커밋좀 해줘.

커밋 메시지, 올릴 파일 선별까지 Claude Code가 판단해서 push 완료.

Streamlit Cloud 배포 시 This repository does not exist 오류 발생. 무료 플랜은 Private 저장소 미지원이 원인이었음. API 키 등 민감 정보 없는 것 확인 후 Public으로 전환 → 배포 성공.


Day 2 — PNG, PDF 지원 추가

어제 하던 작업 이어서 하자. png 파일과 pdf도 업로드할 수 있게 해줘.

app.py를 읽고 PDF를 페이지별 이미지로 변환하는 로직(pymupdf)을 추가함. 60페이지 PDF도 자동 분리.

PNG를 image/jpeg로 잘못 전송하는 버그도 있었음. Python 3.13 이후 삭제된 imghdr 모듈을 쓰던 게 문제. magic bytes 방식으로 교체해서 해결함.


결과

글이 적힌 한국 웹사이트의 스크린샷

항목

Before

After

원고 디지털화

한 글자씩 수동 타이핑

이미지/PDF 업로드 → 자동 추출

한자 병기

직접 검색해서 입력

Claude AI가 자동 병기

결과물 저장

로컬 문서 직접 정리

DOCX 자동 생성 + Google Drive 업로드

개발 기간

하루 (기획~배포+기능 추가)


지원 포맷: JPG, PNG, PDF (60페이지 자동 처리)
출력물: 한자 병기 교정 텍스트 + DOCX + Google Drive 아카이빙

OCR과 정답지(정돈된 원고) 씽크로율 분석결과 : 9.5%

한국판 게임 스크린샷



배운 AI 활용 팁

효과적이었던 것

  • 오류 메시지를 그대로 붙여넣기. "왜 안 되지?" 보다 훨씬 빠르게 원인 파악됨

  • "알아서 해줘"도 유효한 명령. 맥락이 충분하면 세부 구현은 위임해도 됨

  • "어제 하던 작업 이어서 하자"로 이전 세션 맥락 연결 가능

이러면 안 됨

  • 배포 환경과 로컬 환경 차이 무시. 특히 환경변수, 인증 방식은 별도 확인 필요

  • Python 버전 확인 없이 진행. Streamlit Cloud는 최신 Python 사용함


향후 계획

  • OCR 추출본과 실제 최종 원고를 비교하여 손글씨 인식 씽크로율 분석후, 80% 미달시 문장 또는 단어 단위의 이미지 패턴을 학습시켜 DB로 구축할 생각임 (OCR 싱크로율을 돌려본 결과 9.5% 악!!!!)

  • 필사본의 메타 정보 ( ex. 이건 경주박물관 보물 100선에 대한 손글씨야) 제공하여 LLM이 교정시 좀더 정확도를 높일 계획

  • 필사본 스캔하지 않고 사진을 찍어서 바로 사용할 수 있도록 모바일 앱도 제작해볼 예정

2
6개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요