Tesseract OCR: Cài đặt và sử dụng trên Ubuntu 16.04

theanh

Administrator
Nhân viên
Tesseract là một trong những công cụ OCR nguồn mở mạnh mẽ nhất hiện nay. OCR là viết tắt của Optical Character Recognition (Nhận dạng ký tự quang học). Đây là quá trình trích xuất văn bản từ hình ảnh. Ví dụ, hãy xem xét hình ảnh sau có một số văn bản cần được trích xuất:



Đầu ra từ công cụ OCR, sau khi một số quá trình xử lý được thực hiện sẽ giống như thế này:
Mã:
Nút Truy cập mở
Đây là cách OCR hoạt động. Nó hữu ích trong nhiều ứng dụng như nhận dạng biển số xe, chuyển đổi các bản sao được quét của tài liệu sang định dạng word, tự động trích xuất thông tin chi tiết từ biên lai, v.v. Nó cũng tạo thành bước đầu tiên trong nhiều tác vụ Xử lý ngôn ngữ tự nhiên. Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt và thiết lập Tesseract, imagemagick nhanh chóng và cách sử dụng chúng để có được kết quả tốt nhất có thể với quá trình xử lý trước hình ảnh.

Xử lý trước hình ảnh là một phần quan trọng khi thực hiện OCR bằng Tesseract. Điều này đảm bảo độ chính xác của văn bản được trích xuất cao và giảm lỗi. Chúng ta sẽ thực hiện một số thao tác cơ bản trên hình ảnh bằng cách sử dụng nó. Imagemagick là một công cụ xử lý hình ảnh dựa trên dòng lệnh, giúp chúng ta thực hiện các thao tác như cắt, thay đổi kích thước, thay đổi bảng màu, v.v.

1 Cài đặt Tesseract​

Cài đặt tesseract khá đơn giản, hãy chạy các lệnh sau:
Mã:
sudo apt update sudo apt install tesseract-ocr
Lệnh này sẽ cài đặt công cụ Tesseract. Hình ảnh bên dưới hiển thị đầu ra khi công cụ được cài đặt đúng cách:



Việc tiếp theo cần làm là cài đặt các gói ngôn ngữ. Tesseract rất mạnh mẽ và có thể trích xuất hơn 100 ngôn ngữ khác nhau, miễn là các gói ngôn ngữ được tải xuống. Bạn có thể tải xuống một gói ngôn ngữ cụ thể bằng cách sử dụng lệnh chung bên dưới:
Mã:
sudo apt-get install tesseract-ocr-[lang]
Trong lệnh trên, hãy thay thế "[lang]" bằng ngôn ngữ bạn muốn tải xuống. Ví dụ cho tiếng Anh và tiếng Pháp như sau:
Mã:
sudo apt-get install tesseract-ocr-eng sudo apt-get install tesseract-ocr-fra
Thông thường, tesseract đi kèm với gói tiếng Anh theo mặc định. Hình ảnh bên dưới cho thấy tiếng Anh đã được cài đặt và tiếng Pháp phải được tải xuống và cài đặt:



Ngoài ra, nếu bạn muốn tải xuống tất cả các gói ngôn ngữ, bạn có thể chạy lệnh sau:
Mã:
sudo apt-get install tesseract-ocr-all
Thao tác này hoàn tất quá trình cài đặt Tesseract.

2 Cài đặt Imagemagick Chạy lệnh sau để cài đặt imagemagick​

Mã:
sudo apt install imagemagick
Công cụ này được sử dụng từ dòng lệnh bằng lệnh convert. Để kiểm tra cài đặt đúng, hãy chạy lệnh sau và đầu ra sẽ tương tự như hình ảnh bên dưới:
Mã:
convert -h

3 Cách sử dụng Tesseract​

Tesseract có khả năng chụp ảnh ở nhiều định dạng khác nhau như jpg, png, tiff, v.v. và trích xuất văn bản từ đó. Phần này tập trung vào việc chạy tesseract và trong phần tiếp theo, chúng ta sẽ xem cách cải thiện độ chính xác. Sau đây là một số lệnh cơ bản để chạy tesseract:

Để có đầu ra trong thiết bị đầu cuối, hãy chạy lệnh chung với đường dẫn của hình ảnh

tesseract [image_path] stdout

Để lưu đầu ra OCR vào một tệp, hãy chạy lệnh chung sau:
Mã:
tesseract [image_path] [file_name]
Theo sau hai hình ảnh, hãy hiển thị hình ảnh được sử dụng và đầu ra của việc chạy các lệnh trên trên hình ảnh đó




Như bạn có thể quan sát, việc chạy lệnh thứ hai đã dẫn đến việc tạo ra một tệp có tên là "outfile.txt" trong đó có thể tìm thấy đầu ra.

4 Xử lý trước hình ảnh​

