[OCR] 이미지에서 텍스트 추출 하기
ITWeb/개발일반 2017. 2. 14. 11:22OCR(Optical Character Recognition) 이라고 해서 이미지 같은 것에서 문자를 인식해서 추출하는 기술 입니다.
제가 하는 업무에 필요해서 "Hello World" 수준의 방법을 기술해 보려 합니다.
왜냐하면 나중에 또 잊어버릴수 있으니까요 ^^;
제가 사용한 내용은 아래와 같습니다.
[참고문서]
http://tess4j.sourceforge.net/
https://github.com/tesseract-ocr/tesseract/wiki
※ tess4j 는 tesseract-ocr 을 java 모듈에서 사용할 수 있도록 제공해주는 라이브러리 입니다.
우선 가볍게 mac 에서 맛보기를 해보시면 좋습니다.
[Mac OSX 설치 및 CLI 테스트]
$ brew install tesseract
설치 된 경로는 아래와 같습니다.
/usr/local/Cellar/tesseract/3.04.01_2
경로를 알아야 하는 이유는 나중에 traineddata 파일을 올려 두어야 하기 때문에 알아 두시면 좋습니다.
한글 테스트를 위해서는 아래 링크에서 data file 을 다운로드 받으시고 tessdata 로 올려 두시면 됩니다.
[Data Files]
https://github.com/tesseract-ocr/tesseract/wiki/Data-Files
Usage:
tesseract --help | --help-psm | --version
tesseract --list-langs [--tessdata-dir PATH]
tesseract --print-parameters [options...] [configfile...]
tesseract imagename|stdin outputbase|stdout [options...] [configfile...]
$ tesseract eurotext.png translate -l eng
eurotext.png
The (quick) [brown] {fox} jumps!
Over the $43,456.78 <lazy> #90 dog
& duck/goose, as 12.5% of E-mail
from aspammer@website.com is spam.
Der ,,schnelle” braune Fuchs springt
fiber den faulen Hund. Le renard brun
«rapide» saute par-dessus le chien
paresseux. La volpe marrone rapida
salta sopra i] cane pigro. El zorro
marrén répido salta sobre el perro
perezoso. A raposa marrom répida
salta sobre 0 C50 preguieoso.
translate.txt
위 명령어로 돌려 보시면 이렇게 추출이 됩니다.
추가로 ubuntu 에 설치 하는 것도 살펴 보도록 하겠습니다.
저는 아래 문서 보고 설치를 했습니다.
[설치 문서 on ubuntu]
https://github.com/tesseract-ocr/tesseract/wiki/Compiling
설치 시 주의 점은 leptonica 설치를 하셔야 한다는 것입니다.
문서에 "You also need to install Leptonica." 이렇게 있는데도 불구하고 제가 문서를 제대로 안읽고 진행하다 삽질을 ㅡ.ㅡ;
실행 명령어를 그대로 옮겨 놓도록 하겠습니다.
$ sudo apt-get install autoconf automake libtool
$ sudo apt-get install autoconf-archive
$ sudo apt-get install pkg-config
$ sudo apt-get install libpng12-dev
$ sudo apt-get install libjpeg8-dev
$ sudo apt-get install libtiff5-dev
$ sudo apt-get install zlib1g-dev
$ sudo apt-get install libicu-dev
$ sudo apt-get install libpango1.0-dev
$ sudo apt-get install libcairo2-dev
# leptonica 를 다운로드 받으시고 압축을 풉니다.
[설치 문서]
http://tpgit.github.io/UnOfficialLeptDocs/leptonica/README.html#building-on-linux-unix-macos
$ wget http://www.leptonica.org/source/leptonica-1.74.1.tar.gz
$ tar xvf leptonica-1.74.tar.gz
$ cd leptonica-1.74
$ ./configure
$ make
$ sudo make install
$ sudo apt-get install libleptonica-dev
$ git clone --depth 1 https://github.com/tesseract-ocr/tesseract.git
$ cd tesseract
$ ./autogen.sh
$ ./configure --enable-debug
$ LDFLAGS="-L/usr/local/lib" CFLAGS="-I/usr/local/include" make
$ sudo make install
$ sudo ldconfig
$ tesseract -v
tesseract 2f10be5
leptonica-1.74.1
libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8
Found AVX
Found SSE
[tess4j 를 이용한 Java 테스트]
HelloTess4j.java
public class HelloTess4j {
public static void main(String[] args) {
String datapath = "src/main/resources";
String testResourcesDataPath = "src/main/resources/test-data";
File imageFile;
ITesseract instance;
instance = new Tesseract();
instance.setDatapath(new File(datapath).getPath());
instance.setLanguage("eng");
try {
ImageIO.scanForPlugins();
imageFile = new File(testResourcesDataPath, "eurotext.png");
String result = instance.doOCR(imageFile);
System.out.println(result);
} catch (TesseractException e) {
System.out.println(e.getMessage());
}
}
}
코드는 tess4j 소스코드 받아 보시면 잘 나와 있습니다.
setLanguage 설정에 오류가 있어서 멀티 lang 설정이 안되는데요. (버그로 등록이 되어 있습니다. - 2017.02.14일 기준)
이 오류가 수정 되면 eng+kor 테스트도 해보시면 좋을 것 같습니다.