java身份證識別
① java怎麼自己做一個orc身份證識別
是OCR文字識別技術來識別身份證吧。OCR識別身份證的話,會涉及到數字識別,中文識別,英文識別的。數字和英文相對比較好識別。中文麻煩一些。目前市場上有一個開源的,tesseract識別效果稍微比較好。樓主可以試一試。tesseract是C++做的,java可以使用JNI調用C語言的。如果樓主不差錢,並且識別效果要求高的話,建議使用第三方的識別軟體。樓主可以和取得聯系。希望幫助到樓主,希望採納,謝謝!
② java身份證號位數校驗
function checkIdcard(num)
{
num = num.toUpperCase();
//身份證號碼為15位或者18位,15位時全為數字,18位前17位為數字,最後一位是校驗位,可能為數字或字元X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)))
{
//alert('輸入的身份證號長度不對,或者號碼不符合規定!\n15位號碼應全為數字,18位號碼末位可以為數字或X。');
return false;
}
//校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。
//下面分別分析出生日期和校驗位
var len, re;
len = num.length;
if (len == 15)
{
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re);
//檢查生日日期是否正確
var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay)
{
//alert('輸入的身份證號里出生日期不對!');
return false;
}
else
{
//將15位身份證轉成18位
//校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
for(i = 0; i < 17; i ++)
{
nTemp += num.substr(i, 1) * arrInt[i];
}
num += arrCh[nTemp % 11];
return true;
}
}
if (len == 18)
{
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re);
//檢查生日日期是否正確
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay)
{
//alert(dtmBirth.getYear());
//alert(arrSplit[2]);
//alert('輸入的身份證號里出生日期不對!');
return false;
}
else
{
//檢驗18位身份證的校驗碼是否正確。
//校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for(i = 0; i < 17; i ++)
{
nTemp += num.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != num.substr(17, 1))
{
//alert('18位身份證的校驗碼不正確!應該為:' + valnum);
return false;
}
return true;
}
}
return false;
}
var result = checkIdcard(sfzh);
if (!result)
{
$.messager.alert('提示信息','身份證號碼格式不正確');
return;
}
③ 如何使用java獲取身份證讀卡器所讀取的身份證信息(使用的是usb借口的新中新身份證讀卡器)
我提出幾點想法,需樓主獲取相關文檔:
1、介面開發需對方(也就是你說的讀卡器)提供相應介面文檔,比如通過什麼方法(程序)來獲得身份證信息。
2、單憑摸索很難實現,涉及到底層數據流等。
④ java編程輸入18位身份證號辦別女性男女 代碼
18為身份證號碼的第17位數字表示性別:奇數表示男性,偶數表示女性
所有代碼中,只要截取出第17位的數字出來就可以判斷性別,如:
String sex;
// 判斷性別
if (Integer.parseInt(CardCode.substring(16).substring(0, 1)) % 2 == 0) {
sex = "女";
} else {
sex = "男";
}
⑤ 用JAVA來判斷你所輸入的18位身份證號碼的性別
其實只要看倒數第二位的數字,是奇數還是偶數。奇數是男,偶數是女。也就是原先15位身份證號的最後一位,性別區分就看這位數。
⑥ 用java程序驗證身份證男女
public static void main(String[] args) {
String id ="510111199212018271";
String birth = id.substring(6, 14);
String sex = id.substring(16, 17);
if(Integer.parseInt(sex)%2==0){
sex = "女";
}else{
sex ="男";
}
System.err.println("生日:"+birth+"性別"+sex);
}
⑦ 用Java 寫程序完成輸入的身份證號碼合法性判斷
我國自1999年實施公民身份號碼制度以來,許多公民身份號碼末位為「X」的公民,由於不明白「X」的含義,要求給予更換,產生了不必要的誤會。目前我國公民身份證號碼由18位數字組成:前6位為地址碼,第7至14位為出生日期碼,第15至17位為順序碼,第18位為校驗碼。檢驗碼分別是「0、1、2、……10」共11個數字,當檢驗碼為「10」時,為了保證公民身份證號碼18位,所以用「X」表示。雖然校驗碼為「X」不能更換,但若需全用數字表示,只需將18位公民身份號碼轉換成15位居民身份證號碼,去掉第7至8位和最後1位3個數碼。
當今的身份證號碼有15位和18位之分。1985年我國實行居民身份證制度,當時簽發的身份證號碼是15位的,1999年簽發的身份證由於年份的擴展(由兩位變為四位)和末尾加了效驗碼,就成了18位。這兩種身份證號碼將在相當長的一段時期內共存。兩種身份證號碼的含義如下:
18位的身份證號碼 如:130429####%%%%0078
1~6位為地區代碼,其中1、2位數為各省級政府的代碼,3、4位數為地、市級政府的代碼,5、6位數為縣、區級政府代碼。如13(河北省)04(邯鄲市)29(永年縣)
7~14位為出生年月日
15~17位為順序號,是縣、區級政府所轄派出所的分配碼,每個派出所分配碼為10個連續號碼,例如「000-009」或「060-069」,其中單數為男性分配碼,雙數為女性分配碼,如遇同年同月同日有兩人以上時順延第二、第三、第四、第五個分配碼。如:007的就是個男生 而且和他同年月日生的男生至少有兩個 他們的後四位是001* 和 003*
18位為效驗位(識別碼),通過復雜公式算出,普遍採用計算機自動生成。是前面17位的一種檢驗代碼,如果你改變了前面某個數字而後面的效驗代碼不響應改變就會被計算軟體判斷為非法身份正號碼。X也是效驗代碼的一中
15位的身份證號碼:
(1)1~6位為地區代碼
(2)7~8位為出生年份(2位),9~10位為出生月份,11~12位為出生日期
(3)第13~15位為順序號,並能夠判斷性別,奇數為男,偶數為女。