Microsoft 社는 2022년 6월 15일 Internet Explorer 11의 지원을 종료했습니다.

광학 문자 인식(ocr.html)

제목

광학 문자 인식(ocr.html)

1. about

1.1. 소개

이미지 파일에서 글자를 추출(OCR)하거나 이미지의 일부를 잘라낸다.

1.2. 다운로드

https://github.com/logicielkr/misc/tree/master/Javascript_Source_Code/ocr

1.3. 호환성

다음의 환경에서 테스트했다.

  • Firefox 최신버전
  • Google Chrome 최신버전

IE 나 WebAssembly 를 지원하지 않은 legacy 에서 사용할 수 없는 것은 확실하다.

1.4. 의존성

CDN 에서 다음의 Javascript 라이브러리를 불러온다.

  • jquery
  • cropper.js
  • opencv.js
  • tesseract.js

2. 사용법

2.1. Notice

  1. 첫 번째 실행에서 참을 수 없을 만큼 느리다.

    다음과 같이 CDN 에서 불러오는 데 크기가 매우 큰 것들 때문이고, 일단 웹브라우저의 cache 에 담긴 다음에는 쓸 만은 한다.

    • opencv.js
    • tesseract.js 에서 사용하는 데이타
  2. 정확도 높은 OCR 프로그램은 거인들이 제공하는 서비스를 권한다.

    이 프로그램을 처음 만들 때는 거인들의 서비스가 신통치 않은 부분이 있어서 이미지에 맞추어서 적당히 소스를 변경해가면서 사용하면 쓸만은 했었지만, 이 글을 작성하는 시점에는 거인들의 서비스가 많이 개선되어, 이 프로그램을 계속해서 발전시켜 나갈 동기가 사라졌다.

    필자도 이 프로그램은 이미지의 일부는 잘라내는 기능으로만 사용하고 있다.

2.2. 사용법

  1. ocr.html 을 웹브라우저에서 불러온다.

  2. 이미지 파일 1개를 드래그 앤 드롭(Drag and Drop) 하거나, 상단의 "찾아보기"를 클릭해서 이미지를 선택한다.

  3. 마우스로 이미지의 일부를 선택한다.

    마우스의 휠(Wheel) 기능을 이용하면, 이미지를 확대하거나 축소할 수 있다.

  4. "변환" 버튼을 클릭해서 이미지를 추출한다.

    이미지에 따라 다음과 같이 전처리를 지정할 수 있다.

    • 흑백 : 이미지를 흑백으로 변환한 후에 OCR 를 수행한다.
    • 노이즈- : 이미지의 노이즈를 제거한 후에 OCR 를 수행한다.
    • 반전 : 이미지를 반전시킨 후에 OCR 를 수행한다(사진속에 포함된 글자에 적합).
  5. "잘라내기" 버튼을 클릭해서 선택한 이미지를 잘라낸다.

3. 개발자를 위하여

3.1. OCR 프로그램의 정확도에 영향을 미치는 것들

  1. Tesseract 의 버전

    OCR 프로그램의 종류에 따라서도 달라질 수 있다.

  2. 이미지 전처리

    전처리에 따라 정확도가 현저하게 차이가 나며, 이미지의 상태에 따라 다른 전처리를 해야 한다.

    모든 이미지를 커버하는 슈퍼 전처리 같은 것은 없다.

    이미지 전처리는 opencv 로 할 수도 있지만, ImageMagick 따위를 이용할 수도 있겠다.

    이 프로그램은 도표나 선을 예정하지 않았으므로, 이에 특별히 취약하다.

    이미지에 따라 자동으로 전처리의 종류를 결정하고, 다양한 전처리를 할 수 있다면, 정확도를 더 많이 끌어올릴 수 있을 것이라고 생각한다.

    localization 전략을 사용한다면, 템플릿 같은 것을 사용할 수도 있을 것으로 생각한다.

  3. whitelist 를 지정할 수 있다면 정확도가 약간 높아진다.

    정확도가 매우 높은 수준까지 높아지는 것은 아니고, 다른 요소들이 더 많은 영향을 미친다.

  4. Tesseract 에 공급되는 데이타

    데이타를 개선 하는 작업을 "Tesseract Training" 이라고 부르는 것 같다.

    상세한 사항에 대해서는 구글에서 검색하는 것으로 한다.

    문서에 사용된 폰트 파일을 구해서 "Tesseract Training" 을 하면 인식율이 높아진다.

    대한민국에서 유통되는 문서는 한글, 숫자, 영문이 뒤섞여 있는 경우가 많으므로 "Tesseract Training Data" 를 만들 때에도 이를 고려 할 필요는 있겠다.

    모든 폰트를 "Tesseract Training" 으로 돌릴 수도 있겠지만, "Tesseract Training Data" 의 파일 크기가 너무 커질 수 있다.

제목

첨부파일