C\#기술 을 바탕 으로 신분증 식별 기능 실현
1.대기업 API 인터페이스,바 이 두,클 라 우 드 맥 을 호출 하고 문 통 과학기술 은 모두 관련 API 소 개 를 합 니 다.
2.이미지 처리 라 이브 러 리 를 호출 합 니 다.EmguCV 는 OpenCV 의 크로스 플랫폼 입 니 다.Net 패키지 입 니 다.이 패 키 지 는 모 노 플랫폼 으로 컴 파일 되 고 Windows,Mac OS,Android,iPhone,iPad 등 여러 플랫폼 에서 실 행 될 수 있 습 니 다.
3.Office 2007 구성 요소 호출
1.증명 식별 API 인터페이스
취 합 된 데이터 중의 API 인 터 페 이 스 를 예 로 들 면 공식 API 가 C\#호출 방식 을 제공 하지 않 았 기 때문에 인터넷 주 소 는 다음 과 같다.증명 식별 인터페이스
/// <summary>
///
/// </summary>
/// <returns></returns>
public static string CardUpload()
{
try
{
string appkey = " key"; // appkey
HttpPostedFile file = HttpContext.Current.Request.Files[0];
string url = "http://api2.juheapi.com/cardrecon/upload";
var parameters = new Dictionary<string, string>();
parameters.Add("key", appkey);
parameters.Add("cardType", "2");
string result = HttpPostData(url, 60000, "pic", file.InputStream, parameters);
JObject info = JObject.Parse(JObject.Parse(result)["result"].ToString());
var cardInfo = new
{
name = info[" "],
card = info[" "]
};
return cardInfo.ToJson();
}
catch (Exception ex)
{
return ex.ToString();
}
}
/// <summary>
/// Post API
/// </summary>
/// <param name="url">api </param>
/// <param name="timeOut"> </param>
/// <param name="fileKeyName"> </param>
/// <param name="file"> </param>
/// <param name="stringDict"> </param>
/// <returns> </returns>
private static string HttpPostData(string url, int timeOut, string fileKeyName,
Stream file, Dictionary<string, string> stringDict)
{
string responseContent;
var memStream = new MemoryStream();
var webRequest = (HttpWebRequest)WebRequest.Create(url);
//
var boundary = "---------------" + DateTime.Now.Ticks.ToString("x");
//
var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r
");
//
var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r
");
//
webRequest.Method = "POST";
webRequest.Timeout = timeOut;
webRequest.ContentType = "multipart/form-data; boundary=" + boundary;
//
memStream.Write(beginBoundary, 0, beginBoundary.Length);
//
const string filePartHeader =
"Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r
" +
"Content-Type: application/octet-stream\r
\r
";
var header = string.Format(filePartHeader, fileKeyName, "card.jpg");
var headerbytes = Encoding.UTF8.GetBytes(header);
memStream.Write(headerbytes, 0, headerbytes.Length);
file.CopyTo(memStream);
// Key
var stringKeyHeader = "\r
--" + boundary +
"\r
Content-Disposition: form-data; name=\"{0}\"" +
"\r
\r
{1}\r
";
foreach (byte[] formitembytes in from string key in stringDict.Keys
select string.Format(stringKeyHeader, key, stringDict[key])
into formitem
select Encoding.UTF8.GetBytes(formitem))
{
memStream.Write(formitembytes, 0, formitembytes.Length);
}
//
memStream.Write(endBoundary, 0, endBoundary.Length);
webRequest.ContentLength = memStream.Length;
// , POST
var requestStream = webRequest.GetRequestStream();
memStream.Position = 0;
var tempBuffer = new byte[memStream.Length];
memStream.Read(tempBuffer, 0, tempBuffer.Length);
memStream.Close();
requestStream.Write(tempBuffer, 0, tempBuffer.Length);
requestStream.Close();
var httpWebResponse = (HttpWebResponse)webRequest.GetResponse();
using (var httpStreamReader = new StreamReader(httpWebResponse.GetResponseStream(),
Encoding.GetEncoding("utf-8")))
{
responseContent = httpStreamReader.ReadToEnd();
}
httpWebResponse.Close();
webRequest.Abort();
return responseContent;
}
2.EmguCV 라 이브 러 리 호출환경 구축
다운로드 주소:EmguCV 홈 페이지
File 클래스 에서 이 EXE 를 다운로드 하여 설치 하고 설치 한 후 디 렉 터 리 에서 해당 구성 요 소 를 찾 을 수 있 으 며 응용 사례 도 있 습 니 다.
C\#식별 을 하려 면 이미지 이치 화 처리 와 OCR 호출 관련 DLL 을 해 야 합 니 다.제 가 정리 할 수 있 는 주소 다운로드:360 클 라 우 드 디스크 추출 코드:89f 4
dll 폴 더 의 dll 은 C\#항목 에 인용 되 었 습 니 다.x64,x86,tessdata 는 OCR 인식 에 대응 하 는 라 이브 러 리 와 언어 라 이브 러 리 입 니 다.제 tessdata 에는 중국어 패 키 지 를 추가 하여 이 세 개의 폴 더 를 프로그램 실행 폴 더 에 넣 었 습 니 다.
Demo
자신 이 만 든 작은 데모 그림:신분증 사진 은 바 이 두 에서 다운로드 한 것 이다.
관련 코드 는 다음 과 같 습 니 다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.OCR;
using Emgu.CV.Structure;
using System.IO;
namespace ImageManage
{
public partial class Form1 : Form
{
Image<Gray, Byte> imageThreshold;
public Form1()
{
InitializeComponent();
}
private void btn_convert_Click(object sender, EventArgs e)
{
// ,
Tesseract _ocr = new Tesseract("", "chi_sim", OcrEngineMode.TesseractOnly);
_ocr.Recognize(imageThreshold);
String text = _ocr.GetText();
this.textBox1.Text = text;
}
private void pictureBox1_Click(object sender, EventArgs e)
{
OpenFileDialog of = new OpenFileDialog();
of.Title = " ";
if (of.ShowDialog() == DialogResult.OK)
{
string file = of.FileName;
Image img = Image.FromFile(file);
pictureBox1.Image = img;
}
Bitmap bitmap = (Bitmap)this.pictureBox1.Image;
Image<Bgr, Byte> imageSource = new Image<Bgr, byte>(bitmap);
Image<Gray, Byte> imageGrayscale = imageSource.Convert<Gray, Byte>();
imageGrayscale = randon(imageGrayscale);
imageThreshold = imageGrayscale.ThresholdBinary(new Gray(100), new Gray(255));
this.pictureBox2.Image = imageThreshold.ToBitmap();
}
/// <summary>
///
/// </summary>
/// <param name="imageInput"></param>
/// <returns></returns>
private Image<Gray, Byte> randon(Image<Gray, Byte> imageInput)//
{
int nwidth = imageInput.Width;
int nheight = imageInput.Height;
int sum;
int SumOfCha;
int SumOfChatemp = 0;
int[] sumhang = new int[nheight];
Image<Gray, Byte> resultImage = imageInput;
Image<Gray, Byte> ImrotaImage;
//20
for (int ang = -20; ang < 20; ang = ang + 1)
{
ImrotaImage = imageInput.Rotate(ang, new Gray(1));
for (int i = 0; i < nheight; i++)
{
sum = 0;
for (int j = 0; j < nwidth; j++)
{
sum += ImrotaImage.Data[i, j, 0];
}
sumhang[i] = sum;
}
SumOfCha = 0;
for (int k = 0; k < nheight - 1; k++)
{
SumOfCha = SumOfCha + (Math.Abs(sumhang[k] - sumhang[k + 1]));
}
if (SumOfCha > SumOfChatemp)
{
resultImage = ImrotaImage;
SumOfChatemp = SumOfCha;
}
}
return resultImage;
}
}
}
3.Office 2007 구성 요소이 구성 요 소 는 무료 이 며 식별 도가 비교적 높다.
환경 구축
Office 2007 구성 요소 MODI,Ofiice 2007 을 설치 해 야 하 며 호환성 때문에 패 치 를 설치 해 야 합 니 다.SP1 또는 SP2 가 모두 가능 합 니 다.패 치 다운로드 주 소 는 다음 과 같 습 니 다.
SP1 다운로드 주소 SP2 다운로드 주소
설치 후 제어 판-->마 운 트 해제 또는 업데이트 프로그램-->Office 2007-->변경 사항 선택-->추가 또는 복구 기능 선택-->아래 인터페이스 팝 업 을 선택 하여 해당 구성 요 소 를 실행 합 니 다.
Office 도구-->Microsoft Office Document Imaging 에서 도 구 를 실행 합 니 다.
C\#항목 에서 Com 구성 요 소 를 참조 하면 됩 니 다.
Office 구성 요소 응용 프로그램 이 로 컬 프로그램 이 아니 라 IIS 에 배치 되 어야 한다 면 응용 프로그램의 풀 권한 을 다음 그림 과 같이 설정 해 야 합 니 다.응용 프로그램 풀->고급 설정->표지
Demo
StringBuilder sb = new StringBuilder();
MODI.Document doc = new MODI.Document();
doc.Create(fullFileName);
MODI.Image image;
MODI.Layout layout;
doc.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_SIMPLIFIED, true, true); //
for (int i = 0; i < doc.Images.Count; i++)
{
image = (MODI.Image)doc.Images[i];
layout = image.Layout;
sb.Append(layout.Text);
}
이상 의 C\#신분증 식별 방법 은 자신의 프로젝트 의 다양한 수요 에 따라 선택 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.