Blog Single

Tìm Hiểu Về OCR: Hướng Dẫn Xây Dựng Chức Năng Extract Text Từ Hình Ảnh Sử Dụng PHP

Việc chuyển đổi thông tin từ dạng hình ảnh (chữ viết tay, tài liệu scan, hóa đơn) sang dạng văn bản kỹ thuật số đang ngày càng trở nên thiết yếu. Để giải quyết bài toán này, công nghệ Nhận dạng ký tự quang học (OCR – Optical Character Recognition) ra đời như một vị cứu tinh.

Trong bài viết này, Techblog.vn sẽ cùng bạn tìm hiểu về OCR và thực hành từng bước xây dựng chức năng extract text từ hình ảnh sử dụng PHP một cách nhanh chóng và hiệu quả nhất.

1. Công nghệ nhận dạng ký tự quang học (OCR) là gì?

OCR (Optical Character Recognition) là công nghệ cho phép máy tính nhận dạng và chuyển đổi các ký tự văn bản nằm trong hình ảnh (như ảnh chụp tài liệu, file PDF được scan, biển số xe…) thành văn bản dạng text (máy tính có thể đọc, tìm kiếm và chỉnh sửa được).

Ứng dụng thực tế của OCR:

  • Số hóa tài liệu giấy tờ, hợp đồng, hóa đơn.

  • Nhận dạng Căn cước công dân (CCCD/CMND), Hộ chiếu để eKYC.

  • Trích xuất dữ liệu tự động cho các hệ thống quản lý.

2. Công cụ sử dụng: Tesseract OCR và PHP

Để xây dựng chức năng OCR bằng PHP, chúng ta sẽ sử dụng Tesseract OCR – một trong những engine nhận dạng chữ quang học mã nguồn mở mạnh mẽ nhất hiện nay do Google phát triển và bảo trợ. Để kết nối Tesseract với PHP, chúng ta dùng package thiagoalessio/tesseract_ocr.

3. Hướng dẫn xây dựng chức năng Extract Text từ hình ảnh bằng PHP

Bước 1: Cài đặt Tesseract OCR trên máy chủ (Server/Local)

Trước khi code PHP, máy tính hoặc server của bạn phải được cài đặt core của Tesseract.

  • Trên Ubuntu/Debian:

    Bash

    sudo apt-get update
    sudo apt-get install tesseract-ocr
    sudo apt-get install tesseract-ocr-vie # Cài đặt thêm gói ngôn ngữ Tiếng Việt
    
  • Trên Windows: Bạn tải file cài đặt Tesseract tại GitHub, cài đặt và nhớ thêm đường dẫn thư mục Tesseract vào biến môi trường Path của Windows. Đừng quên tick chọn gói ngôn ngữ Tiếng Việt (Vietnamese) trong quá trình cài đặt.

Bước 2: Cài đặt thư viện Tesseract OCR cho PHP

Bạn mở terminal tại thư mục project PHP của mình và chạy lệnh Composer sau để tải thư viện về:

Bash

composer require thiagoalessio/tesseract_ocr

Bước 3: Viết code PHP để trích xuất văn bản (Extract Text)

Tạo một file PHP (ví dụ: ocr_process.php) và dán đoạn code dưới đây vào. Giả sử bạn có một bức ảnh tên là document.png chứa đoạn văn bản cần nhận dạng.

PHP

<?php
// Require file autoload của Composer
require 'vendor/autoload.php';

use thiagoalessio\TesseractOCR\TesseractOCR;

// Đường dẫn tới file ảnh cần trích xuất chữ
$imagePath = 'document.png';

try {
    // Khởi tạo đối tượng TesseractOCR và thực hiện đọc ảnh
    $text = (new TesseractOCR($imagePath))
        ->lang('vie', 'eng') // Khai báo ngôn ngữ cần nhận dạng (Tiếng Việt & Tiếng Anh)
        ->run();

    echo "<h3>Kết quả trích xuất văn bản:</h3>";
    echo "<pre>" . htmlspecialchars($text) . "</pre>";

} catch (Exception $e) {
    echo "<h3>Đã xảy ra lỗi:</h3>";
    echo "<p>" . $e->getMessage() . "</p>";
}
?>

Giải thích mã nguồn:

  • lang('vie', 'eng'): Khai báo cho Tesseract biết hình ảnh có thể chứa tiếng Việt hoặc tiếng Anh để tăng độ chính xác.

  • run(): Lệnh thực thi quá trình phân tích hình ảnh và trả về chuỗi văn bản (string).

4. Mẹo tối ưu hóa hình ảnh để tăng độ chính xác cho OCR

Tesseract hoạt động cực kỳ tốt, nhưng kết quả phụ thuộc rất nhiều vào chất lượng ảnh đầu vào. Để project của bạn trên thực tế chạy mượt mà, Techblog.vn khuyên bạn nên xử lý ảnh (Image Preprocessing) trước khi đưa vào hàm OCR:

  1. Chuyển ảnh sang trắng đen (Grayscale): Loại bỏ nhiễu màu sắc.

  2. Tăng độ tương phản (Contrast): Làm chữ nổi bật hơn so với nền.

  3. Cắt ảnh (Cropping): Chỉ giữ lại khu vực chứa đoạn text cần lấy để Tesseract không bị phân tâm bởi các chi tiết thừa.

  4. Giảm nhiễu (Binarization): Làm sạch các chấm nhiễu trên tài liệu cũ. Bạn có thể kết hợp thư viện Imagick của PHP để thực hiện các bước xử lý ảnh này.

Kết luận

Chỉ với vài dòng code đơn giản, bạn đã có thể tự tay xây dựng một chức năng extract text từ hình ảnh sử dụng PHP vô cùng mạnh mẽ nhờ vào engine Tesseract.

Hy vọng bài viết này của Techblog.vn đã mang đến cho bạn những kiến thức lập trình hữu ích. Chúc bạn áp dụng thành công vào các dự án số hóa và xử lý dữ liệu sắp tới!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *