무료 OCR 한국어 정확도 실측(Tesseract·CPU) — 한글은 거의 맞췄고, 영어 두 단어는 6번 다 틀렸습니다
깨끗하게 인쇄한 한국어 문단을 무료 OCR에 넣었더니 이런 줄이 나왔습니다.
누구나 무료로 쓸 수 있는 00 도구가 이미지 속 한국어 글자를
테스트 문장에는 숫자 1234와 영문 단어 시, 그리고 여러
원래 문장은 「OCR 도구가」, 「숫자 1,234와 영문 단어 AI,」입니다. 한글은 한 글자도 안 틀렸습니다. 틀린 곳은 영어 두 단어와 숫자의 쉼표였습니다.
이미지 속 한국어를 무료로 텍스트로 옮기려는 분이라면 Tesseract를 한국어 설정 그대로 써도 되는지, 어디를 다시 봐야 하는지가 궁금할 겁니다. 이번 테스트의 답은 이렇습니다. 한글만 있는 인쇄체라면 깨끗한 이미지에서 거의 그대로 읽습니다. 영어 단어가 섞이면 한국어 설정으로는 한 번도 못 읽었고, 숫자의 쉼표·마침표는 점수에 잡히지 않은 채 바뀌었습니다. 저라면 한글 위주 캡처는 Tesseract에 맡기고, 영어·숫자가 섞인 부분만 원본과 눈으로 대조하겠습니다.
같은 문단을 여섯 가지로 망가뜨려 읽혔습니다
비교 기준이 있어야 하니 정답을 아는 이미지로 시험했습니다. 한국어 문장 세 개(숫자 1,234, 영문 단어 OCR·AI, 쉼표·마침표 포함)를 인쇄체로 그린 뒤, 같은 문단을 여섯 가지 상태로 만들었습니다.
- 깨끗한 인쇄체(기준)
- 작은 글씨(13px, 이미지 폭 382px)
- 저해상도(0.28배로 줄였다가 다시 키움)
- 흐림(가우시안 블러 2.8)
- 픽셀 노이즈(σ48)
- 기울기(11°)
읽힌 도구는 무료 오픈소스 OCR인 Tesseract 5.5.0이고, 한국어 언어 데이터(kor)만 켰습니다. 줄 단위로 읽는 설정(--psm 6)과 신경망 인식 엔진(--oem 1)을 썼고, GPU 없이 CPU로 돌렸습니다. 조건마다 한 번씩, 모두 6번 읽혔습니다. 측정 시점은 2026년 9월입니다.
점수는 두 가지입니다. 글자 오류율(CER)은 정답 122자(띄어쓰기 제외) 중 몇 자를 고치면 정답이 되는지, 단어 오류율(WER)은 44개 단어 중 몇 개가 틀렸는지입니다. 둘 다 낮을수록 좋습니다. 채점 전에 대소문자와 구두점은 지웁니다. 이 규칙이 뒤에서 숫자 이야기에 걸립니다.
조건별 점수: 흐림과 저해상도가 가장 나빴습니다
| 조건 | 글자 오류율 | 단어 오류율 | 읽는 시간 |
|---|---|---|---|
| 깨끗한 인쇄체 | 4.1% | 9.1% | 0.162초 |
| 작은 글씨 | 4.9% | 6.8% | 0.117초 |
| 저해상도 | 9.0% | 18.2% | 0.158초 |
| 흐림 | 9.8% | 18.2% | 0.167초 |
| 노이즈 | 6.6% | 11.4% | 0.218초 |
| 기울기 | 6.6% | 15.9% | 0.156초 |
| 평균 | 6.8% | 13.3% |
작은 글씨는 폭 382px짜리 이미지인데도 깨끗한 원본과 거의 같았습니다. 크기보다 윤곽이 무너지는 쪽이 문제였습니다. 흐림에서는 받침과 모음이 섞였습니다. 「쓸」이 「을」로, 「읽어내는지」가 「위어내는지」로, 「자연스럽게」가 「자연스업계」로, 「섞여」가 「섞어」로 나왔습니다. 저해상도도 「빠르게」가 「뽀르게」, 「영문」이 「영운」이 되는 식이었습니다. 한 획 차이라서 문장을 대충 훑으면 놓치기 쉬운 오류입니다.
노이즈 조건은 한글을 전부 맞게 읽었습니다. 영어 두 단어 말고 틀린 3자는 줄 앞에 붙은 밑줄(_) 기호였습니다. 점이 흩뿌려진 배경을 글자로 읽은 것입니다. 기울기 조건에서는 「인공지능」이 「인공세능」, 「측정」이 「촉정」이 됐습니다.
실행 중에 첫 불일치가 찍힌 화면과 6조건을 다 돈 뒤의 집계 화면입니다. 터미널 출력을 마커(하네스가 중요한 순간에 남기는 한 줄 표시)가 나온 순간에 저장해 렌더한 것입니다.
틀린 글자의 60%는 영어 두 단어였습니다
표의 평균 6.8%만 보면 한국어를 열 자에 한 자 가까이 틀리는 것처럼 보입니다. 틀린 자리를 하나씩 세어 보면 그림이 다릅니다.
「OCR」은 여섯 번 모두 틀렸습니다. 「00」이 세 번, 「068」, 「008」, 「06요」가 한 번씩입니다. 「AI」는 다섯 번 「시」, 한 번 「삐」로 나왔습니다. 대문자 A와 I를 한글 「시」의 모양으로 읽은 것처럼 보입니다. 한국어 언어 데이터만 켜 두면 라틴 알파벳을 한글이나 숫자 중 비슷한 모양으로 옮깁니다.
이 두 단어는 정답 122자 중 5자입니다. 그런데 여섯 조건에서 틀린 글자를 모두 더한 50자 중 30자가 이 두 단어에서 나왔습니다. 두 단어만 정답으로 되돌리고 같은 채점기로 다시 재면 깨끗한 인쇄체의 한글 오류는 0자이고, 여섯 조건 평균 글자 오류율은 6.8%에서 2.7%로 내려갑니다.
그러면 영어 데이터를 같이 켜면 될까요. 이번 9월 런에서는 kor만 다시 쟀지만, 같은 주소의 7월 기록에 같은 6장을 kor+eng로 읽힌 결과가 있습니다. 그때 깨끗한 인쇄체에서는 「OCR」을 바르게 읽었습니다. 대신 「글자를」이 「SAS」로, 「AI」가 「Al」(소문자 l)로 나왔습니다. 여섯 조건 평균 글자 오류율은 kor+eng가 7.92%로 kor 6.83%보다 높았고, 읽는 시간은 장당 평균 0.34초로 두 배였습니다. 흐림·저해상도에서 특히 나빠졌습니다. 영어를 더하면 영어 단어는 살아나도 한글이 영어로 바뀌는 자리가 생겼습니다.
점수에 안 잡히고 바뀐 것: 숫자의 쉼표
정답의 「1,234」는 여섯 번 중 두 번만 쉼표 그대로 나왔습니다. 세 번은 「1.234」, 한 번은 「1234」였습니다.
채점기는 비교 전에 구두점을 지우기 때문에 세 가지를 모두 같은 숫자로 봅니다. 그래서 위 표의 오류율에는 이 차이가 들어 있지 않습니다. 하지만 문서에서 「1.234」는 천이백삼십사가 아니라 소수로 읽힐 수 있습니다. 가격이나 수량을 OCR로 옮긴다면 오류율이 낮게 나와도 이 자리는 따로 봐야 합니다. 「2026」 같은 구분 기호 없는 숫자는 여섯 번 모두 맞았습니다.
속도: 한 장 0.2초 안쪽
AMD Ryzen 5 5600X CPU에서 한 장을 읽는 데 0.117~0.218초가 걸렸습니다. 몇 십 장 캡처를 옮기는 정도라면 기다릴 일이 없습니다.
이 주소의 7월 기록과도 대조했습니다. 같은 6장을 같은 설정으로 다시 읽은 이번 전사 텍스트는 7월 것과 6/6 같았고, 조건별 점수도 같았습니다. 같은 이미지와 같은 설정이면 이 PC에서는 같은 결과가 나옵니다.
이미지 속 한국어를 무료로 옮길 때 저는 이렇게 하겠습니다
- 한글 위주 인쇄체 캡처는 Tesseract kor로 충분합니다. 깨끗한 이미지에서 한글 오류는 0자, 작은 글씨에서도 1자였습니다.
- 영어 단어·약어가 섞인 문장은 결과에서 그 단어만 찾아 고칩니다. kor만 켜면 이번에 영어 단어를 한 번도 못 읽었습니다. kor+eng로 바꾸는 것은 7월 기록상 한글 쪽 오류가 늘 수 있어서, 영어 비중이 높은 이미지에서만 시험해 보겠습니다.
- 숫자, 특히 쉼표·마침표가 있는 금액은 원본과 한 번 더 대조합니다. 오류율 점수는 이 차이를 세지 않습니다.
- 흐리거나 작게 줄인 이미지는 원본을 다시 구합니다. 흐림·저해상도에서 받침과 모음이 바뀌었고, 한 획 차이라 훑어보면 넘어갑니다. 화면 캡처라면 확대해서 다시 찍는 쪽이 빠릅니다.
- 줄 앞에 이상한 기호가 붙으면 배경 잡티를 의심합니다. 노이즈 조건의 밑줄 3자가 그 예였습니다.
이미지를 키워서 읽기 좋게 만드는 쪽은 무료 AI 이미지 업스케일러 실측에 따로 정리했습니다.
재현과 원자료
판독과 채점은 run_ocr_bench.py가 합니다. 입력 이미지와 정답은 make_ocr_corpus.py로 만들고, 채점 함수는 ocr_score.py입니다. 이번 기록의 기준 파일은 test_runs/tesseract-kor-20260924b/run.yaml이고, 같은 폴더에 조건별 전사(01-output.txt~06-output.txt), 호출 명령·입력 해시(NN-invocation.log), 결과 원본(results.json), 영어 두 단어를 분리해 다시 잰 값(error_breakdown.json)이 있습니다. 7월 kor+eng 기록은 test_runs/tesseract-ocr-score-20260704.json입니다. 이 경로들은 비공개 작업 폴더라 외부에서 열 수 없습니다. 본문의 입력 이미지와 실행 중 터미널 화면 두 장이 직접 확인할 수 있는 표본입니다.
재현: cinevyze-bench의 run_ocr_bench.py·make_ocr_corpus.py·ocr_score.py. 실행 기록은 공개하지 않습니다.
직접 그린 인쇄체 문단 하나를 여섯 가지로 변형한 결과라, 휴대폰으로 찍은 문서 사진·스캔본·손글씨·세로쓰기·표에는 그대로 옮길 수 없습니다.
판독과 채점은 로컬 PC의 CPU에서 Tesseract로 실제로 돌렸습니다. 측정 코드 작성, 전사 결과 정리, 글 작성에 AI 도구를 썼습니다. 발행 전 검수는 제가 합니다.
시네 · cinevyze 운영자 — AI 도구의 출력을 원본과 판정 기준에 대조합니다. 이번 측정은 AMD Ryzen 5 5600X CPU가 있는 Linux PC에서 Tesseract 5.5.0(한국어 kor, GPU 미사용)으로 했고, 측정 시점은 2026년 9월입니다. 운영자 소개
댓글
댓글 쓰기