C#实现身份证识别功能的图文代码详解
这篇文章主要介绍了C#身份证识别相关技术详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
最近研究C#相关的OCR技术,图像识别一般C和C++这种底层语言做的比较多,C#主要是依托一些封装好的组件进行调用,这里介绍一种身份证识别的方法。
环境搭建
下载地址:EmguCV官网
在File类别下下载这个EXE,进行安装,安装后在目录下能找相应组件,还有些应用的案例。
dll文件夹中的dll引用到C#项目中,x64,x86,tessdata对应OCR识别的类库和语言库,我tessdata中已添加中文语言包,将这三个文件夹放入程序执行文件夹中。
Demo
自己做的小Demo如图:身份证图片是百度上下载的
不得不说这个类库唯一弊端就是文字识别率太低,图像识别效果也不太好
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Emgu.CV; using Emgu.CV.OCR; using Emgu.CV.Structure; using System.IO; namespace EmguCV { public partial class Form1 : Form { Image<Gray, Byte> imageThreshold; public Form1() { InitializeComponent(); pictureBox1.Enabled = false; } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { //第一个参数是语言包文件夹的地址,不写默认在执行文件夹下 Tesseract _ocr = new Tesseract(@"", "chi_sim", OcrEngineMode.TesseractOnly); _ocr.SetImage(imageThreshold); _ocr.Recognize(); String text = _ocr.GetUTF8Text(); this.textBox1.Text = text; } private void pictureBox2_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; } private void pictureBox1_Click(object sender, EventArgs e) { } } }
Atas ialah kandungan terperinci C#实现身份证识别功能的图文代码详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Kad pengenalan hanya boleh membuka satu kedai Taobao. Penjual harus mematuhi peraturan platform Taobao dan tidak cuba menggunakan kad pengenalan orang lain untuk membuka berbilang kedai. Penjual boleh mengembangkan perniagaan mereka dan meningkatkan jualan dengan menggabungkan kedai dan membuka cawangan. Walau bagaimanapun, perlu diingatkan bahawa setiap cawangan perlu menggunakan kad ID bebas untuk pengesahan nama sebenar.

Sama ada anda seorang pemula atau profesional yang berpengalaman, menguasai C# akan membuka jalan untuk kerjaya anda.

Perkembangan teknologi kecerdasan buatan (AI) sedang giat dijalankan hari ini, dan ia telah menunjukkan potensi dan pengaruh yang besar dalam pelbagai bidang. Hari ini Dayao akan berkongsi dengan anda 4 rangka kerja projek berkaitan LLM model AI sumber terbuka .NET, dengan harapan dapat memberi anda sedikit rujukan. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel ialah kit pembangunan perisian sumber terbuka (SDK) yang direka untuk menyepadukan model bahasa besar (LLM) seperti OpenAI, Azure

Telefon bimbit dan kad ID tidak akan dinyahmagnetkan bersama-sama. Sebabnya ialah: 1. Terdapat gegelung dan cip yang terintegrasi di dalam kad ID Tidak seperti pita tradisional, cakera keras dan media storan lain, tiada bahan bermagnet telefon mudah alih adalah tinggi. Gelombang elektromagnet frekuensi, dengan frekuensi setinggi ratusan ribu hingga puluhan juta Hertz, tidak mempunyai keupayaan untuk memagnetkan kad ID. Magnet dalam pembesar suara telefon bimbit tidak akan mempunyai kesan penyahmagnetan pada kad ID. Kami boleh meletakkan kad ID dan telefon mudah alih bersama-sama dengan selamat, dan memberi perhatian untuk mengelakkan kerosakan pada kad ID dan melindungi penggunaan biasa supaya ia dapat memberi manfaat kepada kami dengan lebih baik.

Jika anda seorang pembangun .NET, anda mesti sedar tentang kepentingan mengoptimumkan fungsi dan prestasi dalam menyampaikan perisian berkualiti tinggi. Dengan menggunakan pakar sumber yang disediakan dan mengurangkan masa memuatkan tapak web, anda bukan sahaja mencipta pengalaman yang menyenangkan untuk pengguna anda tetapi juga mengurangkan kos infrastruktur.

Dari segi pemprosesan permintaan selaras tinggi, .NETASP.NETCoreWebAPI berprestasi lebih baik daripada JavaSpringMVC Sebabnya termasuk: Kompilasi awal AOT, yang mengurangkan masa permulaan pengurusan memori, di mana pembangun bertanggungjawab untuk memperuntukkan dan melepaskan memori objek.

NFC boleh mengenali kad ID seawal tahun 2015, China Mobile mengumumkan bahawa jenamanya sendiri N1 telah membuka fungsi NFC untuk mengenali kad ID Melalui APP khas, anda boleh menggunakan telefon bimbit anda untuk membaca maklumat kad ID untuk nama sebenar pengesahan; apabila telefon mudah alih menjadi popular untuk pengecaman identiti Ia mempunyai fungsi kad ID atau kad ID, dan menggunakan kata laluan digital atau kata laluan cap jari untuk meningkatkan keselamatan dan anti-pemalsuan penggunaannya pada tahap tertentu.

Teknik untuk mengekstrak maklumat kad pengenalan menggunakan ungkapan biasa PHP Dalam pembangunan sebenar, keperluan untuk mengekstrak maklumat kad pengenalan sering digunakan. Nombor ID ialah rentetan yang mengandungi banyak maklumat, termasuk wilayah, hari lahir, jantina dan maklumat lain. Dalam PHP, kami boleh mengekstrak maklumat kad ID melalui ungkapan biasa Perkara berikut akan memperkenalkan teknik khusus dan memberikan contoh kod untuk membantu anda memahami dengan lebih baik. Mengekstrak maklumat serantau daripada nombor kad ID 6 digit pertama nombor kad ID mewakili maklumat serantau Kami boleh mengekstrak bahagian maklumat ini melalui ungkapan biasa. oleh
