Nhận dạng ký tự quang học (OCR) biến hình ảnh văn bản—bản quét, ảnh chụp từ điện thoại thông minh, PDF—thành các chuỗi máy có thể đọc được và, ngày càng nhiều, dữ liệu có cấu trúc. OCR hiện đại là một quy trình làm sạch hình ảnh, tìm văn bản, đọc nó và xuất siêu dữ liệu phong phú để các hệ thống hạ nguồn có thể tìm kiếm, lập chỉ mục hoặc trích xuất các trường. Hai tiêu chuẩn đầu ra được sử dụng rộng rãi là hOCR, một định dạng vi mô HTML cho văn bản và bố cục, và ALTO XML, một lược đồ hướng thư viện/lưu trữ; cả hai đều bảo toàn vị trí, thứ tự đọc và các tín hiệu bố cục khác và được hỗ trợ bởi các công cụ phổ biến như Tesseract.
Tiền xử lý. Chất lượng OCR bắt đầu bằng việc dọn dẹp hình ảnh: chuyển đổi thang độ xám, khử nhiễu, ngưỡng (nhị phân hóa), và chỉnh lệch. Các hướng dẫn OpenCV kinh điển bao gồm toàn cục, thích ứng và Otsu ngưỡng—những yếu tố chính cho các tài liệu có ánh sáng không đồng đều hoặc biểu đồ hai mode. Khi độ sáng thay đổi trong một trang (hãy nghĩ đến ảnh chụp bằng điện thoại), các phương pháp thích ứng thường hoạt động tốt hơn một ngưỡng toàn cục duy nhất; Otsu tự động chọn một ngưỡng bằng cách phân tích biểu đồ. Chỉnh sửa độ nghiêng cũng quan trọng không kém: chỉnh lệch dựa trên Hough (Biến đổi dòng Hough) kết hợp với nhị phân hóa Otsu là một công thức phổ biến và hiệu quả trong các quy trình tiền xử lý sản xuất.
Phát hiện và nhận dạng. OCR thường được chia thành phát hiện văn bản (văn bản ở đâu ?) và nhận dạng văn bản (nó nói gì?). Trong các cảnh tự nhiên và nhiều bản quét, các bộ phát hiện tích chập hoàn toàn như EAST dự đoán hiệu quả các tứ giác ở cấp độ từ hoặc dòng mà không cần các giai đoạn đề xuất nặng nề và được triển khai trong các bộ công cụ phổ biến (ví dụ: hướng dẫn phát hiện văn bản của OpenCV). Trên các trang phức tạp (báo, biểu mẫu, sách), việc phân đoạn các dòng/vùng và suy luận thứ tự đọc rất quan trọng:Kraken triển khai phân đoạn vùng/dòng truyền thống và phân đoạn đường cơ sở thần kinh, với sự hỗ trợ rõ ràng cho các tập lệnh và hướng khác nhau (LTR/RTL/dọc).
Mô hình nhận dạng. Công cụ mã nguồn mở cổ điển Tesseract (do Google mở nguồn, có nguồn gốc từ HP) đã phát triển từ một bộ phân loại ký tự thành một bộ nhận dạng chuỗi dựa trên LSTM và có thể phát hành các tệp PDF có thể tìm kiếm, đầu ra thân thiện với hOCR/ALTO, và nhiều hơn nữa từ CLI. Các bộ nhận dạng hiện đại dựa vào mô hình hóa chuỗi mà không cần các ký tự được phân đoạn trước. Phân loại thời gian kết nối (CTC) vẫn là nền tảng, học các sự sắp xếp giữa các chuỗi đặc trưng đầu vào và chuỗi nhãn đầu ra; nó được sử dụng rộng rãi trong các quy trình xử lý chữ viết tay và văn bản cảnh.
Trong vài năm qua, Transformers đã định hình lại OCR. TrOCR sử dụng một bộ mã hóa Vision Transformer cộng với một bộ giải mã Text Transformer, được đào tạo trên các kho ngữ liệu tổng hợp lớn sau đó được tinh chỉnh trên dữ liệu thực, với hiệu suất mạnh mẽ trên các tiêu chuẩn văn bản in, viết tay và cảnh (xem thêm tài liệu Hugging Face). Song song đó, một số hệ thống bỏ qua OCR để hiểu biết hạ nguồn: Donut (Document Understanding Transformer) là một bộ mã hóa-giải mã không có OCR, trực tiếp xuất ra các câu trả lời có cấu trúc (như JSON khóa-giá trị) từ tài liệu hình ảnh (repo, thẻ mô hình), tránh tích lũy lỗi khi một bước OCR riêng biệt cung cấp cho một hệ thống IE.
Nếu bạn muốn đọc văn bản có sẵn trên nhiều tập lệnh, EasyOCR cung cấp một API đơn giản với hơn 80 mô hình ngôn ngữ, trả về các hộp, văn bản và độ tin cậy—tiện dụng cho các nguyên mẫu và các tập lệnh không phải tiếng Latinh. Đối với các tài liệu lịch sử, Kraken tỏa sáng với phân đoạn đường cơ sở và thứ tự đọc nhận biết tập lệnh; để đào tạo cấp dòng linh hoạt, Calamari xây dựng trên dòng dõi Ocropy (Ocropy) với các bộ nhận dạng (đa)LSTM+CTC và một CLI để tinh chỉnh các mô hình tùy chỉnh.
Sự khái quát hóa phụ thuộc vào dữ liệu. Đối với chữ viết tay, Cơ sở dữ liệu chữ viết tay IAM cung cấp các câu tiếng Anh đa dạng về người viết để đào tạo và đánh giá; đó là một bộ tham chiếu lâu đời cho nhận dạng dòng và từ. Đối với văn bản cảnh, COCO-Text đã xếp lớp các chú thích mở rộng trên MS-COCO, với các nhãn cho văn bản in/viết tay, dễ đọc/khó đọc, tập lệnh và bản ghi đầy đủ (xem thêm trang dự án ban đầu). Lĩnh vực này cũng phụ thuộc nhiều vào việc đào tạo trước tổng hợp: SynthText in the Wild kết xuất văn bản thành các bức ảnh với hình học và ánh sáng thực tế, cung cấp khối lượng dữ liệu khổng lồ để đào tạo trước các bộ phát hiện và nhận dạng (tham khảo mã và dữ liệu).
Các cuộc thi dưới chiếc ô Đọc mạnh mẽ của ICDAR giữ cho việc đánh giá có cơ sở. Các nhiệm vụ gần đây nhấn mạnh việc phát hiện/đọc từ đầu đến cuối và bao gồm việc liên kết các từ thành các cụm từ, với mã chính thức báo cáo độ chính xác/độ thu hồi/F-score, giao nhau trên hợp nhất (IoU), và các số liệu khoảng cách chỉnh sửa cấp ký tự—phản ánh những gì các nhà thực hành nên theo dõi.
OCR hiếm khi kết thúc ở văn bản thuần túy. Các kho lưu trữ và thư viện số thích ALTO XML vì nó mã hóa bố cục vật lý (các khối/dòng/từ có tọa độ) cùng với nội dung, và nó kết hợp tốt với bao bì METS. hOCR định dạng vi mô, ngược lại, nhúng cùng một ý tưởng vào HTML/CSS bằng cách sử dụng các lớp như ocr_line và ocrx_word, giúp dễ dàng hiển thị, chỉnh sửa và chuyển đổi bằng các công cụ web. Tesseract phơi bày cả hai—ví dụ: tạo hOCR hoặc PDF có thể tìm kiếm trực tiếp từ CLI (hướng dẫn xuất PDF); Các trình bao bọc Python như pytesseract thêm sự tiện lợi. Các bộ chuyển đổi tồn tại để dịch giữa hOCR và ALTO khi các kho lưu trữ có các tiêu chuẩn nhập liệu cố định —xem danh sách được tuyển chọn này của công cụ định dạng tệp OCR.
Xu hướng mạnh mẽ nhất là sự hội tụ: phát hiện, nhận dạng, mô hình hóa ngôn ngữ và thậm chí cả giải mã cho tác vụ cụ thể đang hợp nhất thành các ngăn xếp Transformer thống nhất. Đào tạo trước trên các kho ngữ liệu tổng hợp lớn vẫn là một hệ số nhân. Các mô hình không có OCR sẽ cạnh tranh quyết liệt ở bất cứ đâu mục tiêu là các đầu ra có cấu trúc thay vì các bản ghi nguyên văn. Cũng mong đợi các triển khai kết hợp: một bộ phát hiện nhẹ cộng với một bộ nhận dạng kiểu TrOCR cho văn bản dạng dài, và một mô hình kiểu Donut cho các biểu mẫu và biên lai.
Tesseract (GitHub) · Tài liệu Tesseract · Thông số kỹ thuật hOCR · Nền tảng ALTO · Bộ phát hiện EAST · Phát hiện văn bản OpenCV · TrOCR · Donut · COCO-Text · SynthText · Kraken · Calamari OCR · ICDAR RRC · pytesseract · Chữ viết tay IAM · Công cụ định dạng tệp OCR · EasyOCR
Optical Character Recognition (OCR) là một công nghệ được sử dụng để chuyển đổi các loại tài liệu khác nhau, như tài liệu giấy đã quét, tệp PDF hoặc hình ảnh được chụp bằng máy ảnh số, thành dữ liệu có thể chỉnh sửa và tìm kiếm.
OCR hoạt động bằng cách quét hình ảnh hoặc tài liệu đầu vào, phân đoạn hình ảnh thành các ký tự riêng lẻ, và so sánh từng ký tự với cơ sở dữ liệu hình dạng ký tự bằng cách sử dụng nhận dạng mô hình hoặc nhận dạng đặc trưng.
OCR được sử dụng trong nhiều lĩnh vực và ứng dụng, bao gồm số hóa tài liệu in, kích hoạt các dịch vụ văn bản thành giọng nói, tự động hóa quá trình nhập dữ liệu, và hỗ trợ người dùng khiếm thị tương tác tốt hơn với văn bản.
Mặc dù đã có những tiến bộ vượt bậc trong công nghệ OCR, nhưng nó không phải lúc nào cũng hoàn hảo. Độ chính xác có thể thay đổi tùy thuộc vào chất lượng của tài liệu gốc và chi tiết của phần mềm OCR đang được sử dụng.
Mặc dù OCR chủ yếu được thiết kế cho văn bản in, một số hệ thống OCR tiên tiến cũng có thể nhận dạng được chữ viết tay rõ ràng, nhất quán. Tuy nhiên, nhận dạng chữ viết tay thường kém chính xác hơn do sự biến đổi lớn trong các kiểu viết của mỗi người.
Có, nhiều hệ thống phần mềm OCR có thể nhận dạng được nhiều ngôn ngữ. Tuy nhiên, điều quan trọng là phải đảm bảo rằng ngôn ngữ cụ thể đó được hỗ trợ bởi phần mềm bạn đang sử dụng.
OCR là viết tắt của Optical Character Recognition và được sử dụng để nhận dạng văn bản in, trong khi ICR, hoặc Intelligent Character Recognition, tiên tiến hơn và được sử dụng để nhận dạng văn bản viết tay.
OCR hoạt động tốt nhất với các phông chữ rõ ràng, dễ đọc và kích cỡ văn bản chuẩn. Mặc dù nó có thể hoạt động với các phông chữ và kích cỡ khác nhau, độ chính xác thường giảm khi đối phó với phông chữ không thông thường hoặc kích cỡ văn bản rất nhỏ.
OCR có thể gặp khó khăn với các tài liệu độ phân giải thấp, phông chữ phức tạp, văn bản in kém, chữ viết tay, và các tài liệu có nền gây ra sự can thiệp với văn bản. Ngoài ra, mặc dù nó có thể hoạt động với nhiều ngôn ngữ, nó có thể không bao phủ hoàn hảo mọi ngôn ngữ.
Có, OCR có thể quét văn bản màu và nền màu, mặc dù nó thường hiệu quả hơn với các sự kết hợp màu đối lập cao, như văn bản đen trên nền trắng. Độ chính xác có thể giảm khi màu văn bản và màu nền không có đủ độ tương phản.
PAM (Portable Arbitrary Map) là định dạng hình ảnh ít được biết đến trong họ định dạng tệp hình ảnh được thiết kế trong dự án Netpbm. Đây là định dạng linh hoạt cao có thể biểu diễn nhiều loại hình ảnh với độ sâu và loại dữ liệu điểm ảnh khác nhau. Về cơ bản, PAM là phần mở rộng của các định dạng PBM (Portable Bitmap), PGM (Portable Graymap) và PPM (Portable Pixmap) trước đó, được gọi chung là các định dạng PNM (Portable Any Map), được thiết kế để đơn giản và dễ sử dụng nhưng phải đánh đổi bằng các tính năng và khả năng nén. PAM được giới thiệu để khắc phục những hạn chế của các định dạng này nhưng vẫn giữ được sự đơn giản và dễ sử dụng.
Định dạng PAM được thiết kế để không phụ thuộc vào thiết bị và nền tảng, nghĩa là hình ảnh được lưu ở định dạng này có thể được mở và chỉnh sửa trên bất kỳ hệ thống nào mà không cần quan tâm đến các vấn đề về khả năng tương thích. Điều này đạt được bằng cách lưu trữ dữ liệu hình ảnh ở định dạng văn bản thuần túy hoặc nhị phân có thể dễ dàng đọc và ghi bởi nhiều phần mềm khác nhau. Định dạng này cũng có thể mở rộng, cho phép đưa vào các tính năng và khả năng mới mà không làm mất khả năng tương thích với các phiên bản cũ hơn.
Tệp PAM bao gồm một phần đầu theo sau là dữ liệu hình ảnh. Phần đầu là văn bản ASCII chỉ định chiều rộng, chiều cao, độ sâu và giá trị tối đa của hình ảnh, cũng như loại bộ ba xác định không gian màu. Phần đầu bắt đầu bằng số hiệu 'P7', theo sau là một loạt các thẻ phân tách bằng dòng mới cung cấp siêu dữ liệu cần thiết. Dữ liệu hình ảnh theo ngay sau phần đầu và có thể được lưu ở định dạng nhị phân hoặc ASCII, trong đó nhị phân là lựa chọn phổ biến hơn vì kích thước tệp nhỏ hơn và thời gian xử lý nhanh hơn.
Độ sâu được chỉ định trong phần đầu PAM cho biết số kênh hoặc thành phần trên mỗi điểm ảnh. Ví dụ: độ sâu là 3 thường biểu thị các kênh đỏ, lục và lam của hình ảnh màu, trong khi độ sâu là 4 có thể bao gồm thêm kênh alpha để tạo độ trong suốt. Giá trị tối đa, cũng được chỉ định trong phần đầu, cho biết giá trị tối đa cho bất kỳ kênh nào, từ đó xác định độ sâu bit của hình ảnh. Ví dụ: giá trị tối đa là 255 tương ứng với 8 bit trên mỗi kênh.
Loại bộ ba là một tính năng chính của định dạng PAM vì nó xác định cách diễn giải dữ liệu điểm ảnh. Các loại bộ ba phổ biến bao gồm 'BLACKANDWHITE', 'GRAYSCALE', 'RGB' và 'RGB_ALPHA', cùng nhiều loại khác. Sự linh hoạt này cho phép các tệp PAM biểu diễn nhiều loại hình ảnh, từ hình ảnh đen trắng đơn giản đến hình ảnh đủ màu có độ trong suốt. Ngoài ra, có thể xác định các loại bộ ba tùy chỉnh, giúp định dạng này có thể mở rộng và thích ứng với các yêu cầu hình ảnh chuyên biệt.
Các tệp PAM cũng có thể bao gồm các dòng chú thích tùy chọn trong phần đầu, bắt đầu bằng ký tự '#'. Các chú thích này bị trình đọc hình ảnh bỏ qua và dành cho người đọc. Chúng có thể được sử dụng để lưu trữ siêu dữ liệu như ngày tạo hình ảnh, phần mềm được sử dụng để tạo hình ảnh hoặc bất kỳ thông tin có liên quan nào khác không phù hợp với các trường tiêu đề chuẩn.
Dữ liệu hình ảnh trong tệp PAM được lưu trữ theo trình tự các bộ ba, với mỗi bộ ba biểu diễn một điểm ảnh. Các bộ ba được sắp xếp từ trái sang phải và từ trên xuống dưới, bắt đầu từ điểm ảnh trên cùng bên trái của hình ảnh. Ở định dạng nhị phân, dữ liệu cho mỗi kênh của một bộ ba được lưu trữ dưới dạng số nguyên nhị phân, với số byte trên mỗi kênh được xác định bởi giá trị tối đa được chỉ định trong phần đầu. Ở định dạng ASCII, các giá trị kênh được biểu diễn dưới dạng số thập phân ASCII được phân tách bằng khoảng trắng.
Một trong những ưu điểm của định dạng PAM là sự đơn giản, giúp dễ dàng phân tích cú pháp và tạo. Sự đơn giản này phải đánh đổi bằng kích thước tệp, vì PAM không bao gồm bất kỳ cơ chế nén tích hợp nào. Tuy nhiên, các tệp PAM có thể được nén bên ngoài bằng các thuật toán nén mục đích chung như gzip hoặc bzip2, có thể giảm đáng kể kích thước tệp để lưu trữ hoặc truyền.
Mặc dù có những ưu điểm, định dạng PAM không được sử dụng rộng rãi trong dòng chính do sự thống trị của các định dạng hình ảnh khác như JPEG, PNG và GIF, vốn cung cấp khả năng nén tích hợp và được nhiều phần mềm và phần cứng hỗ trợ hơn. Tuy nhiên, PAM vẫn là một định dạng có giá trị cho một số ứng dụng nhất định, đặc biệt là những ứng dụng yêu cầu mức độ linh hoạt cao hoặc liên quan đến các tác vụ xử lý hoặc phân tích hình ảnh mà sự đơn giản và độ chính xác của định dạng này có lợi.
Trong bối cảnh phát triển phần mềm, định dạng PAM thường được sử dụng làm định dạng trung gian trong các quy trình xử lý hình ảnh. Cấu trúc đơn giản của nó giúp dễ dàng thao tác bằng các tập lệnh hoặc chương trình tùy chỉnh và sự linh hoạt của nó cho phép định dạng này chứa đầu ra của nhiều bước xử lý khác nhau mà không làm mất thông tin. Ví dụ: hình ảnh có thể được chuyển đổi sang định dạng PAM, được xử lý để áp dụng bộ lọc hoặc phép biến đổi, sau đó được chuyển đổi sang định dạng phổ biến hơn để hiển thị hoặc phân phối.
Thư viện Netpbm là gói phần mềm chính để làm việc với PAM và các định dạng Netpbm khác. Thư viện này cung cấp một bộ sưu tập các công cụ dòng lệnh để chuyển đổi giữa các định dạng, cũng như để thực hiện các thao tác hình ảnh cơ bản như thay đổi kích thước, cắt xén và điều chỉnh màu sắc. Thư viện này cũng bao gồm các giao diện lập trình cho C và các ngôn ngữ khác, cho phép các nhà phát triển đọc và ghi các tệp PAM trực tiếp trong các ứng dụng của họ.
Đối với người dùng và nhà phát triển quan tâm đến việc làm việc với định dạng PAM, có một số lưu ý cần ghi nhớ. Đầu tiên, vì định dạng này ít phổ biến hơn nên không phải tất cả phần mềm xem và chỉnh sửa hình ảnh nào cũng hỗ trợ định dạng này theo mặc định. Có thể cần sử dụng các công cụ chuyên dụng hoặc chuyển đổi sang định dạng khác cho một số tác vụ nhất định. Thứ hai, việc thiếu khả năng nén có nghĩa là các tệp PAM có thể khá lớn, đặc biệt đối với hình ảnh có độ phân giải cao, vì vậy cần tính đến dung lượng lưu trữ và băng thông khi làm việc với định dạng này.
Mặc dù có những lưu ý này, nhưng những điểm mạnh của định dạng PAM khiến định dạng này trở thành một công cụ có giá trị trong một số bối cảnh nhất định. Sự đơn giản và linh hoạt của định dạng này giúp phát triển và thử nghiệm nhanh chóng, và khả năng mở rộng của định dạng này đảm bảo rằng định dạng này có thể thích ứng với các nhu cầu trong tương lai. Đối với nghiên cứu, hình ảnh khoa học hoặc bất kỳ ứng dụng nào mà tính toàn vẹn và độ chính xác của dữ liệu hình ảnh là tối quan trọng, PAM cung cấp một giải pháp mạnh mẽ.
Tóm lại, định dạng hình ảnh PAM là một định dạng tệp linh hoạt và đơn giản, là một phần của họ định dạng hình ảnh Netpbm. Định dạng này được thiết kế để đơn giản, linh hoạt và không phụ thuộc vào nền tảng, giúp định dạng này phù hợp với nhiều loại hình ảnh và ứng dụng. Mặc dù định dạng này có thể không phải là lựa chọn tốt nhất cho mọi tình huống, đặc biệt là khi kích thước tệp hoặc khả năng tương thích rộng rãi là mối quan tâm, nhưng những điểm mạnh của định dạng này khiến định dạng này trở thành lựa chọn tuyệt vời cho các ứng dụng chuyên biệt yêu cầu biểu diễn và thao tác chính xác dữ liệu hình ảnh. Do đó, định dạng này vẫn là một định dạng có liên quan và hữu ích trong các lĩnh vực xử lý và phân tích hình ảnh.
Bộ chuyển đổi này chạy hoàn toàn trong trình duyệt của bạn. Khi bạn chọn một tệp, nó sẽ được đọc vào bộ nhớ và chuyển đổi sang định dạng đã chọn. Sau đó, bạn có thể tải xuống tệp đã chuyển đổi.
Việc chuyển đổi bắt đầu ngay lập tức và hầu hết các tệp được chuyển đổi trong vòng chưa đầy một giây. Các tệp lớn hơn có thể mất nhiều thời gian hơn.
Các tệp của bạn không bao giờ được tải lên máy chủ của chúng tôi. Chúng được chuyển đổi trong trình duyệt của bạn và sau đó tệp đã chuyển đổi sẽ được tải xuống. Chúng tôi không bao giờ thấy các tệp của bạn.
Chúng tôi hỗ trợ chuyển đổi giữa tất cả các định dạng hình ảnh, bao gồm JPEG, PNG, GIF, WebP, SVG, BMP, TIFF, v.v.
Bộ chuyển đổi này hoàn toàn miễn phí và sẽ luôn miễn phí. Bởi vì nó chạy trong trình duyệt của bạn, chúng tôi không phải trả tiền cho máy chủ, vì vậy chúng tôi không cần tính phí bạn.
Đúng! Bạn có thể chuyển đổi bao nhiêu tệp tùy thích cùng một lúc. Chỉ cần chọn nhiều tệp khi bạn thêm chúng.