Bạn có thể trích xuất văn bản từ hình ảnh trên dòng lệnh Linux bằng cách sử dụng công cụ Tesseract OCR. Nó nhanh chóng, chính xác và hoạt động với khoảng 100 ngôn ngữ. Đây là cách sử dụng nó.
Nhận dạng ký tự quang học
Nhận dạng ký tự quang học (OCR) là khả năng nhìn và tìm các từ trong hình ảnh, sau đó trích xuất chúng dưới dạng văn bản có thể chỉnh sửa. Công việc đơn giản này đối với con người nhưng máy tính lại rất khó làm được. Ít nhất phải nói những nỗ lực ban đầu đều không thành công. Máy tính thường bị nhầm lẫn nếu kiểu chữ hoặc kích thước không theo ý thích của phần mềm OCR.
Tuy nhiên, những người tiên phong trong lĩnh vực này vẫn được đánh giá cao. Nếu bạn bị mất bản sao điện tử của tài liệu nhưng vẫn còn phiên bản in, OCR có thể tạo lại phiên bản điện tử có thể chỉnh sửa. Ngay cả khi kết quả không chính xác 100%, đây vẫn là một công cụ tiết kiệm thời gian tuyệt vời.
Với một số thủ công thu dọn thủ công, bạn sẽ có lại tài liệu của mình. Mọi người đã tha thứ cho những sai lầm mà nó gây ra bởi vì họ hiểu sự phức tạp của nhiệm vụ phải đối mặt với một gói OCR. Thêm vào đó, nó tốt hơn là gõ lại toàn bộ tài liệu.
Mọi thứ đã được cải thiện đáng kể kể từ đó. Ứng dụng Tesseract OCR, được viết bởi Hewlett Packard, bắt đầu vào những năm 1980 như một ứng dụng thương mại. Nó có nguồn mở vào năm 2005 và hiện được hỗ trợ bởi Google. Nó có khả năng đa ngôn ngữ, được coi là một trong những hệ thống OCR chính xác nhất hiện có và bạn có thể sử dụng miễn phí.
Cài đặt Tesseract OCR
Để cài đặt Tesseract OCR trên Ubuntu, hãy sử dụng lệnh sau:
sudo apt-get install tesseract-ocr
Trên Fedora, lệnh là:
sudo dnf install tesseract
Trên Manjaro, bạn cần nhập:
sudo pacman -Syu tesseract
Sử dụng Tesseract OCR
Chúng tôi sẽ đặt ra một loạt thách thức đối với Tesseract OCR. Hình ảnh đầu tiên của chúng tôi có chứa văn bản là một đoạn trích từ Recital 63 của Quy định chung về bảo vệ dữ liệu. Hãy xem liệu OCR có thể đọc được điều này không (và luôn tỉnh táo).
Đó là một hình ảnh phức tạp vì mỗi câu bắt đầu bằng một số ghi trên mờ nhạt, điều này thường thấy trong các văn bản lập pháp.
Chúng ta cần cung cấp cho tesseract
lệnh một số thông tin, bao gồm:
- Tên của tệp hình ảnh mà chúng tôi muốn nó xử lý.
- Tên của tệp văn bản mà nó sẽ tạo để chứa văn bản được trích xuất. Chúng tôi không phải cung cấp phần mở rộng tệp (nó sẽ luôn là .txt). Nếu một tệp đã tồn tại với cùng tên, tệp đó sẽ bị ghi đè.
-
Chúng ta có thể sử dụng
--dpi
tùy chọn để nóitesseract
độ phân giải số chấm trên inch (dpi) của hình ảnh là bao nhiêu. Nếu chúng tôi không cung cấp giá trị dpi,tesseract
sẽ cố gắng tìm ra nó.
Tệp hình ảnh của chúng tôi được đặt tên là “recital-63.png” và độ phân giải của nó là 150 dpi. Chúng tôi sẽ tạo một tệp văn bản từ nó có tên là “recital.txt”.
Lệnh của chúng tôi trông giống như sau:
tesseract recital-63.png recital --dpi 150
Kết quả là rất tốt. Vấn đề duy nhất là các ký tự trên — chúng quá mờ để có thể đọc chính xác. Một hình ảnh chất lượng tốt là rất quan trọng để có được kết quả tốt.
tesseract
đã giải thích các số chỉ trên dưới dạng dấu ngoặc kép (“) và ký hiệu độ (°), nhưng văn bản thực tế đã được trích xuất một cách hoàn hảo (phía bên phải của hình ảnh phải được cắt để phù hợp với đây).
Ký tự cuối cùng là một byte có giá trị thập lục phân là 0x0C, là một ký tự xuống dòng.
Dưới đây là một hình ảnh khác với văn bản ở các kích cỡ khác nhau, cả in đậm và in nghiêng.
Tên của tệp này là “bold-italic.png.” Chúng tôi muốn tạo một tệp văn bản có tên “bold.txt”, vì vậy lệnh của chúng tôi là:
tesseract bold-italic.png bold --dpi 150
Điều này không gây ra bất kỳ vấn đề nào và văn bản được trích xuất một cách hoàn hảo.
Sử dụng các ngôn ngữ khác nhau
Tesseract OCR hỗ trợ khoảng 100 ngôn ngữ. Để sử dụng một ngôn ngữ, trước tiên bạn phải cài đặt nó. Khi bạn tìm thấy ngôn ngữ bạn muốn sử dụng trong danh sách, hãy ghi lại tên viết tắt của nó. Chúng tôi sẽ cài đặt hỗ trợ cho tiếng Wales. Tên viết tắt của nó là “cym”, viết tắt của “Cymru”, có nghĩa là tiếng Wales.
Gói cài đặt được gọi là “tesseract-ocr-” với tên viết tắt của ngôn ngữ được gắn thẻ ở cuối. Để cài đặt tệp ngôn ngữ xứ Wales trong Ubuntu, chúng tôi sẽ sử dụng:
sudo apt-get install tesseract-ocr-cym
Hình ảnh với dòng chữ ở bên dưới. Đó là câu đầu tiên của bài quốc ca xứ Wales.
Hãy xem liệu Tesseract OCR có vượt qua được thử thách hay không. Chúng tôi sẽ sử dụng -l
(ngôn ngữ) tùy chọn để cho phép tesseract
biết ngôn ngữ mà chúng tôi muốn làm việc:
tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150
tesseract
đối phó hoàn hảo, như được hiển thị trong văn bản trích xuất bên dưới. Da iawn, Khối lập phương OCR.
Nếu tài liệu của bạn chứa hai hoặc nhiều ngôn ngữ (chẳng hạn như từ điển tiếng Wales sang tiếng Anh), bạn có thể sử dụng dấu cộng (+
) nói tesseract
để thêm một ngôn ngữ khác, như sau:
tesseract image.png textfile -l eng+cym+fra
Sử dụng Tesseract OCR với PDF
Các tesseract
lệnh được thiết kế để hoạt động với các tệp hình ảnh, nhưng nó không thể đọc các tệp PDF. Tuy nhiên, nếu bạn cần trích xuất văn bản từ PDF, trước tiên bạn có thể sử dụng một tiện ích khác để tạo một tập hợp hình ảnh. Một hình ảnh sẽ đại diện cho một trang duy nhất của PDF.
Các pdftppm
tiện ích bạn cần đã được cài đặt trên máy tính Linux của bạn. Bản PDF mà chúng tôi sẽ sử dụng cho ví dụ của mình là bản sao của bài báo chuyên sâu về trí tuệ nhân tạo của Alan Turing, “Máy tính và trí thông minh”.
Chúng tôi sử dụng -png
để chỉ định rằng chúng tôi muốn tạo tệp PNG. Tên tệp PDF của chúng tôi là “turing.pdf.” Chúng tôi sẽ gọi các tệp hình ảnh của mình là “turing-01.png”, “turing-02.png”, v.v.
pdftoppm -png turing.pdf turing
Chạy tesseract
trên mỗi tệp hình ảnh bằng một lệnh duy nhất, chúng ta cần sử dụng vòng lặp for. Đối với mỗi “turing-nn.png, ”tệp chúng tôi chạy tesseract
và tạo một tệp văn bản có tên “text-” cộng với “turing-nn”Như một phần của tên tệp hình ảnh:
for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;
Để kết hợp tất cả các tệp văn bản thành một, chúng ta có thể sử dụng cat
:
cat text-turing* > complete.txt
Vì vậy, nó đã làm như thế nào? Rất tốt, như bạn có thể thấy bên dưới. Tuy nhiên, trang đầu tiên trông khá khó khăn. Nó có các kiểu và kích thước văn bản và trang trí khác nhau. Ngoài ra còn có một “hình mờ” dọc ở mép bên phải của trang.
Tuy nhiên, sản lượng gần với bản gốc. Rõ ràng, định dạng đã bị mất, nhưng văn bản là chính xác.
Hình mờ dọc được phiên âm thành một dòng chữ vô nghĩa ở cuối trang. Văn bản quá nhỏ để có thể đọc được tesseract
chính xác, nhưng sẽ đủ dễ dàng để tìm và xóa nó. Kết quả tồi tệ nhất sẽ là các ký tự lạc ở cuối mỗi dòng.
Thật kỳ lạ, các chữ cái đơn lẻ ở đầu danh sách các câu hỏi và câu trả lời ở trang hai đã bị bỏ qua. Phần từ PDF được hiển thị bên dưới.
Như bạn có thể thấy bên dưới, các câu hỏi vẫn còn, nhưng “Q” và “A” ở đầu mỗi dòng đã bị mất.
Sơ đồ cũng sẽ không được phiên âm chính xác. Hãy xem điều gì sẽ xảy ra khi chúng tôi cố gắng trích xuất hình ảnh hiển thị bên dưới từ PDF Turing.
Như bạn có thể thấy trong kết quả của chúng tôi bên dưới, các ký tự đã được đọc, nhưng định dạng của sơ đồ đã bị mất.
Lần nữa, tesseract
phải vật lộn với kích thước nhỏ của các subcript và chúng được hiển thị không chính xác.
Công bằng mà nói, đó vẫn là một kết quả tốt. Chúng tôi không thể trích xuất văn bản đơn giản, nhưng sau đó, ví dụ này đã được cố tình chọn vì nó đưa ra một thách thức.
Một giải pháp tốt khi bạn cần
OCR không phải là thứ bạn cần sử dụng hàng ngày. Tuy nhiên, khi có nhu cầu, thật tốt khi biết rằng bạn có một trong những động cơ OCR tốt nhất theo ý của mình.