Tess4J는 Tesseract OCR API의 Java(JNA) 캡슐화입니다.
오래전에는 자동로그인을 해야하고 웹페이지의 처리되지 않은 데이터에 버튼을 눌러야 했기 때문에 로그인 인증번호 확인이 필요해서 간단한 단어나 숫자 등을 인식할 수 있는 Tess4J를 사용했습니다. ., 그리고 인식률은 보통 수준인 것 같은데, 뭔가 잘못되면 인증코드를 바꿔서 다시 시도하면 됩니다. 이제 나중에 참고할 수 있도록 이전의 간단한 사용 과정을 기록해 보세요.
Tess4J
는 Tesseract OCR API
용 Java JNA
래퍼입니다. Tess4J
의 API를 호출하여 Java에서 Tesseract OCR
을 사용할 수 있도록 합니다. 지원되는 형식에는 TIFF, JPEG, GIF, PNG, BMP, JPEG, PDF
가 포함됩니다. 처음 이 문제를 접했을 때 나는 여전히 이 두 가지 사이에서 혼란스러웠습니다. 명확히 말하면 Tess4J
는 Java에서 직접 사용할 수 있는 jar 패키지이고, Tesseract OCR
은 문서 텍스트에서 Tess4J
를 지원하는 기반이 됩니다. Tess4J
는 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)); } }
测试结果截图如:
관련 정보를 미리 언어 라이브러리 파일, 여기에 chi_sim.traineddata 및 eng.traineddata 두 개를 다운로드했습니다.
다운로드 주소: https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata다운로드 후 코드에 있습니다
🎜 🎜그림 1🎜🎜<img src="https://img.php.cn/upload/article/000/465/014/168362575272371.png" alt="Java는 이미지 텍스트 인식을 위해 tess4j를 어떻게 사용합니까?">🎜 🎜<code>그림 2 code>🎜🎜<img src="https://img.php.cn/upload/article/000/465/014/168362575222312.jpg" alt="이미지에 tess4j를 사용하는 방법 Java의 텍스트 인식 기능">🎜🎜 <code>두 그림을 리소스 디렉터리에 넣습니다
🎜🎜🎜🎜코드는 다음과 같습니다.🎜rrreee🎜테스트 결과 스크린샷은 다음과 같습니다.
🎜🎜🎜🎜🎜영어 인식은 비교적 정상이고, 중국어 인식은 공백이 있습니다. 필요한 경우 코드를 통해 공백을 추가로 제거할 수 있습니다. 이 시점에서 tess4j의 간단한 사용 테스트가 완료됩니다. 🎜위 내용은 tess4j를 사용하여 Java에서 이미지 텍스트 인식 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!