Heim >Java >javaLernprogramm >Wie implementiert man mit tess4j die Bildtexterkennungsfunktion in Java?
Tess4J ist eine Java (JNA)-Kapselung der Tesseract OCR API.
Vor langer Zeit musste ich mich automatisch anmelden und auf die Schaltfläche für unverarbeitete Daten auf der Webseite klicken, was eine Überprüfung des Anmeldebestätigungscodes erforderte. Deshalb habe ich Tess4J verwendet, das einige einfache Wörter und Zahlen usw. erkennen kann ., und die Erkennungsrate scheint durchschnittlich zu sein, aber wenn etwas schief geht, ändern Sie einfach den Bestätigungscode und versuchen Sie es erneut. Sie können Erfolg haben, auch wenn Sie es noch ein paar Mal versuchen. Notieren Sie nun den vorherigen einfachen Verwendungsprozess zum späteren Nachschlagen.
Tess4J
ist ein Java JNA
-Wrapper für die Tesseract OCR API
. Ermöglicht Java die Verwendung von Tesseract OCR
durch Aufrufen der API von Tess4J
. Zu den unterstützten Formaten gehören TIFF, JPEG, GIF, PNG, BMP, JPEG, PDF
. Als ich zum ersten Mal damit in Kontakt kam, war ich immer noch verwirrt zwischen diesen beiden Dingen. Um es klar auszudrücken: Tess4J
ist ein JAR-Paket, das direkt von Java verwendet werden kann, und Tesseract OCR
ist die Grundlage für die Unterstützung von Tess4J
im Dokumenttext Erkennung. Tess4J
kann direkt mit Maven
importiert werden. Tess4J
是对Tesseract OCR API
的Java JNA
封装。使java能够通过调用Tess4J
的API来使用Tesseract OCR
。支持的格式包括TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF
。这个开始接触的时候,我对这两个东西还搞混淆了。明确说一下,Tess4J
是java直接可使用的jar包,而Tesseract OCR
是支持Tess4J
进文件文字识别的基础,Tess4J
可直接使用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两个
下载地址:https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata
下载好后放在代码里面的目录下
准备好两张图片放置在代码的资源目录下,方便程序读取,
图片1
图片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)); } }
测试结果截图如:
Sie müssen herunterladen die relevanten Informationen im Voraus Sprachbibliotheksdateien, hier habe ich zwei chi_sim.traineddata und eng.traineddata heruntergeladen
Download-Adresse: https://codechina.csdn.net/mirrors/tesseract-ocr/tessdataNach dem Herunterladen setzen es im Code Im Verzeichnis darin
🎜 🎜Bild 1 code>🎜🎜<img src="https://img.php.cn/upload/article/000/465/014/168362575272371.png" alt="Wie verwendet Java tess4j für die Bildtexterkennung">🎜🎜 <code>Bild 2 code>🎜🎜<img src="https://img.php.cn/upload/article/000/465/014/168362575222312.jpg" alt="So verwenden Sie tess4j für Bildtext Erkennungsfunktion in Java">🎜🎜 <code>Platzieren Sie die beiden Bilder im Ressourcenverzeichnis
🎜🎜🎜🎜Der Code lautet wie folgt: 🎜rrreee🎜Der Screenshot des Testergebnisses lautet wie folgt:
🎜 🎜🎜🎜🎜Die englische Erkennung ist relativ normal und die chinesische Erkennung enthält Leerzeichen. Bei Bedarf können Leerzeichen durch Code weiter entfernt werden. An diesem Punkt ist der einfache Verwendungstest von tess4j abgeschlossen. 🎜Das obige ist der detaillierte Inhalt vonWie implementiert man mit tess4j die Bildtexterkennungsfunktion in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!