- [DEVEXPRESS] Chia sẻ source code cách tạo biểu đồ sơ đồ tổ chức công ty Org Chart trên Winform C#
- [C#] Hướng dẫn tạo Auto Number trên Datagridview winform
- [DATABASE] Hướng dẫn tạo Procedure String Split in Mysql
- [C#] Thiết lập dấu (,) hay dấu (.) ở định dạng số đúng với định dạng số Việt Nam
- [C#] Chia sẻ source code Game Spin Lucky Wheel
- [C#] Hướng dẫn Encode and Decode HTML
- Danh sách tài khoản ChatGPT miễn phí - Hướng dẫn tạo tài khoản Chat Open AI GPT tại Việt Nam
- [C#] Hướng dẫn thay đổi giao diện ứng dụng Winform theo giao diện của Windows
- [VB.NET] Hiệu ứng Acrylic, Mica, Tabbed Blur Effect trên Winform
- [DEVEXPRESS] Hướng dẫn sử dụng HTML Template trên Combobox Edit
- [C#] Chia sẻ source code Orange Rain in Winform
- [DEVEXPRESS] Hướng dẫn sử dụng HTML Template trên XtraMessageBox Winform Devexpress 22.2.3
- [DEVEXPRESS] Hướng dẫn sử dụng HTML and CSS Code Viewer trên Winform
- [C#] Number Effect Counter up and down in winform
- [C#] Hướng dẫn Supend and Resume Process ID in Winform
- [C#] Hiển thị line number trên Richtextbox Winform
- [C#] Fake Blue Screen BSOD in winform
- [C#] Chia sẽ code demo sử dụng Async Parallel Foreach and For in Winform
- [C#] Sử dụng ActionBlock run X task at time winform
- [C#] Hướng dẫn sử dụng Property Grid để lưu và tải lại thông tin cấu hình user trên 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!