1. 먼저 Tesseract 라이브러리를 불러온다
maven 사이트 접속해서 오늘날짜 기준 가장 최신버전으로 선택했다.
https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j/5.2.0
2. pom.xml에 dependency 추가.
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.5.2</version>
</dependency>
3. 테스트를 위한 Class 생성 !
import java.io.File;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
public class OcrTest {
public static void main(String[] args) {
try {
// 읽어볼 이미지를 가져온다.
File image = new File("경로상생략/res.jpg");
Tesseract tesseract = new Tesseract();
tesseract.setDatapath("경로상생략/tessdata"); //** 학습된데이터가 있는 폴더를 지정해준다.
tesseract.setLanguage("eng"); // 언어설정
tesseract.setPageSegMode(1); // 페이지 모드 설정
tesseract.setOcrEngineMode(1);
// tesseract.setHocr(true); // html로 그려주는 flag
String result = tesseract.doOCR(image);
System.out.println(result);
} catch (TesseractException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
tesseract.setDatapath("경로상생략/tessdata"); 이 라인은 tesseract가 이미지를 읽었을때
비교할 학습된 데이터 파일의 경로를 가르킨다.
아래 링크에 접속해보면 이미 학습된 데이터를 제공하고 있으므로 내가 하고자 하는 언어를 다운받아서 넣어두면 된다.
https://github.com/tesseract-ocr/tessdata
GitHub - tesseract-ocr/tessdata: Trained models with support for legacy and LSTM OCR engine
Trained models with support for legacy and LSTM OCR engine - GitHub - tesseract-ocr/tessdata: Trained models with support for legacy and LSTM OCR engine
github.com
접속해보면 아래와 같은 파일들이 나오는데 앞 글자가 언어를 가르키고 있다.
나는 영문과 중문이 필요하므로 아래 이미지와 같이 구성하였다.
테스트로 사용한 이미지
결과 )
결론)
위에 올린 이미지 말고도 여러개의 이미지를 테스트 해보았으나
연습용 정도의 퀄리티만 나올 뿐, 업무에 적용해보긴 어려울거 같다는 판단이 든다.
어떻게 하면 인식률을 올릴 수 있을까?
OpenCV 라이브러리를 이용해 이미지 흑백으로 바꾸고 블러등등.. 을 이용해
이미지를 더 깔끔하게 만들어 준다면 인식하는데 효과가 있다고한다.
OpenCV 적용을 해보도록한다.
* 손글씨는 50% 정도만 인식되는걸로 보임.
'OCR' 카테고리의 다른 글
[JAVA] OpenCV + Tesseract 사용법 (0) | 2022.04.08 |
---|---|
Java + OpenCV 사용법 (0) | 2022.04.08 |
OCR 알아보기 시작!! (0) | 2022.04.07 |