목록으로
교육·학습을 위한 AI 활용
전부 AI에게 읽히지 않았다 — 무료 엔진이 98.6%를 끝내고, 남은 1.4%만 모델에게 물었다
👤 고요한코끼리286 📅 2026-08-29 👁 조회 29
무료 문자 인식 엔진 넷으로 98.6%를 확정하고, 판단이 필요한 나머지 1.4%만 언어모델에게 물었다.
[① 어떤 상황에서 AI를 활용했나요?]
일본어능력시험(JLPT) N3를 준비하고 있다. 시험이 걸려 있으니 아무 단어나 외울 수는 없고,
내가 보는 교재의 순서와 범위 그대로 외워야 한다. 그런데 시중 단어 앱은
자기 단어장을 들고 오지, 내 교재를 넣게 해 주지 않는다.

먼저 밝혀 둔다. 여기서 다룬 교재는 내가 사서 보는 책이고, 만든 단어 덱도 내가 혼자 쓴다.
남에게 주거나 올리거나 팔지 않는다. 이 글에도 교재의 지면이나 문장을 옮기지 않았다.

문제는 그 교재가 사진으로 된 PDF라는 것이었다. 화면에 글자로 보여도 실제로는 그림이어서
복사도 검색도 되지 않는다. 사람이 옮겨 적으려면 수천 자여서 문자 인식으로 읽어야 했는데,
여기서 벽을 만났다.

· 유료 서비스를 쓰면 정확하지만 책 한 권마다 돈이 든다.
· 무료 도구는 부정확하다. 한국어·일본어·한자가 한 지면에 섞이면 더 그렇다.
· 그런데 단어장은 틀리면 안 된다. 틀린 글자를 외우면 외운 만큼 손해가 쌓인다.

"비싼 판단을 어디까지 줄일 수 있는가"가 이 프로젝트의 질문이 됐다.

언어모델은 좋다. 그런데 수천 자를 통째로 넣으면 비용이 그만큼 든다.
그리고 값을 치른 만큼 정확해지지도 않는다 — 자유롭게 읽게 두면 없던 오류를 만든다.
그래서 순서를 뒤집었다. 싼 것부터 돌리고, 비싼 것은 마지막에 조금만 부른다.

[② 어떤 AI를 어떻게 활용했나요?]
다섯 겹으로 걸렀다.

1겹 엔진 합주 Vision 먼저 → 결과가 갈린 자리에만 Paddle·Windows OCR 무료 한도 안

2겹 자동 합의 여러 엔진이 같게 읽은 글자는 확정 (다수결) 모델 호출 없음

3겹 사전 제약 공개 한자 사전의 한글음·읽기 · 같은 값이 두 군데 인쇄된 것끼리 대조 모델 호출 없음

4겹 모델 판정 앞의 세 겹이 못 가른 것만. 읽으라고 시키지 않고 고르게 한다

5겹 구조화 표제자·훈음·읽기·예문으로 배치 → 단어 덱

가. 전량을 여러 엔진으로 돌리지 않는다

Vision을 먼저 돌리고, 결과가 갈린 자리에만 다른 엔진을 얹는다.
전부 여러 번 돌리는 것은 낭비다. 실측이 그 이유를 보여 준다.

(엔진 · 어려운 지면 23자 중 · 소요)
· Google Vision : 21 · 9.5초
· Paddle(한+일) + Windows OCR : 20 · 15.4초
· Paddle(한+일)만 : 18 · 12.8초
· Windows OCR(한국어)만 : 9 · 2.6초

Vision 21, Paddle 조합 20으로 비슷한데, 틀리는 자리가 서로 다르다.
그래서 겹치면 오른다. 같은 곳에서 틀리는 엔진끼리는 아무리 겹쳐도 안 오른다.

나. 단계마다 얼마나 오르는가 (표본 30장·한자 141자)

(단계 · 정확도 · 언어모델 호출)
· Vision 단독 : 93.6% · 없음
· + 엔진 3개 합주 : 95.0% · 없음
· + 사전 제약 : 98.6% · 없음
· (뜻·음 항목만 보면) : 99.3% · 없음

여기까지가 언어모델을 부르기 전이다. 3단계에서 이미 98.6%가 확정된다.
언어모델이 보는 것은 남은 1.4%뿐이고, 그마저 지면 전체가 아니라 글자 조각 하나와
후보 두세 개다. 같은 일을 통째로 맡겼을 때와 견주면 모델에 넣는 양이 자릿수로 줄어든다.

표본은 30장·한자 141자다. 작다. 그래서 이 숫자를 "이 방법의 정확도"라고 하지 않고
"이 교재에서 이 단계까지 갔을 때의 값"이라고 쓴다. 다른 자료에 쓰면 다시 재야 한다 —
재는 절차는 위와 같다.

다. 무료 한도를 프로그램이 스스로 지킨다

