OCR識(shí)別身份證的話,會(huì)涉及到數(shù)字識(shí)別,中文識(shí)別,英文識(shí)別的。數(shù)字和英文相對(duì)比較好識(shí)別。中文麻煩一些。目前市場(chǎng)上有一個(gè)開(kāi)源的,tesseract識(shí)別效果稍微比較好。樓主可以試一試。tesseract是C++做的,java可以使用JNI調(diào)用C語(yǔ)言的。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),瑪納斯企業(yè)網(wǎng)站建設(shè),瑪納斯品牌網(wǎng)站建設(shè),網(wǎng)站定制,瑪納斯網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,瑪納斯網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
18位為效驗(yàn)位(識(shí)別碼),通過(guò)復(fù)雜公式算出,普遍采用計(jì)算機(jī)自動(dòng)生成。是前面17位的一種檢驗(yàn)代碼,如果你改變了前面某個(gè)數(shù)字而后面的效驗(yàn)代碼不響應(yīng)改變就會(huì)被計(jì)算軟件判斷為非法身份正號(hào)碼。
不止一家)。以下是我搜索到一家提供商的介紹:目前,身份證實(shí)名認(rèn)證系統(tǒng)是采用接口的形式。申請(qǐng)平臺(tái)需要進(jìn)行少量的技術(shù)開(kāi)發(fā)工作。平臺(tái)申請(qǐng)免費(fèi)測(cè)試后,可以向客服人員索要接口文檔和實(shí)例(包括PHP,JAVA,C#,RUBY)。
數(shù)字必須是16位或者18位,并且要屏蔽一些可能的胡亂輸入的數(shù)字。比如:18個(gè)1,18個(gè)..如果針對(duì)某一地區(qū),則還要判斷前幾位。做這些就是為了保證獲得的數(shù)字是一個(gè)真實(shí)的身份證號(hào),而不會(huì)是一個(gè)胡亂輸入的數(shù)列串。
近年來(lái),隨著移動(dòng)設(shè)備的快速更新迭代,以及移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,使得OCR有更為廣泛的應(yīng)用場(chǎng)景,從以往的掃描文件的字符識(shí)別,到現(xiàn)在應(yīng)用到自然場(chǎng)景中圖片文字的識(shí)別,如識(shí)別身份證、銀行卡、門(mén)牌、票據(jù)及各類(lèi)網(wǎng)絡(luò)圖片中的文字。
其實(shí)JAVA在這里只做了排版的作用,你把所以信息都上傳了,JAVA只要做個(gè)和身份證相應(yīng)大小的區(qū)域,按照上面的布局把數(shù)據(jù)填入,這里布局可以用html的DIV,也可以自己做個(gè)c/s結(jié)構(gòu)的應(yīng)用程序。
1、使用java語(yǔ)言實(shí)現(xiàn)一個(gè)身份證號(hào)碼轉(zhuǎn)換的程序:把15位號(hào)碼轉(zhuǎn)換為18位的號(hào)碼功能要求:判斷輸入身份證號(hào)位數(shù)是否正確,判斷輸入是否有效(如輸入非數(shù)字字符),否則提示用戶(hù)重新輸入。 計(jì)算身份證號(hào)碼。
2、370304:代表的是地區(qū)編號(hào) 19841106:出生日期 1433:個(gè)人區(qū)分號(hào) 生日 str = ID.substring(9,13); 這樣截取后的子字符串str就是1106。最后再將截取后的字符串替換成星號(hào)。
3、18位為效驗(yàn)位(識(shí)別碼),通過(guò)復(fù)雜公式算出,普遍采用計(jì)算機(jī)自動(dòng)生成。是前面17位的一種檢驗(yàn)代碼,如果你改變了前面某個(gè)數(shù)字而后面的效驗(yàn)代碼不響應(yīng)改變就會(huì)被計(jì)算軟件判斷為非法身份正號(hào)碼。
雖然校驗(yàn)碼為“X”不能更換,但若需全用數(shù)字表示,只需將18位公民身份號(hào)碼轉(zhuǎn)換成15位居民身份證號(hào)碼,去掉第7至8位和最后1位3個(gè)數(shù)碼。當(dāng)今的身份證號(hào)碼有15位和18位之分。
function checkIdcard(num){ num = num.toUpperCase();//身份證號(hào)碼為15位或者18位,15位時(shí)全為數(shù)字,18位前17位為數(shù)字,最后一位是校驗(yàn)位,可能為數(shù)字或字符X。
import java.util.regex.Pattern;public class IDCard { /*** 身份證驗(yàn)證開(kāi)始 ***/ / 身份證號(hào)碼驗(yàn)證 號(hào)碼的結(jié)構(gòu) 公民身份號(hào)碼是特征組合碼,由十七位數(shù)字本體碼和一位校驗(yàn)碼組成。
就是直接打印system.out.pritln(字符串.length),然后你就知道你錯(cuò)在哪里了。養(yǎng)成一個(gè)良好的差錯(cuò)習(xí)慣。排錯(cuò)能力也是體驗(yàn)一個(gè)開(kāi)發(fā)人員的開(kāi)發(fā)能力的方面。
java code :String a = 11,22,33,44,55,66Pattern p = Pattern點(diǎn)抗 pile(^\\d+(\\,\\d+)*$);System.out.println(p.matcher(a).matches());測(cè)試通過(guò)。
1樓的方法的冗長(zhǎng),你知道正則表達(dá)式嗎?java中提供了對(duì)正則表達(dá)式的支持,在java.util.regex包中,里面有個(gè)叫Pattern的類(lèi),它可以很輕松的解決你的問(wèn)題,建議你好好讀讀api幫助文檔。