- [C#] Cách Sử Dụng DeviceId trong C# Để Tạo Khóa Cho Ứng Dụng
- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
[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.
[C#] Tách chữ tiếng việt ra khỏi hình ảnh lập trình csharp
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!