Vision 무료분은 월 1,000쪽이라 책 두 권이면 바닥난다.
그래서 남은 무료분과 이번에 필요한 쪽수를 비교해 엔진을 자동으로 고르게 했다.
사람이 매번 세지 않아도 한도를 넘지 않는다.

라. 모델에게 "읽어라"라고 하지 않는다 — 이게 가장 중요하다

지면을 통째로 주고 판독시키면 후보가 수만 자다. 그러면 모델이 새 오류를 만든다.
대신 후보를 두세 개로 좁혀서, 잘라 낸 글자 조각 그림과 함께 준다.

"이게 무슨 글자인가?" → "이 자리는 A인가 B인가?"

질문의 모양이 바뀌면 답이 달라져서, 토큰은 훨씬 적게 들면서 정답률은 오른다.
찾아보니 문헌도 같은 말을 하고 있었다. 언어모델의 사후 교정은 자유롭게 다시 읽게 하면 오히려 새 오류를 만든다.

[③ 활용 결과 어떤 변화가 있었나요?]
· 종이 교재가 내 단어장이 됐다. 교재 순서 그대로, 내 진도에 맞춰.
덱을 넣어 두고 폰으로 넘겨 보는 앱(다너)도 같이 만들어 쓰고 있다.
· 비싼 자리가 1.4%로 줄었다. 나머지는 무료 한도 안에서 돌고, 한도는 프로그램이 지킨다.
전량을 언어모델에 넣었다면 책 한 권마다 값이 붙었을 일이다.
· 틀린 자리를 알고 쓴다. "98.6%"라는 건 곧 1.4%는 틀렸다는 뜻이다.
어디가 불확실한지 표시돼 있어서, 외우다 이상하면 그 자리를 의심할 수 있다.
· 발음 기능에서는 실패도 겪었다. 처음에는 돈이 안 드는 폰 내장 음성으로 붙였는데,
일본어 음성이 깔려 있지 않은 폰이 조용히 한국어 음성으로 떨어져 일본 한자를 한국 한자음으로 읽었다.
발음을 들으려고 넣은 기능이 틀린 발음을 가르치고 있었다.
그래서 서버에서 미리 소리를 만들어 두는 방식으로 바꿨다. 값은 그대로 들지 않는다.
"공짜"가 항상 답은 아니고, 조용히 틀리는 쪽이 가장 위험하다.

[④ 나만의 방식 / 개선 포인트]
하나. 검증하는 눈은 서로 "다른 종류"여야 한다.
사전으로 거르면 잡히지 않는 오류가 있다. 틀렸는데 사전에 있는 글자다.
渴과 渇, 殼과 殻 같은 것들은 둘 다 표준 한자라 사전 검사를 그냥 통과해 버린다.
이런 자리는 문맥으로만 갈리기 때문에 사전 하나만 두지 않고,
같은 값이 책 안에 두 군데 인쇄돼 있으면 그 둘을 맞춰 본다.
공짜로 두 번 판독한 셈이 된다.

둘. 결과가 나쁘면 도구부터 탓하지 말고 내 설정을 먼저 본다.
어떤 엔진은 23자 중 2자만 맞혔다. 나쁜 엔진이라고 결론 내릴 뻔했는데,
중국어 전용 모델을 한국어 지면에 쓰고 있었다. 도구 탓을 하기 전에 설정을 본다.

셋. 방법을 만들기 전에 이미 있는지 찾아본다.
이 방식이 새로운 줄 알았는데, 찾아보니 같은 문제를 오래 다뤄 온 연구들이 있었다.
여러 엔진의 결과를 투표로 합치는 방법, 사전으로 사후 교정하는 방법,
신뢰도가 낮은 자리만 골라 고치는 방법이 전부 문헌으로 정리돼 있었다.
대체로 내가 만든 것과 같은 결론이었고, 내가 미처 못 본 함정도 거기 적혀 있었다
(위의 "사전에 있는 오류" 경고가 그렇다).
정리한 자료에 출처를 함께 적어 두었다.

넷. 일괄로 자동 반영하지 않는다. 한 번에 2,087개를 날릴 뻔했다.
카드 뒷면에 꾸짖을 질 같은 한국식 훈음이 보여서 한국 한자책으로 판정하고, 미리 구워 둔 일본어 발음 파일 2,087개를 지웠다.
그런데 "JLPT 때문에 배우는 건데 일본어책이 맞을 텐데" 싶어 원본 데이터를 열어 보니
음독·훈독·일본어 예문이 다 들어 있었다. 되살렸다.
그래서 규칙에 적어 두었다 — 책의 언어는 화면이 아니라 칸이 말해 준다.
옛 글자체 오독을 고칠 때도 같은 일을 겪었다. 다섯 건을 고치다가
교재가 실제로 옛 글자체를 쓴 자리까지 바꿀 뻔했다.
지면을 봐야 갈리는 것은 사람이 본다.

