- [VB.NET] Chia sẻ source code lịch âm dương và hẹn lịch nhắc việc
- [C#] Hướng dẫn đọc thông số thiết bị Thiết bị kiểm tra Pin (HIOKI BATTERY HiTESTER BT3562)
- [VB.NET] Hướng dẫn giải captcha sử dụng dịch vụ AZCaptcha API trên winform
- [C#] Hướng dẫn chứng thực đăng nhập ứng dụng bằng vân tay (Finger Print) trên máy tính
- [C#] Color Thief cách xuất màu sắc thiết kế từ hình ảnh
- [C#] Cách tạo bản quyền và cho phép dùng thử ứng dụng Winform
- [C#] Hướng dẫn sử dụng trình duyệt web Chrome convert HTML sang tập tin file PDF
- [C#] Kết nôi điện thoại Android, IOS với App Winform via Bluetooth
- [DATABASE] Cách query cộng trừ dồn dần trong Sqlserver
- [C#] Thiết kế ứng dụng Console đẹp với thư viện Spectre.Console
- [C#] Thiết kế ứng dụng Single Instance và đưa ứng dụng lên trước nếu kiểm tra ứng dụng đang chạy
- [C#] Giới thiệu JSON Web Token và cách đọc chuỗi token
- [C#] Cách tăng giảm font chữ tất cả các control trên winform
- [DEVEXPRESS] Tích hợp chức năng Tìm kiếm Search vào CheckedComboboxEdit
- [C#] Gởi email Metting Calendar Reminder kèm nhắc thời gian lịch họp
- [C#] Tìm kiếm xem danh sách từ khóa có tồn tại trong đoạn văn bản hay không
- [C#] Thiết kế giao diện ứng dụng trên Console sử dụng thư viện Terminal.Gui
- [C#] Hướng dẫn tạo mã VietQR Payment API Winform
- [C#] Sử dụng thư viện BenchmarkDotNet đo hiệu năng của hảm Method
- [DEVEXPRESS] Tìm kiếm không dấu tô màu highlight có dấu trên C# 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!