Tess4J ialah enkapsulasi Java (JNA) bagi Tesseract OCR API. .
Sudah lama dahulu, saya perlu melakukan log masuk automatik dan klik butang pada data yang tidak diproses pada halaman web, yang memerlukan pengesahan kod pengesahan log masuk, jadi saya menggunakan Tess4J, yang boleh mengecam beberapa perkataan dan nombor mudah , dsb., dan kadar pengecaman adalah Nampaknya perkara biasa, tetapi jika anda membuat ralat, cuma tukar kod pengesahan dan cuba lagi Anda boleh berjaya walaupun anda mencuba beberapa kali lagi. Sekarang rekodkan proses penggunaan mudah sebelum ini untuk rujukan masa hadapan.
Tess4J
ialah Tesseract OCR API
enkapsulasi Java JNA
. Membolehkan java menggunakan Tess4J
dengan memanggil API Tesseract OCR
. Format yang disokong termasuk TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF
. Apabila saya mula-mula bersentuhan dengan ini, saya masih keliru antara dua perkara ini. Untuk menjadi jelas, Tess4J
ialah pakej balang yang boleh digunakan secara langsung oleh Java, dan Tesseract OCR
ialah asas untuk menyokong Tess4J
dalam pengecaman teks fail Tess4J
boleh diperkenalkan terus menggunakan kaedah Maven
.
<!-- tess4j start --> <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>5.6.0</version> </dependency> <!-- tess4j end -->
需要提前下载好相关的语言库文件,这里我下了chi_sim.traineddata和eng.traineddata两个
Alamat muat turun: https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata
Selepas memuat turun, letakkannya dalam direktori dalam kod
Sediakan dua gambar dan letakkan dalam direktori sumber kod untuk memudahkan program membaca,
图片1
图片2
两张图片放在资源目录下
Kodnya ialah seperti berikut:
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)); } }
测试结果截图如:
Pengiktirafan bahasa Inggeris agak biasa, tetapi pengiktirafan bahasa Cina mempunyai ruang jika perlu, ruang boleh dialih keluar lagi kod. Pada ketika ini, ujian penggunaan mudah tess4j Selesai.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan tess4j untuk melaksanakan fungsi pengecaman teks imej dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!