[C#] Hướng dẫn tách chữ tiếng việt ra khỏi hình ảnh (TESSERACT OCR )
Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách tách chữ từ hình ảnh trong lập trình c# sử dụng thư viện TESSERACT OCR. OCR viết tắt của từ Optical Character Recognition tạm dịch là nhận dạng kí tự quang học, nói dễ hiểu thì ...
Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách tách chữ từ hình ảnh trong lập trình c# sử dụng thư viện TESSERACT OCR.
OCR viết tắt của từ Optical Character Recognition tạm dịch là nhận dạng kí tự quang học, nói dễ hiểu thì đây là kỹ thuật giúp nhận dạng các ký tự trên một bức ảnh.
Ứng dụng OCR:
Chắc hẳn các bạn đã một lần sử dụng đến công nghệ nhưng không để ý, vì chúng ta chỉ sử dụng nó một cách gián tiếp đó là máy Scanner. OCR được ứng dụng như một phần mềm được tích hợp trên máy tính hoặc trực tiếp vào một phần cứng nào đó.
Hạn chế của OCR:
Bên cạnh đó thì OCR cũng còn khá nhiều những hạn chế như:
- Hầu hết các phần mềm sử dụng OCR chỉ nhận dạng được khoảng 80 - 90% trên hình ảnh rõ nét.
- Đối với những hình ảnh có màu nền mà màu chữ không có nhiều chênh lệch, hay các hình chụp chữ viết tay thì kết quả nhận dạng không khả quan cho lắm
- Đến thời điểm hiện tại thì OCR chưa support tất cả các ngôn ngữ.
Dưới đây là giao diện demo của ứng dụng Tách chữ ra khỏi hình ảnh C#:
Đầu tiên, các bạn cần cài đặt thư viện Tesseract từ Nuget và project của mình, như hình ảnh dưới đây.
Sau khi cài đặt xong thư viện, các bạn vào trang web sau để tải thư viện Tesseract cho ngôn ngữ của mình cần thực hiện.
Ví dụ: trong bài viết này mình ocr ngôn ngữ việt nam, nên mình sẽ download bản vie.traineddata về project của mình.
https://github.com/tesseract-ocr/tesseract/wiki/Data-Files
Sau khi tải file vie.traineddata về xong, các bạn tạo cho mình thư mục với tên tessdata và copy file vào trong thư mục này.
Sau đó, mình sẽ paste vào thư mục gốc của project và set thuộc tính là copy always khi chạy ứng dụng, như hình bên dưới.
và tiếp đến là set copy always.
Video demo ứng dụng OCR (tách chữ ra khỏi hình ảnh lập trình C#)
Full source code tách chữ ra khỏi hình ảnh OCR TESSERACT C#:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Tesseract; namespace OCR_Vietnamese { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (openFileDialog.ShowDialog() == DialogResult.OK) { pictureBox1.LoadAsync(openFileDialog.FileName); } } private string OCR(Bitmap b) { string res = ""; using (var engine = new TesseractEngine(@"tessdata", "vie", EngineMode.Default)) { using (var page = engine.Process(b, PageSegMode.AutoOnly)) res = page.GetText(); } return res; } private void button2_Click(object sender, EventArgs e) { string result = ""; Task.Factory.StartNew(() => { picloading.BeginInvoke(new Action(() => { picloading.Visible = true; })); result = OCR((Bitmap)pictureBox1.Image); richTextBox1.BeginInvoke(new Action(() => { richTextBox1.Text = result; })); picloading.BeginInvoke(new Action(() => { picloading.Visible = false; })); }); } } }
Thanks for watching!
DOWNLOAD SOURCE