Maison >Java >javaDidacticiel >Comment utiliser tess4j pour implémenter la fonction de reconnaissance de texte d'image en Java ?
Tess4J est Java ( JNA) encapsulation de l'API Tesseract OCR.
Il y a longtemps, je devais effectuer une connexion automatique et cliquer sur le bouton sur les données non traitées sur la page Web, ce qui nécessitait une vérification du code de vérification de connexion, j'ai donc utilisé Tess4J, qui peut reconnaître quelques mots et chiffres simples , etc. Le taux semble moyen, mais si vous faites une erreur, modifiez simplement un code de vérification et réessayez. Vous pouvez réussir même si vous essayez plusieurs fois. Enregistrez maintenant le processus d'utilisation simple précédent pour référence future.
Tess4J
est un wrapper Java JNA
pour l'API Tesseract OCR
. Permet à Java d'utiliser Tesseract OCR
en appelant l'API de Tess4J
. Les formats pris en charge incluent TIFF, JPEG, GIF, PNG, BMP, JPEG, PDF
. Lorsque je suis entré en contact avec cela pour la première fois, j’étais encore confus entre ces deux choses. Pour être clair, Tess4J
est un package jar qui peut être directement utilisé par Java, et Tesseract OCR
est la base pour prendre en charge Tess4J
dans le texte du document. La reconnaissance Tess4J
peut être importée directement à l'aide de Maven
. 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)); } }
测试结果截图如:
Vous devez télécharger les fichiers de la bibliothèque de langue pertinents à l'avance. Ici, j'ai téléchargé deux chi_sim.traineddata et eng.traineddata
Adresse de téléchargement : https://codechina.csdn.net. /mirrors/tesseract-ocr/tessdataAprès le téléchargement, placez-le dans le répertoire dans le code
#🎜🎜##🎜🎜#Image 1
#🎜🎜##🎜🎜##🎜🎜##🎜🎜#Image 2
#🎜🎜##🎜🎜##🎜🎜##🎜🎜#Deux images sont placées dans le répertoire des ressources
#🎜🎜##🎜🎜##🎜🎜##🎜🎜#Le code est le suivant : #🎜🎜# rrreee#🎜🎜# Une capture d'écran du résultat du test est la suivante :
#🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#La reconnaissance de l'anglais est relativement normale, et La reconnaissance chinoise contient des espaces.Si nécessaire, les espaces peuvent être supprimés davantage via le Code, À ce stade, le test d'utilisation simple de tess4j est terminé. #🎜🎜#Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!