ホームページ >Java >&#&チュートリアル >tess4jを使用してJavaで画像テキスト認識機能を実装するにはどうすればよいですか?

tess4jを使用してJavaで画像テキスト認識機能を実装するにはどうすればよいですか?

王林
王林転載
2023-05-09 17:49:082523ブラウズ

    java は画像テキスト認識に tess4j を使用します

    1. はじめに

    Tess4J は、Tesseract OCR API の Java (JNA) カプセル化です。 。
    昔、自動ログインを行ってWebページ上の未処理データのボタンをクリックする必要があり、ログイン確認コードの検証が必要だったので、簡単な単語や数字を認識できるTess4Jを使用していました。 , 等、認識率は正常のようですが、エラーが出た場合は認証コードを変更して再試行すれば、あと何回か試しても成功します。ここで、将来の参照のために、以前の簡単な使用プロセスを記録します。

    Tess4J は、Tesseract OCR APIJava JNA パッケージです。 Tess4J の API を呼び出して、Java が Tesseract OCR を使用できるようにします。サポートされている形式には、TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF が含まれます。初めてこれに接したとき、私はまだこの 2 つのことの間で混乱していました。明確に言うと、Tess4J は Java で直接使用できる jar パッケージであり、Tesseract OCRTess4J をファイル テキスト認識にサポートするための基礎です。 ##Tess4JMaven を使用して直接インポートできます。

    2. 使用プロセス

    1. Maven の依存関係を pom.xml

    		<!-- tess4j start -->
    		<dependency>
    		    <groupId>net.sourceforge.tess4j</groupId>
    		    <artifactId>tess4j</artifactId>
    		    <version>5.6.0</version>
    		</dependency>
    		<!-- tess4j end -->
    に導入します

    2. 言語ライブラリ ファイルを tessdata ディレクトリに準備します

    関連する言語ライブラリ ファイルを事前にダウンロードする必要があります。ここでは 2 つの chi_sim.traineddata と eng.traineddata をダウンロードしました ダウンロード アドレス: https://codechina.csdn.net/mirrors/tesseract-ocr /tessdata
    ダウンロード後、コード内のディレクトリに配置します

    tess4jを使用してJavaで画像テキスト認識機能を実装するにはどうすればよいですか?

    3. テスト用のテストコードを記述します

    画像を2枚用意して配置しますこれらはコード内にあります。 リソース ディレクトリでは、プログラムが読み取るのに便利です。

    #図 1

    tess4jを使用してJavaで画像テキスト認識機能を実装するにはどうすればよいですか?

    画像 2

    tess4jを使用してJavaで画像テキスト認識機能を実装するにはどうすればよいですか?

    #2 つの画像はリソース ディレクトリに配置されます

    tess4jを使用してJavaで画像テキスト認識機能を実装するにはどうすればよいですか?コードは次のとおりです:

    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を使用してJavaで画像テキスト認識機能を実装するにはどうすればよいですか? 英語の認識は比較的正常であり、中国語の認識にはスペースが含まれていますが、必要に応じて、コードを通じてスペースをさらに削除することができます。この時点で、tess4j の簡単な使用テストは完了です。

    以上がtess4jを使用してJavaで画像テキスト認識機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。