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にアクセスし、実行結果を確認する。