java文字識別程序的關(guān)鍵是尋找一個可以調(diào)用的OCR引擎。tesseract-ocr就是一個這樣的OCR引擎,在1985年到1995年由HP實驗室開發(fā),現(xiàn)在在Google。tesseract-ocr 3.0發(fā)布,支持中文。不過tesseract-ocr 3.0不是圖形化界面的客戶端,別人寫的FreeOCR圖形化客戶端還不支持導(dǎo)入新的 3.0 traineddata。但這標(biāo)志著,現(xiàn)在有自由的中文OCR軟件了。
為隆陽等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及隆陽網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、做網(wǎng)站、隆陽網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
java中使用tesseract-ocr3.01的步驟如下:
1.下載安裝tesseract-ocr-setup-3.01-1.exe(3.0以上版本才增加了中文識別)
2.在安裝向?qū)е锌梢赃x擇需要下載的語言包。
3.到網(wǎng)上搜索下載java圖形處理所需的2個包:jai_imageio-1.1-alpha.jar,swingx-1.6.1.jar
4.java程序清單:
文字識別私有化部署方案
可部署至「本地服務(wù)器」的文字識別服務(wù),支持主流 CPU/GPU 環(huán)境及國產(chǎn)化系統(tǒng)部署,通用場景、卡證、票據(jù)、iOCR 等各類 OCR 模型及自定義平臺均可提供容器化部署包,在專有網(wǎng)絡(luò)環(huán)境下一鍵部署應(yīng)用,保障數(shù)據(jù)私密性。同時,可提供通用型一體機或國產(chǎn)化一體機,軟硬一體交付,開箱即用,統(tǒng)一維保
快捷部署
容器化打包,支持本地物理機、私有云等多種部署方式,提供一鍵部署工具和常用運維工具,快速接入、高效運維
數(shù)據(jù)安全
專有網(wǎng)絡(luò)環(huán)境下本地化部署,數(shù)據(jù)無需公網(wǎng)上傳,實現(xiàn)業(yè)務(wù)網(wǎng)絡(luò)公私分離,保障企業(yè)核心生產(chǎn)數(shù)據(jù)的私密性要求
適配廣泛
CPU 及 GPU 環(huán)境均可部署,主流 GPU 顯卡類型均已適配,并可支持國產(chǎn)化系統(tǒng)部署
授權(quán)靈活
根據(jù)QPS和使用期限進(jìn)行授權(quán),可自由選擇不同QPS配置,靈活適應(yīng)不同場景、不同業(yè)務(wù)的并發(fā)量需求
成為開發(fā)者
三步完成賬號的基本注冊與認(rèn)證:
STEP1:點擊百度AI開放平臺導(dǎo)航右側(cè)的控制臺,選擇需要使用的AI服務(wù)項。若為未登錄狀態(tài),將跳轉(zhuǎn)至登錄界面,請您使用百度賬號登錄。如還未持有百度賬戶,可以點擊此處注冊百度賬戶。
STEP2:首次使用,登錄后將會進(jìn)入開發(fā)者認(rèn)證頁面,請?zhí)顚懴嚓P(guān)信息完成開發(fā)者認(rèn)證。注:(如您之前已經(jīng)是百度云用戶或百度開發(fā)者中心用戶,此步可略過)。
STEP3:通過控制臺左側(cè)導(dǎo)航,選擇產(chǎn)品服務(wù)-人工智能,進(jìn)入具體AI服務(wù)項的控制面板(如文字識別、人臉識別),進(jìn)行相關(guān)業(yè)務(wù)操作。
希望能幫到你,謝謝!
云脈OCR SDK開發(fā)者平臺上有提供名片識別API接口,支持Java、C++、C、object pascal及objective-C等多種語言,識別速度快,平均識別時間少于0.6秒,識別率高,字符識別率97.37%,用戶登錄后即可自主下載接口.....
按照說明,送入tesseract的圖片的質(zhì)量直接影響識別的效果,因此,簡單的預(yù)處理是不可或缺的
1.首先灰度化,灰度值=0.3R+0.59G+0.11B:
Java代碼
for (int y = minY; y height; y++) {
for (int x = minX; x width; x++) {
int rgb = srcImg.getRGB(x, y);
Color color = new Color(rgb); // 根據(jù)rgb的int值分別取得r,g,b顏色。
int gray = (int) (0.3 * color.getRed() + 0.59
* color.getGreen() + 0.11 * color.getBlue());
Color newColor = new Color(gray, gray, gray);
srcImg.setRGB(x, y, newColor.getRGB());
}
}
結(jié)果如圖:
2.其次是灰度反轉(zhuǎn):
Java代碼
for (int y = minY; y height; y++) {
for (int x = minX; x width; x++) {
int rgb = buffImg.getRGB(x, y);
Color color = new Color(rgb); // 根據(jù)rgb的int值分別取得r,g,b顏色。
Color newColor = new Color(255 - color.getRed(), 255 - color
.getGreen(), 255 - color.getBlue());
buffImg.setRGB(x, y, newColor.getRGB());
}
}
結(jié)果如圖:
3.再次是二值化,取圖片的平均灰度作為閾值,低于該值的全都為0,高于該值的全都為255:
Java代碼
for (int y = minY; y height; y++) {
for (int x = minX; x width; x++) {
int rgb = buffImg.getRGB(x, y);
Color color = new Color(rgb); // 根據(jù)rgb的int值分別取得r,g,b顏色。
int value = 255 - color.getBlue();
if (value average) {
Color newColor = new Color(0, 0, 0);
buffImg.setRGB(x, y, newColor.getRGB());
} else {
Color newColor = new Color(255, 255, 255);
buffImg.setRGB(x, y, newColor.getRGB());
}
}
}
結(jié)果如圖:
看看效果還湊合,就省卻尺寸調(diào)整、中值濾波以及噪點去除等步驟了。
以上完成圖片預(yù)處理工作;Tesseract沒有開放api,純命令行調(diào)用:
Java代碼
ListString cmd = new ArrayListString(); // 存放命令行參數(shù)的數(shù)組
cmd.add(tessPath + "\\tesseract");
cmd.add("");
cmd.add(outputFile.getName()); // 輸出文件位置
cmd.add(LANG_OPTION); // 字符類別
cmd.add("eng"); // 英文,找到tessdata里對應(yīng)的字典文件。
ProcessBuilder pb = new ProcessBuilder();
pb.directory(imageFile.getParentFile());
cmd.set(1, tempImage.getName()); // 把圖片文件位置放在第一個位置
pb.command(cmd); // 執(zhí)行命令行
pb.redirectErrorStream(true); // 通知進(jìn)程生成器是否合并標(biāo)準(zhǔn)錯誤和標(biāo)準(zhǔn)輸出,把進(jìn)程錯誤保存起來。
Process process = pb.start(); // 開始執(zhí)行進(jìn)程
int w = process.waitFor(); // 當(dāng)前進(jìn)程停止,直到process停止執(zhí)行,返回執(zhí)行結(jié)果.
結(jié)果輸出表示一切正常
當(dāng)然,真正要用好tesseract-ocr,還需用到其強大地訓(xùn)練工具,就是后話了……
jdbc連接
package?com.luopo;
import?java.sql.*;?
import?java.sql.Connection;
import?java.sql.DriverManager;
import?java.sql.ResultSet;
import?java.sql.Statement;
public?class?Testoracle2?{
/**
?*?@param?args
?*/
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
try?{
//1.加載驅(qū)動
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到連接
Connection?ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
//
Statement?sm=ct.createStatement();
ResultSet?rs=sm.executeQuery("select?*?from?emp");
while(rs.next()){
//
System.out.println("用戶名:"+rs.getString(2));
}
}?catch(Exception?e){
e.printStackTrace();
}
}
}
是OCR文字識別技術(shù)來識別身份證吧。OCR識別身份證的話,會涉及到數(shù)字識別,中文識別,英文識別的。數(shù)字和英文相對比較好識別。中文麻煩一些。目前市場上有一個開源的,tesseract識別效果稍微比較好。樓主可以試一試。tesseract是C++做的,java可以使用JNI調(diào)用C語言的。如果樓主不差錢,并且識別效果要求高的話,建議使用第三方的識別軟件。樓主可以和取得聯(lián)系。希望幫助到樓主,希望采納,謝謝!