Cách thực hiện OCR từ dòng lệnh Linux bằng Tesseract

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ông cụ Tesseract OCR. Nó nhanh, 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 duyệt và tìm các từ trong một hình ảnh, sau đó trích xuất chúng dưới dạng văn bản có thể chỉnh sửa. Nhiệm vụ đơn giản này đối với con người là rất khó đối với máy tính. Những nỗ lực ban đầu là vụng về để nói rằng ít nhất. Máy tính thường nhầm lẫn nếu kiểu chữ hoặc kích thước không khớp với phần mềm OCR.

Tuy nhiên, những người tiên phong trong lĩnh vực này vẫn rất được tôn trọng. Nếu bạn mất bản sao điện tử của tài liệu nhưng vẫn có 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 phần trăm, nó vẫn là một cách tiết kiệm thời gian tuyệt vời.

Sau khi dọn dẹp thủ công, bạn sẽ khôi phục tài liệu. Mọi người đã tha thứ cho những sai lầm của anh ấy vì họ hiểu sự phức tạp của nhiệm vụ mà gói OCR phải đối mặt. Bên cạnh đó, nó tốt hơn là viết lại toàn bộ tài liệu.

Kể từ đó, tình hình đã được cải thiện đáng kể. Ứng dụng Tesseract OCR, được phát triển bởi Hewlett Packard, bắt đầu vào những năm 1980 dưới dạng ứng dụng thương mại. Nó được mở vào năm 2005 và hiện được điều hành bởi Google. Nó có các tính 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à miễn phí sử dụng.

Cài đặt Tesseract OCR

Để cài đặt Tesseract OCR trên Ubuntu, hãy sử dụng lệnh này:

sudo apt-get install tesseract-ocr

Trong Fedora, lệnh là:

sudo dnf install tesseract

Sudo dnf cài đặt tesseract trong cửa sổ đầu cuối.

Trên Manjaro, bạn cần gõ:

sudo pacman -Syu tesseract

sudo pacman -Syu tesseract trong cửa sổ đầu cuối.

Sử dụng Tesseract OCR

Chúng tôi sẽ trình bày một loạt các 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 bảo vệ dữ liệu chung. Hãy xem OCR có thể đọc nó không (và vẫn tỉnh táo).

trích xuất từ ​​Recital 63 của GDPR

Đây là một bức tranh khó hiểu vì mỗi câu bắt đầu bằng một số chỉ số trên yếu, thường thấy trong các văn bản pháp luật.

Chúng ta cần cung cấp cho lệnh tesseract một số thông tin, bao gồm:

Tên của tệp hình ảnh sẽ được xử lý.
Tên của tệp văn bản mà nó sẽ tạo để lưu trữ văn bản được trích xuất. Chúng tôi không cần chỉ định phần mở rộng của tệp (nó sẽ luôn là .txt). Nếu một tệp có cùng tên đã tồn tại, nó sẽ bị ghi đè.
Chúng ta có thể sử dụng tùy chọn –dpi để cho tesseract biết độ phân giải hình ảnh trên mỗi inch (dpi) là bao nhiêu. Nếu chúng tôi không chỉ định giá trị dpi, tesseract sẽ cố gắng tìm ra giá trị đó.

Tệp hình ảnh của chúng tôi được gọi 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 như thế này:

tesseract recital-63.png recital --dpi 150

tesseract recital-63.png recital --dpi 150 trong cửa sổ terminal.

Kết quả rất tốt. Vấn đề duy nhất là các chữ viết trên – chúng quá nhạt để có thể đọc chính xác. Chất lượng hình ảnh tốt là điều cần thiết để có kết quả tốt.

Trích từ Recital 63.

tesseract diễn giải các số siêu ký tự 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 hoàn hảo (phía bên phải của hình ảnh phải được cắt để khớp ở đây).

Ký tự cuối cùng là một byte có giá trị thập lục phân 0x0C, là 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, in đậm và in nghiêng.

Một hình ảnh với văn bản in đậm và in nghiêng ở các kích cỡ khác nhau.

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 là “bold.txt”, vì vậy lệnh của chúng tôi là:

tesseract bold-italic.png bold --dpi 150

tesseract bold-italic.png bold --dpi 150 trong cửa sổ terminal.

Đ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 hoàn hảo.

văn bản được trích xuất từ ​​bold-italic.png.

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 ngôn ngữ đó. 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ừ viết tắt của ngôn ngữ đó. Chúng tôi sẽ cài đặt hỗ trợ ngôn ngữ xứ Wales. Chữ 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ó tên là “tesseract-ocr-” và có chữ viết tắt ngôn ngữ ở cuối. Để cài đặt tệp ngôn ngữ tiếng Wales trong Ubuntu, chúng tôi sẽ sử dụng:

