一、前言
最近有個(gè)朋友需要用Java做一個(gè)圖像識(shí)別的東西惰帽,因此幫忙參考了網(wǎng)上資料寫了一個(gè)基于Tess4J簡(jiǎn)單版的圖像識(shí)別demo,供參考父虑。
二该酗、簡(jiǎn)單實(shí)例
1、首先創(chuàng)建一個(gè)新的maven項(xiàng)目(創(chuàng)建教程在此省略士嚎,自行百度)呜魄,將所需jar包引入pom.xml
<dependencies>
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.4.0</version>
</dependency>
</dependencies>
2、在任意地方創(chuàng)建一個(gè)文件夾tessdata莱衩,將下載的chi_sim.traineddata 和 eng.traineddata語(yǔ)言包存放在該目錄下爵嗅,也可以直接存放到自己項(xiàng)目的resources/tessdata目錄下。
語(yǔ)言庫(kù)下載地址:https://github.com/tesseract-ocr/tessdata
3笨蚁、編寫代碼
// 識(shí)別圖片的路徑(修改為自己的圖片路徑)
String path = "D:\\test.jpg";
// 語(yǔ)言庫(kù)位置(修改為跟自己語(yǔ)言庫(kù)文件夾的路徑)
String lagnguagePath = "D:\\tessdata";
File file = new File(path);
ITesseract instance = new Tesseract();
//設(shè)置訓(xùn)練庫(kù)的位置
instance.setDatapath(lagnguagePath);
//chi_sim :簡(jiǎn)體中文睹晒, eng 根據(jù)需求選擇語(yǔ)言庫(kù)
instance.setLanguage("eng");
String result = null;
try {
long startTime = System.currentTimeMillis();
result = instance.doOCR(file);
long endTime = System.currentTimeMillis();
System.out.println("Time is:" + (endTime - startTime) + " 毫秒");
} catch (TesseractException e) {
e.printStackTrace();
}
System.out.println("result: ");
System.out.println(result);
4、測(cè)試
本文以一張簡(jiǎn)單的圖片為例:圖片放置在D:\test.png根目錄下括细,因此使用代碼測(cè)試前需要修改代碼中指定的兩個(gè)路徑N焙堋!奋单!
識(shí)別圖片:
運(yùn)行代碼后:
5锉试、可選步驟:配置環(huán)境變量(TESSDATA_PREFIX)
環(huán)境變量地址指向你存放語(yǔ)言包的文件夾路徑,如:我的語(yǔ)言包路徑在 D:\tessdata
本文代碼參考自:https://blog.csdn.net/zai_xia/article/details/80003778
往期系列文章:
Spring Security系列教程
ELK日志采集整合教程