다섯. 정확도를 숫자로 잰다.
"좋아졌다"로는 다음 판단을 할 수 없다. "93.6%에서 98.6%로"라고 말할 수 있어야
무엇을 더 할지 정해진다. 그래서 표본을 정해 두고 단계마다 다시 잰다.

[⑤ 다른 사람도 따라 할 수 있나요?]
따라 하는 것보다 쉬운 길이 생겼다. 이 글을 그대로 AI에게 주면 된다.

나는 이걸 만드는 데 여러 날을 썼다. 엔진을 하나씩 붙여 보고, 틀린 자리를 세고,
규칙을 고쳤다. 그런데 지금은 그 과정을 다시 겪지 않아도 된다.

대형 언어모델에게 이렇게 말하면 된다.

[이 글을 읽고 참고해서, 내 교재를 단어장으로 바꿔 주는 앱을 만들어 줘]

무엇을 만들지가 이 글에 다 적혀 있기 때문이다. 어떤 엔진을 겹칠지, 어디서 갈릴지,
무엇을 물어야 하는지, 어디서 틀리는지가 순서대로 있다. 사람이 코드를 짤 필요가 없다.

실제로 이 앱의 코드도 내가 한 줄씩 짠 것이 아니다. 무엇을 만들지 정하고
어디가 틀렸는지 알려 주는 일만 했다.

그래서 이 방법의 진짜 문턱은 프로그래밍이 아니라 「무엇을 만들지 정하는 일」이다.
그건 아이도 할 수 있다. 자기가 무엇이 불편한지는 자기가 가장 잘 알기 때문이다.
외울 것이 있는데 책이 사진으로 되어 있다, 그것만 말할 수 있으면 된다.

그래도 직접 손으로 해 보고 싶다면 순서는 이렇다.

1. 무료 엔진 두세 개를 같은 자료에 돌려 본다. 결과를 나란히 놓는다.
2. 같게 읽은 곳은 그대로 쓴다. 여기가 대부분이다.
3. 갈린 곳만 표시해 둔다. 여기가 진짜 일이다.
4. 갈린 곳을 언어모델에게 물을 때 "읽어 줘"라고 하지 않는다.
후보를 주고 "이 자리는 A인가 B인가"라고 묻는다. 그림 조각을 함께 주면 더 좋다.
비용이 크게 갈리는 자리가 여기다.
5. 무료 한도를 프로그램이 세게 한다. 사람이 세면 반드시 넘긴다.

교재든 필기 노트든 오래된 자료든 외국어 안내문이든, 사진 속 글자를 옮겨야 하는
일이면 다 쓸 수 있다.

정확도는 좋은 도구 하나를 고르는 문제라기보다, 서로 다르게 틀리는 도구를 겹치는 문제에 가깝다.
그리고 얼마나 정확한지 재어 두면, 어디를 믿으면 안 되는지도 같이 알게 된다.

[참고문헌 — 본문 칸 맨 끝, ⑤ 뒤에 이어 붙인다]
같은 문제를 다뤄 온 연구들이다. 출처를 밝혀 둔다.

· 여러 판독 엔진의 결과를 투표로 합치는 방법 : ROVER (Fiscus) · 문자 n-gram 앙상블 투표, AAAI 2022 — https://ojs.aaai.org/index.php/AAAI/article/view/21369
· 사전·어휘로 사후 교정하는 방법과 그 한계 : Post-OCR 처리 개관, ACM Computing Surveys — https://dl.acm.org/doi/10.1145/3453476
· 신뢰도가 낮은 자리만 골라 고치는 방법 : Confidence-Aware Document OCR Error Detection — https://arxiv.org/pdf/2409.04117 (동료심사 전 초고)
· 언어모델 사후 교정이 새 오류를 만든다는 경고 : 역사 문서 LLM 후교정: 공짜 점심은 없다 — https://aclanthology.org/2025.resourceful-1.8/ · 제약 디코딩 — https://www.researchsquare.com/article/rs-6823036/v1 (동료심사 전 초고)
· 일본어 판독 사후교정 벤치마크 : JaPOC — https://arxiv.org/html/2409.19948 (동료심사 전 초고)

특히 두 번째 문헌의 경고가 결정적이었다. 사전 기반 교정은
"틀렸는데 사전에 있는 값"을 못 잡는다. 본문 ④-하나에서 말한 渴/渇 같은 자리다.
이 경고를 읽지 않았다면 사전 검사 하나로 끝냈을 것이다.

사용한 사전 데이터는 KANJIDIC2다. EDRDG(전자사전 연구개발 그룹)가 CC BY-SA 4.0 조건으로 공개한 것이며, 그 조건에 따라 여기에 출처를 밝힌다.
← 목록