OCR (feat tesseract)

Optical character recognition(OCR)은 쉽게 말해 스캔 파일이나 사진 속의 문자를 전자 텍스트로 인식하는 작업이다.

요즘에는 PDF 파일 속 문자들이 대부분 전자 텍스트로 인식되지만, 과거에는 그렇지 못했다. 지금도 어떤 문서를 프로그램을 통해 PDF로 변환하지 않고 스캐너로 스캔하면 글자는 이미지로 처리되어 텍스트로 인식되지 못한다.

PDF file의 OCR은 acrobat pro에서 가능하고, OCR을 전문으로 하는 ABBYY FineReader, Readiris 같은 software도 존재한다. 한 두 장 정도는 온라인에서 제공하는 무료 서비스를 이용할 수도 있다.

하지만 일반적이지 않은 작업을 해야 한다거나, 작업을 자동화 시켜야 한다면 다른 접근방법을 택해야 한다.

Google이 만든 OCR library로 유명한 tesseract가 그 대안이다.

( tesseract를 기반으로 한 GUI 프로그램도 있다. freeOCR )

항상 가장 큰 장벽은 install이다. 공식 repo에 없으면 문서가 잘 되어 있다 하더라도 힘들다.

다행히 비공식 repo를 통해 설치할 수 있었다.

# https://launchpad.net/~alex-p/+archive/ubuntu/tesseract-ocr
sudo add-apt-repository ppa:alex-p/tesseract-ocr
sudo apt-get update
sudo apt-get install tesseract-ocr

직접 컴파일 해보고 싶다면 말리지 않겠다. 여기를 참고하시라.

tesseract는 CLI를 지원하고 있다. 실행할 때 OCR의 기준이 되는 언어 정보가 담긴 tessdata를 선언해 줘야 한다. tessdata 경로를 매번 CLI에 입력하는 대신 아래와 같이 환경변수를 설정해 두면 해당 파일을 이 경로에서 찾게 되어 편리하다.

# ~/.bash_profile
export TESSDATA_PREFIX='/usr/local/share/tessdata'

tessdata-files은 여기에서 찾아볼 수 있다. tesseract 설치 번전에 따라 다르니 내려 받을 때 주의하자.

늘 사용하는 언어가 정해져 있다면 다음과 같이 필요한 파일만 받아 저장해도 되고,

cd /usr/local/share/tessdata
wget <tessdata-file address for your language>

여러가지 언어를 사용한다면 모두 받아 저장해 두었다가 사용해도 된다.

cd ~
git clone https://github.com/tesseract-ocr/tessdata.git
sudo cp -R testdata/* $TESSDATA_PREFIX

tesseract CLI 사용방법은 공식문서에 잘 설명되어 있다.

사용 방법은 그리 어렵지 않다. 요약하면 다음과 같다.

# 환경변수를 지정하였다면 --tessdata-dir <tessdata path>는 생략 가능하다. 
tesseract --tessdata-dir <tessdata path> <input image file path> <output text file path> -l <language>

아래 이미지를 테스트로 돌려본 결과이다.

tesseract  ./test/input.png ./test/output -l chi_tra --oem 0
﹜舌腫

‵ 腫硬滿不軟﹒名木舌′心脾熱壅也′不急冶殺人′百草霜‵芒硝、滘石末酒調傳﹐或百草霜` 白鹽等末水調
塗′ O針刺舌尖或兩傍′ 出血泄羞

﹜賁蓮湯鷹=﹜ ‥ …‵

‵ 治心火′舌上生瘧′或舌上腫‵燥裂′或舌尖出血′或舌硬 黃連酒炒ˋ梔子眇ˋ生地黃酒洗ˋ麥門冬ˋ當
扁酒洗ˋ赤芍栗各一錢′匡角 ‵慧荷‵甘草各五分′

﹜清胃癟火湯個春﹚ ‥ ‥

 

‵ 治上焦 ˊ心胃二彊之火′作口舌生瘡腫痛者′並咽喉ˋ牙齒ˋ耳面腫痛皆效 蓮翹ˋ拮梗ˋ黃連ˋ黃
芩ˋ梔予 玄鎣ˋ升痲ˋ生地黃各一錢﹒乾葛七分﹒騫荷五分﹐甘草三分水煎﹒頻頻溫服
tesseract  ./test/input.png ./test/output -l chi_tra --oem 3
﹌ 舌 腫

' 離 硬 滿 社 軟 口 本 舌 , 心 牌 熟 壁 也 , 不 想 治 殺 人 . 百 草 蔣 、 芒 硫 、 滾 石 末 江 調 傳 , 或 百草 霧 、 白 蔣 等 末 水 調
鏞 , 」 針 制 舌 奀 或 兩 傍 , 出 血 泛 雯

~ 黃 速 測 (mgy ‥…‵

' 治 心 火 , 舌 上 生 癒 , 或 舌 上 腸 、 煤 親 , 或 舌 奀 出 血 , 或 舌 硝 . 黃 連 酒 炒 、 梔 子 炒 、 生 地 黃 酒 洗 、 奎 門 全 、 當
腿 江 洗 、 赤 芍 華 各 一 鏈 , 屋 炳 、 漆 荷 、 甘 草 各 五 分 .

~ 消 背 濱 火 潘 899

 

' 治 上 焦 賢 熔 , 心 脩 二 經 之 火 , 作 口 舌 生 瘠 腸 痛 者 , 並 唱 喊 、 草 、 耳 面 蹟 獰 晉 效 . 連 蕙 、 案 梗 、 黃 連 、 黃
苓 、 梔 子 、 玄 參 、 升 窺 、 生 地 黃 各 一 鎬 . 乾 華 七 分 , 漆 荷 五 分 . 甘 草 三 分 水 煎 . 頭 銳 溫 朋

옵션에 따라 인식률 차이가 크다.


tessract는 training을 통해 tessdata를 만들 수 있는데, 아직 시도해 보지 못했다.

... ... ... ...
Back