FreePDF logoFreePDF

OCR 결과가 깨질 때 확인할 것들

FreePDF 팀 작성 ·

스캔본에 OCR을 돌리고 한 문단을 복사해 붙여 넣었더니 “Tbe qnick hrown f0x” 같은 글자가 나옵니다. 아니면 단어는 멀쩡한데 넷째 줄의 반 문장이 둘째 줄에 끼어 있습니다. OCR은 픽셀을 보고 글자를 추측하는 기술이라, 결과가 엉망일 때 원인은 숨은 설정보다 페이지 이미지 쪽에 있는 경우가 대부분입니다. 다만 한국어 문서라면 그보다 앞서 확인할 게 있습니다.

한글 스캔본이라면 이것부터

저희 OCR은 영어만 인식하고, 바꿀 수 있는 언어 옵션도 없습니다. 한글 페이지는 알 수 없는 기호 덩어리가 되거나 아무 글자도 나오지 않습니다. 스캔 품질과는 상관이 없어서 몇 번을 다시 스캔해도 결과는 같습니다. 한자, 일본어, 러시아어 같은 다른 비라틴 문자도 마찬가지입니다.

한글 문서는 한국어 언어 데이터를 갖춘 OCR 프로그램이 필요합니다. 명령줄이 익숙하다면 내 컴퓨터에 ocrmypdf(저희가 내부에서 쓰는 오픈소스 도구)와 Tesseract 한국어 언어 팩을 설치하고 -l 옵션으로 언어를 지정하세요. 한국어만 있으면 -l kor, 영어가 섞인 문서라면 -l kor+eng입니다. 아래에 나오는 요령은 영문 페이지 기준이고, 한글 페이지에는 다른 방법을 써도 저희 OCR로는 결과가 나아지지 않습니다.

인식된 텍스트를 통째로 보기

PDF 뷰어에서 검색해 보는 것만으로는 단어 하나가 찾아지는지만 알 수 있습니다. OCR이 만든 결과 전체를 보려면 OCR을 거친 파일을 PDF 텍스트 변환에 넣고, 나온 .txt를 읽어 보세요. 대개 다음 중 하나가 보입니다.

  • 아무것도 없는 페이지. 페이지가 옆으로 누워 있었거나, 너무 흐렸거나, 아예 건너뛴 경우입니다.
  • 단어는 맞는데 순서가 뒤섞임. 다단 편집, 표, 비뚤어진 페이지 같은 레이아웃 문제입니다.
  • 단어마다 틀린 글자투성이. 이미지 품질, 글꼴, 언어를 의심하세요.

PDF 텍스트 변환에는 자체 “OCR 실행” 옵션도 있습니다. PDF OCR과 같은 엔진을 쓰기 때문에, 필요한 게 .txt뿐이라면 스캔본에서 바로 한 번에 텍스트로 가도 됩니다.

페이지에 이미 텍스트가 들어 있던 경우

저희 OCR은 이미 텍스트가 있는 페이지를 건너뜁니다. 기존 글자를 덮어쓰지 않으려는 것이고, 대부분은 그게 맞습니다. 문제는 기존 텍스트 자체가 쓰레기일 때입니다. 스캐너 중에는 자체적으로 조잡한 OCR을 돌려 두는 것이 있고, 글꼴의 각 글자가 어떤 문자인지 파일에 기록되지 않아 복사하면 기호만 나오는 PDF도 있습니다. 그러면 도구는 텍스트가 있다고 보고 페이지를 그대로 둔 채, 같은 엉망을 돌려줍니다.

이럴 때는 페이지를 먼저 순수 이미지로 바꾸면 됩니다.

  1. PDF JPG 변환에서 해상도를 “높음 (300 DPI)”으로 골라 변환합니다.
  2. 나온 JPG를 JPG PDF 변환으로 다시 하나의 PDF로 묶습니다. 변환 전에 순서를 확인하세요. “이름순 정렬”은 page_10을 page_2보다 앞에 놓습니다. 각 파일 옆의 위아래 화살표로 바로잡으면 됩니다.
  3. 새 파일에 PDF OCR을 돌립니다.

이미지로 바꾼 사본은 링크와 양식 필드를 잃으니 원본은 따로 두세요. 이 방법도 영문 페이지에만 효과가 있습니다. 명령줄을 쓸 줄 안다면 ocrmypdf의 --force-ocr, --redo-ocr 옵션이 정확히 이런 상황을 위한 것입니다.

설정이 아니라 스캔을 고치세요

실제 인식을 맡는 엔진인 Tesseract는 깨끗하고 반듯한 300 dpi 안팎의 페이지에서 가장 잘 작동합니다. 깨진 결과는 대부분 다음 중 하나로 거슬러 올라갑니다.

  • 낮은 해상도나 흔들림. 300 dpi로, 글자가 작다면 400 dpi로 다시 스캔하세요. 흐린 이미지를 나중에 키운다고 디테일이 돌아오지는 않습니다.
  • 비뚤어진 페이지. 저희는 인식 전에 기울기를 바로잡지 않습니다. 몇 도만 기울어도 한 줄이 둘로 쪼개지거나 다른 줄의 조각끼리 이어 붙을 수 있습니다. 반듯하게 다시 스캔하거나, 가장자리를 자동으로 잘라 펴 주는 스캐너 앱을 쓰세요.
  • 옆으로 눕거나 뒤집힌 페이지. 자동 회전도 하지 않습니다. PDF 회전으로 먼저 돌려 두세요. 이 도구는 모든 페이지를 한꺼번에 돌린다는 점만 기억하면 됩니다.
  • 낮은 대비. 색이 바랜 먹지 사본, 연필 글씨, 색지는 글자와 배경을 구분하기 어렵게 만듭니다.

무엇을 해도 잘 안 읽히는 것

가장 큰 건 손글씨입니다. Tesseract는 인쇄된 글자용이라, 여백에 흘려 쓴 메모는 잡음이 됩니다. 필기체나 장식이 많은 제목용 글꼴, 사진이나 무늬 배경 위에 인쇄된 글자도 비슷하게 고생합니다. 표와 다단 페이지는 글자 하나하나는 다 맞히면서도 칸을 가로질러 한 줄로 읽어 버리는 일이 많아서, 검색은 되지만 복사해 보면 말이 안 되는 문장이 나옵니다. 이런 문서에서 OCR이 해 주는 건 검색까지입니다. 정확한 텍스트가 필요하면 결국 다시 입력해야 합니다.

자주 묻는 질문

OCR을 한 번 더 돌리면 나아지나요?

아니요. 두 번째 실행은 첫 번째가 만든 텍스트 층을 발견하고 모든 페이지를 건너뜁니다. 위에 설명한 대로 페이지를 이미지로 바꾸거나, 그보다 깨끗한 스캔본에서 다시 시작하세요.

한글과 영어가 섞인 문서는 영어 부분만이라도 인식되나요?

영어 단어는 어느 정도 인식되지만 한글 부분은 기호로 바뀌거나 빠지기 때문에, 텍스트 층이 전체적으로 쓸 만하지 않습니다. 숫자와 영문 약어만 검색하면 되는 정도라면 모를까, 섞인 문서는 내 컴퓨터에서 ocrmypdf -l kor+eng로 처리하는 편이 낫습니다. 어느 쪽이든 금액이나 계좌번호처럼 한 글자만 틀려도 곤란한 값은 원래 페이지와 대조해 확인하세요.

관련 무료 도구