Từ đầu ra trước đó, bạn có thể đã quan sát thấy rằng có một lỗi trong đầu ra và cũng có lỗi cho biết kích thước pixel nhỏ. Đây là một trong những nhược điểm của Tesseract, nó yêu cầu bạn cung cấp một hình ảnh đã xử lý mà nó có thể thực hiện OCR. Trong phần này, chúng ta sẽ xem xét một số chiến thuật bạn có thể sử dụng với sự trợ giúp của imagemagick để cải thiện chất lượng hình ảnh và do đó tăng độ chính xác của đầu ra.

4.1 thay đổi kích thước​

Thay đổi kích thước là một trong những thủ thuật hữu ích nhất để cải thiện độ chính xác của OCR. Điều này là do hầu hết thời gian, hình ảnh có kích thước phông chữ rất nhỏ mà Tesseract không thể đọc đúng. Bạn có thể thay đổi kích thước hình ảnh bằng cách sử dụng lệnh sau. Phần trăm cho biết giới hạn thay đổi kích thước. Vì chúng ta muốn tăng kích thước, chúng ta cần đưa ra giá trị lớn hơn 100. Ở đây, chúng ta đã đưa ra giá trị là 150% (sử dụng phương pháp thử và sai để xác định % thay đổi kích thước hoàn hảo cho trường hợp sử dụng của bạn).
Mã:
convert -resize 150% [input_file_path] [output_file_path]
trong lệnh trên, hãy thay thế [input_file_path] bằng đường dẫn của hình ảnh cần thay đổi kích thước và [output_file_path] bằng đường dẫn của hình ảnh nơi đầu ra sẽ được lưu trữ. Hình ảnh sau đây là đầu ra khi tôi chạy lệnh: convert -resize 150% image7.png image7_resize.png


4.2 Sử dụng hình ảnh thang độ xám​

Nếu bạn có hình ảnh màu, thì bạn nên chuyển đổi hình ảnh đó sang thang độ xám trước. Có khả năng chỉ cần làm như vậy là đủ để có được độ chính xác OCR mà bạn muốn. Nếu không, để xử lý thêm, bạn có thể sử dụng hình ảnh thang độ xám để nhị phân hóa hình ảnh. Sử dụng lệnh sau để chuyển đổi hình ảnh của bạn sang thang độ xám
Mã:
convert [input_file_path] -type Grayscale [output_file_path]
Hình ảnh sau đây hiển thị đầu ra khi chạy lệnh convert image6_resize.png -type Grayscale image6_gray.png


4.3 Nhị phân hóa hình ảnh​

Nhị phân hóa hoặc ngưỡng liên quan đến việc chuyển đổi hình ảnh thành các giá trị chỉ có đen và trắng. Mỗi pixel trong hình ảnh này chỉ có một trong hai giá trị, đen hoặc trắng. Điều này làm giảm đáng kể độ phức tạp của hình ảnh. Nếu bạn có hình ảnh có nhiễu hoặc hình ảnh có bóng đổ, hoặc nhiều văn bản, bạn có thể sử dụng phương pháp xử lý trước này. Để nhị phân hóa hình ảnh này, trước tiên hãy đảm bảo bạn có một hình ảnh thang độ xám, sau đó sử dụng lệnh sau:
Mã:
convert [input_file_path] -threshold 55% [output_file_path]
Ngưỡng % có thể thay đổi để có được kết quả tốt nhất cho trường hợp sử dụng của bạn. Hình ảnh bên dưới hiển thị một ví dụ. Điều quan trọng cần lưu ý là đối với hình ảnh đang xét, Nhị phân hóa không phải là lựa chọn tốt nhất vì nó làm mất một số dữ liệu.



Cần lưu ý những điểm sau trước khi áp dụng bất kỳ hoặc tất cả các kỹ thuật tiền xử lý được đề cập ở trên:
  • Tùy thuộc vào trường hợp sử dụng, một trong hai hoặc kết hợp các bước tiền xử lý sẽ hữu ích.
  • Khi một bước tiền xử lý dẫn đến giảm độ chính xác, thì nên bỏ qua bước này khỏi các bước tiền xử lý.
  • Tỷ lệ phần trăm khi thay đổi kích thước hoặc ngưỡng thay đổi tùy theo từng hình ảnh, do đó cần áp dụng phương pháp thử và sai để có được giá trị phần trăm tốt nhất có thể nhằm mang lại độ chính xác cao nhất khi chạy Tesseract
Sau khi hoàn tất quá trình tiền xử lý, hãy chạy Tesseract với hình ảnh đã xử lý để kiểm tra độ chính xác. Tesseract rất mạnh mẽ nhưng có một số hạn chế khi nói đến loại hình ảnh được đưa vào làm đầu vào. Hy vọng bạn thấy hướng dẫn này hữu ích.
 
Back
Bên trên