


Comment utiliser tess4j pour implémenter la fonction de reconnaissance de texte d'image en Java ?
java utilise tess4j pour la reconnaissance de texte d'image
1 Introduction
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
方式引入。
二、使用过程
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目录下的语言库文件
需要提前下载好相关的语言库文件,这里我下了chi_sim.traineddata和eng.traineddata两个
下载地址:https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata
下载好后放在代码里面的目录下
3.写测试代码进行测试
准备好两张图片放置在代码的资源目录下,方便程序读取,
图片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)); } }
测试结果截图如:
1. La dépendance Maven importe pom.xml
rrreee2 Préparez le fichier de la bibliothèque de langage dans le répertoire tessdata
.
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
#🎜🎜#
3. Écrivez le code de test pour tester
#🎜🎜# Préparez deux pages Les images sont placées dans le répertoire des ressources du code pour une lecture facile par le programme, #🎜🎜##🎜🎜#Image 1
#🎜🎜##🎜🎜#
Image 2
#🎜🎜##🎜🎜#
Deux images sont placées dans le répertoire des ressources
#🎜🎜##🎜🎜#
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est
