CONTACT
お問い合わせ

Tess4jを利用した画像から文字認識するプログラムの実装

Tess4jを利用した画像から文字認識するプログラムをSpringで実装する方法について説明する。

目次

1.概要
2.ライブラリの準備
3.プログラムの実装
4.動作確認

1.概要

オープンソースのOCRエンジン「Tesseract」をJavaから利用するライブラリである『Tess4j』を利用し、
画像から文字認識するプログラムをSpringにて実装する。

【参考】
JavaでOCR(画像から文字認識)
Java でニューラルネットOCR – Tess4Jの使い方

2.ライブラリの準備

2-1.ライブラリのインストール

pom.xmlにTess4jの依存関係を追記する。

<dependency>	
	<groupId>net.sourceforge.tess4j</groupId>
	<artifactId>tess4j</artifactId>
	<version>5.9.0</version>
</dependency>	
2-2.訓練データをダウンロードしてきてフォルダに配置する

データは3種類(試すだけなら、どれを使ってもOK)
tessdata
tessdata_best
tessdata_fast

以下の2つが日本語用の訓練データ

https://github.com/tesseract-ocr/tessdata_fast/blob/main/jpn.traineddata
 ・jpn.traineddata
 ・jpn_vert.traineddata

使用する訓練データをダウンロード

3.プログラムの実装

3-1.読み込ませるサンプル画像を用意する
3-2.実行するソースコードを作成する

※今回はControllerで動かす

@Controller			
public class MainController {			
			
	// commons.loggingのロガー		
	static final Log logger = LogFactory.getLog(MethodHandles.lookup().lookupClass());		
			
	/***		
	* ログイン画面		
	*/		
	@RequestMapping(value = {"/", "/top", "/top/"}, method = GET)		
	public String login() {		
		logger.info("TOP画面へ");	
		try {	
			// 画像を読み込む
			// 読み込む画像を適当なフォルダに配置しておく
			File file = new File("C:\\dev\\tess4j\\画像認証テスト.jpg");
			BufferedImage img = ImageIO.read(file);
			
			ITesseract tesseract = new Tesseract();
			tesseract.setDatapath("C:\\dev\\tess4j\\fast"); // 言語ファイル(jpn.traineddata)の場所を指定
			tesseract.setLanguage("jpn"); // 解析言語は「日本語」を指定
			/***
			* EngineMode
			*    下記4つを指定可能。ただし tessdata_best, tessdata_fast の場合、後ろ2つは使用不可。
			*       OEM_DEFAULT:コマンドラインや言語固有の設定による自動推測(未指定の場合はこれが設定される)
			*       OEM_LSTM_ONLY:LSTM line recognizer(ニューラル ネット ベースのエンジ)のみ
			*       OEM_TESSERACT_ONLY:Tesseract のみ(従来の tesseract エンジンで最も高速)
			*       OEM_TESSERACT_LSTM_COMBINED:LSTM recognizer (Tesseract へのフォールバックあり)
			*/
			tesseract.setOcrEngineMode(ITessAPI.TessOcrEngineMode.OEM_DEFAULT);
			
			// 解析
			String str = tesseract.doOCR(img);
			// 結果出力
			System.out.println(str);
		}catch(Exception ex) {	
			logger.info(ex.getMessage());
		}	
		return "main";	
	}		
}			

4.動作確認

実行して、http://localhost:8080/topにアクセスし、実行結果を確認する。