◾️はじめに
https://dk521123.hatenablog.com/entry/2017/01/17/215359
のつづき。[2] Tesseract-OCR / Tess4J を使用する。
個人的見解
* 英語なら十分に使える
【1】準備
以下の環境で行った環境構築手順を記す。 * OS:Windows10 (Linuxの場合、「dllファイル」を「isoファイル」にするだけらしい) * java : JDK1.8 * Eclipse : Neon.1a Release (4.6.1)
1)ファイルのダウンロード
[1-1] 以下のサイトから、「Tess4J-X.X.X-src.zip(今回は「Tess4J-3.2.1-src.zip」)」をダウンロードする https://sourceforge.net/projects/tess4j/?source=typ_redirect 日本語や多言語をサポートするなら... [1-2] 以下のサイトから、自分がサポートしたい言語のファイルをダウンロードする # 日本語の場合、「jpn.traineddata」リンクを押下し、「Download」ボタンを押下し、 #「jpn.traineddata」ファイルをダウンロードする # ※ 補足:「xxx.traineddata」の言語部分「xxx」は「ISO 639-3」で記載
https://github.com/tesseract-ocr/tessdata
2)ファイルの配置・インポート
[2-1] [1-1] でダウンロードしたZIPファイルを解凍し、
Jarファイルおよび「tessdata」フォルダを自分のプロジェクト内に配置する
[2-2] [1-1] でダウンロードした「xxx.traineddata(今回は「jpn.traineddata」)」を
自分のプロジェクト内にある「tessdata」フォルダ配下に置く
[2-3] 環境変数「TESSDATA_PREFIX」を定義し、値を、自分のプロジェクトがあるパスにする
~~~
+ 環境変数名 : TESSDATA_PREFIX
+ 環境変数値 : 自分のプロジェクトがあるパス(例「C:\workspace\SampleProject」)
~~~
3)設定例
解凍したファイルのフォルダ構造
Tess4J-3.2.1-src
+ Tess4J
+ dist ... jarファイル「tess4j-3.2.1.jar」をインポート
+ lib ... 「commons-beanutils-1.9.2.jar」等、全てのjarファイルをインポート
+ win32-x86-64 ... 「libtesseract304.dll」「gsdll64.dll」をコピーし、自分のプロジェクト内に配置する
+ src ... ソース(jarファイル「tess4j-3.2.1.jar」をインポートしない場合は、配下の「com」「net」をコピーし配置)
+ tessdata ... フォルダ「tessdata」ごとコピーし、自分のプロジェクト内に配置する
ファイル移行先(自分のプロジェクト=「SampleProject」)
C:\workspace\SampleProject
+ src
+ lib
+ commons-beanutils-1.9.2.jar
+ ...その他多数のjarファイル
+ tess4j-3.2.1.jar
+ dll
+ libtesseract304.dll
+ gsdll64.dll
+ tessdata
+ jpn.traineddata
【2】サンプル
* 簡単なサンプル画像「/etc/hello.png(ペイント「こんにちは。」と書いて保存)」を用意しておく
** demo.java *
import java.io.File; import net.sourceforge.tess4j.ITesseract; import net.sourceforge.tess4j.Tesseract; import net.sourceforge.tess4j.TesseractException; public class Main { public static void main(String[] args) { File imageFile = new File("./etc/hello.png"); ITesseract instance = new Tesseract(); try { long start = System.currentTimeMillis(); instance.setLanguage("jpn"); // ★英語だけならここをコメントアウト★ String result = instance.doOCR(imageFile); long end = System.currentTimeMillis(); System.out.println(result); System.out.println((end - start) / 1000 + "[sec]"); } catch (TesseractException ex) { ex.printStackTrace(); } } }
出力結果
* 結果1:「こんにちは。」と書かれた画像 ・・・略・・・ ParamsModel::Incomplete line 申? ParamsModel::Incomplete line ParamsModel::Incomplete line Paraこんにちは〟 <== 出力結果 15[sec] <== 掛かった時間 msModel::Incomplete line Pス ParamsModel::Incomplete line ParamsModel::Incomplete line `<E ParamsModel::Incomplete line ? ParamsModel::Incomplete line ParamsModel::Incomplete line ?,ュ ParamsModel::Incomplete line * 結果2:「山田 太郎」と書かれた画像 ・・・略・・・ ParamsModel::Incomplete line 申? ParamsModel::Incomplete line ParamsModel::Incomplete line Para山田鮑 <== 出力結果 16[sec] <== 掛かった時間 msModel::Incomplete line Pス ParamsModel::Incomplete line ParamsModel::Incomplete line `<E ParamsModel::Incomplete line ? ParamsModel::Incomplete line ParamsModel::Incomplete line ?,ュ ParamsModel::Incomplete line * 結果3:「ABC...XYZ」と書かれた画像 ABCDEFGHIJKLMNOPQRSTUVWXVZ 1[sec]
関連記事
Java OCRライブラリ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2017/01/17/215359
【Eclipse】DLLファイルを取り込む方法
Python 〜 Tesseract OCR 〜
https://dk521123.hatenablog.com/entry/2025/10/03/141326