sudo apt-get install tesseract-ocr-cym

Sudo apt-get install tesseract-ocr-cym trong cửa sổ đầu cuối.

Hình ảnh với các văn bản dưới đây. Đây là câu đầu tiên của quốc ca xứ Wales.

một hình ảnh chứa văn bản của câu đầu tiên của quốc ca xứ Wales.

Hãy xem liệu Tesseract OCR có vượt qua thử thách không. Chúng tôi sẽ sử dụng tùy chọn -l (ngôn ngữ) để cho tesseract biết ngôn ngữ mà chúng tôi muốn làm việc với:

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150 trong cửa sổ terminal.

tesseract đang hoạt động rất tốt như được hiển thị trong văn bản được trích xuất bên dưới. Cuối cùng, Tesseract OCR.

Trích xuất văn bản tiếng Wales.

Nếu tài liệu của bạn chứa hai ngôn ngữ trở lên (ví dụ: từ điển tiếng Wales sang tiếng Anh), bạn có thể sử dụng dấu cộng (+) để yêu cầu tesseract thêm ngôn ngữ khác, ví dụ:

tesseract image.png textfile -l eng+cym+fra

Sử dụng Tesseract OCR với tệp PDF

Lệnh tesseract được thiết kế để hoạt động với tệp hình ảnh nhưng không thể đọc tệp PDF. Tuy nhiên, nếu bạn muốn trích xuất văn bản từ tệp PDF, trước tiên bạn có thể sử dụng một công cụ khác để tạo một bộ ảnh. Một hình ảnh duy nhất sẽ đại diện cho một trang của PDF.

Công cụ pdftppm cần thiết đã được cài đặt trên PC Linux của bạn. Tệp PDF mà chúng tôi sẽ sử dụng trong ví dụ của mình là bản sao của bài báo đột phá về trí tuệ nhân tạo của Alan Turing, “Máy tính và Trí thông minh”.

trang bìa pdf

Chúng tôi sử dụng tùy chọn -png để chỉ định rằng chúng tôi muốn tạo các tệp PNG. Tên của tệp PDF của chúng tôi là “turing.pdf”. Chúng tôi sẽ đặt tên cho 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

pdftoppm -png turing.pdf turing trong cửa sổ đầu cuối.

Để 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 tệp cho vòng lặp. Đối với mỗi tệp “turing-nn.png” của chúng tôi, 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;

trong tu cho tôi - ??. png; tạo một tesseract

Để 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

cat text-turing *> complete.txt trong cửa sổ đầu cuối. “width = “646 ″ height = “57 ″ onload = “pagespeed.lazyLoadImages.loadIfVisibleAnd MaybeBeacon (this);” onerror = “this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAnd MaybeBeacon(this);”></p><p> Chuyện này xảy ra như thế nào? Rất tốt như đã thấy dưới đây. Tuy nhiên, trang đầu tiên trông khá khắt khe. Nó có các phong cách và kích cỡ khác nhau của văn bản và trang trí. Ngoài ra còn có một “hình mờ” dọc ở cạnh phải của trang.</p><div style=

Cách tắt hỗ trợ từ xa trong hệ thống Windows 10

Tuy nhiên, bản in gần giống với bản gốc. Tất nhiên định dạng bị mất, nhưng văn bản là chính xác.

Hình mờ dọc đã được viết lại dưới dạng vô nghĩa ở cuối trang. Văn bản quá nhỏ để tesseract có thể đọc chính xác, nhưng nó sẽ dễ dàng tìm và xóa. Kết quả tồi tệ nhất sẽ là các ký tự ngẫu nhiên ở cuối mỗi dòng.

Thật thú vị, những chữ cái đơn lẻ ở đầu danh sách câu hỏi và câu trả lời ở trang hai đã bị bỏ qua. Dưới đây là một phần từ PDF.

Như bạn có thể thấy bên dưới, các câu hỏi vẫn còn, nhưng chữ “Q” và “A” ở đầu mỗi dòng đã bị mất.

Sơ đồ cũng sẽ không được sao chép 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 nội dung được hiển thị bên dưới từ Turing PDF.

Như bạn có thể thấy trong đầu ra của chúng tôi bên dưới, các ký tự đã được đọc nhưng định dạng biểu đồ đã bị mất.

Một lần nữa, tesseract gặp khó khăn với kích thước nhỏ của các chỉ số con và chúng hiển thị không chính xác.

Tuy nhiên, thành thật 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 ví dụ này được chọn có chủ ý vì nó khó.

OCR không phải là thứ bạn sẽ cần hàng ngày. Tuy nhiên, khi có nhu cầu, thật tốt khi biết rằng bạn có sẵn một trong những công cụ OCR tốt nhất.

Những bài viết liên quan

Back to top button