ホームページ >Java >&#&チュートリアル >tess4jを使用してJavaで画像テキスト認識機能を実装するにはどうすればよいですか?
Tess4J は、Tesseract OCR API の Java (JNA) カプセル化です。 。
昔、自動ログインを行ってWebページ上の未処理データのボタンをクリックする必要があり、ログイン確認コードの検証が必要だったので、簡単な単語や数字を認識できるTess4Jを使用していました。 , 等、認識率は正常のようですが、エラーが出た場合は認証コードを変更して再試行すれば、あと何回か試しても成功します。ここで、将来の参照のために、以前の簡単な使用プロセスを記録します。
Tess4J
は、Tesseract OCR API
の Java JNA
パッケージです。 Tess4J
の API を呼び出して、Java が Tesseract OCR
を使用できるようにします。サポートされている形式には、TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF
が含まれます。初めてこれに接したとき、私はまだこの 2 つのことの間で混乱していました。明確に言うと、Tess4J
は Java で直接使用できる jar パッケージであり、Tesseract OCR
は Tess4J
をファイル テキスト認識にサポートするための基礎です。 ##Tess4JMaven
を使用して直接インポートできます。
<!-- tess4j start --> <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>5.6.0</version> </dependency> <!-- tess4j end -->に導入します
関連する言語ライブラリ ファイルを事前にダウンロードする必要があります。ここでは 2 つの chi_sim.traineddata と eng.traineddata をダウンロードしました ダウンロード アドレス: https://codechina.csdn.net/mirrors/tesseract-ocr /tessdata
ダウンロード後、コード内のディレクトリに配置します
#図 1
画像 2
#2 つの画像はリソース ディレクトリに配置されます
コードは次のとおりです:
package cn.ljhua; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.InputStream; import javax.imageio.ImageIO; import lombok.extern.slf4j.Slf4j; import net.sourceforge.tess4j.ITesseract; import net.sourceforge.tess4j.Tesseract; import net.sourceforge.tess4j.TesseractException; /** * Tess4jOcr测试示例 * @author liujh */ @Slf4j public class Tess4jOcrTest { public static void main(String[] args) { Tess4jOcrTest test = new Tess4jOcrTest(); test.ocrTest(); } public void ocrTest() { log.info("ocrTest start...."); long startMs = System.currentTimeMillis(); //Tesseract的代码开始---------------------->>>> ITesseract instance = new Tesseract(); /** * 组装接好tessdata目录的路径字符串 */ String filePathPre = System.getProperty("user.dir"); String dataPath = filePathPre + File.separator + "tessdata"; /** * 设置目录datapath the tessdata path to set * 否则会报Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.错误 */ instance.setDatapath(dataPath); //instance.setLanguage("eng");//默认,可以不写 instance.setLanguage("chi_sim");//设置中文识别 String imageName = "verifyCode.png"; try (InputStream inStream = this.getClass().getResourceAsStream("/" + imageName)) { BufferedImage bImage = ImageIO.read(inStream); //doOCR也可以传参为File,我这里传的BufferedImage String result = instance.doOCR(bImage); //识别的结果回来可能会带回车,处理掉 result = result.replaceAll("\n", ""); log.info("图片名:" + imageName +" 识别结果:"+ result); } catch (IOException e) { log.error(e.getMessage(),e); } catch (TesseractException e) { log.error(e.getMessage(),e); } imageName = "vCode2.jpg"; try (InputStream inStream = this.getClass().getResourceAsStream("/" + imageName)) { BufferedImage bImage = ImageIO.read(inStream); //doOCR也可以传参为File,我这里传的BufferedImage String result = instance.doOCR(bImage); //识别的结果回来可能会带回车,处理掉 result = result.replaceAll("\n", ""); log.info("图片名:" + imageName +" 识别结果:"+ result); } catch (IOException e) { log.error(e.getMessage(),e); } catch (TesseractException e) { log.error(e.getMessage(),e); } //Tesseract的代码结束--------------------->>>> log.info("ocrTest success. spend time :{} ms.", (System.currentTimeMillis() - startMs)); } }
テスト結果のスクリーンショットは次のとおりです:
英語の認識は比較的正常であり、中国語の認識にはスペースが含まれていますが、必要に応じて、コードを通じてスペースをさらに削除することができます。この時点で、tess4j の簡単な使用テストは完了です。
以上がtess4jを使用してJavaで画像テキスト認識機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。