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.
**Định dạng ảnh xám di động (PGM)** là một định dạng được chấp nhận rộng rãi và được sử dụng trong xử lý ảnh và đồ họa máy tính để biểu diễn ảnh xám theo một định dạng đơn giản, không trang trí. Ý nghĩa của nó không chỉ nằm ở sự đơn giản mà còn ở tính linh hoạt và khả năng di động trên các nền tảng máy tính và hệ sinh thái phần mềm khác nhau. Một ảnh xám, trong bối cảnh của định dạng PGM, bao gồm các sắc thái xám khác nhau, trong đó mỗi pixel biểu diễn một giá trị cường độ từ đen đến trắng. Việc xây dựng tiêu chuẩn PGM chủ yếu hướng đến việc dễ dàng phân tích cú pháp và thao tác ảnh với chi phí tính toán tối thiểu, do đó làm cho nó đặc biệt phù hợp cho các tác vụ xử lý ảnh nhanh và mục đích giáo dục.
Cấu trúc của tệp PGM rất đơn giản, bao gồm một phần đầu theo sau là dữ liệu ảnh. Phần đầu được chia thành bốn phần: số ma thuật, xác định tệp là PGM và cho biết tệp ở định dạng nhị phân hay ASCII; kích thước của ảnh được chỉ định theo chiều rộng và chiều cao tính bằng pixel; giá trị xám tối đa, xác định phạm vi các giá trị cường độ có thể có cho mỗi pixel; và cuối cùng là các bình luận, là tùy chọn và có thể được đưa vào để cung cấp thông tin bổ sung về ảnh. Số ma thuật 'P2' biểu thị một PGM ASCII, trong khi 'P5' biểu thị một PGM nhị phân. Sự khác biệt này phù hợp với sự cân bằng giữa khả năng đọc của con người và hiệu quả lưu trữ.
Theo sau phần đầu, dữ liệu ảnh được phác thảo theo định dạng lưới tương ứng với kích thước pixel được chỉ định trong phần đầu. Trong một PGM ASCII (P2), giá trị cường độ của mỗi pixel được liệt kê ở dạng văn bản thuần túy, được sắp xếp từ góc trên cùng bên trái đến góc dưới cùng bên phải của ảnh và được phân tách bằng khoảng trắng. Các giá trị nằm trong khoảng từ 0, biểu thị màu đen, đến giá trị xám tối đa (được chỉ định trong phần đầu), biểu thị màu trắng. Khả năng đọc của định dạng này giúp dễ dàng chỉnh sửa và gỡ lỗi nhưng kém hiệu quả hơn về kích thước tệp và tốc độ phân tích cú pháp so với định dạng nhị phân của nó.
Mặt khác, các tệp PGM nhị phân (P5) mã hóa dữ liệu ảnh ở dạng nhỏ gọn hơn, sử dụng biểu diễn nhị phân cho các giá trị cường độ. Định dạng này làm giảm đáng kể kích thước tệp và cho phép các hoạt động đọc/ghi nhanh hơn, rất có lợi cho các ứng dụng xử lý khối lượng lớn ảnh hoặc yêu cầu hiệu suất cao. Tuy nhiên, sự đánh đổi là các tệp nhị phân không thể đọc được bằng con người và yêu cầu phần mềm chuyên dụng để xem và chỉnh sửa. Khi xử lý một PGM nhị phân, điều quan trọng là phải xử lý dữ liệu nhị phân một cách chính xác, có tính đến mã hóa của tệp và kiến trúc của hệ thống, đặc biệt là về tính endian.
Tính linh hoạt của định dạng PGM được thể hiện bằng tham số giá trị xám tối đa của nó trong phần đầu. Giá trị này quyết định độ sâu bit của ảnh, từ đó xác định phạm vi cường độ xám có thể được biểu diễn. Một lựa chọn phổ biến là 255, có nghĩa là mỗi pixel có thể lấy bất kỳ giá trị nào trong khoảng từ 0 đến 255, cho phép có 256 sắc thái xám riêng biệt trong một ảnh 8 bit. Cài đặt này đủ cho hầu hết các ứng dụng; tuy nhiên, định dạng PGM có thể chứa độ sâu bit cao hơn, chẳng hạn như 16 bit trên mỗi pixel, bằng cách tăng giá trị xám tối đa. Tính năng này cho phép biểu diễn các ảnh có độ chuyển màu cường độ mịn hơn, phù hợp cho các ứng dụng hình ảnh có dải động cao.
Tính đơn giản của định dạng PGM cũng mở rộng đến việc thao tác và xử lý của nó. Vì định dạng được ghi chép rõ ràng và thiếu các tính năng phức tạp được tìm thấy trong các định dạng ảnh tinh vi hơn, nên việc viết các chương trình để phân tích cú pháp, sửa đổi và tạo ảnh PGM có thể được thực hiện với các kỹ năng lập trình cơ bản. Khả năng tiếp cận này tạo điều kiện thuận lợi cho việc thử nghiệm và học tập trong xử lý ảnh, khiến PGM trở thành một lựa chọn phổ biến trong các khuôn khổ học thuật và trong số những người có sở thích. Hơn nữa, bản chất đơn giản của định dạng cho phép triển khai hiệu quả các thuật toán cho các tác vụ như lọc, phát hiện cạnh và điều chỉnh độ tương phản, góp phần vào việc sử dụng liên tục của nó trong cả nghiên cứu và ứng dụng thực tế.
Mặc dù có những điểm mạnh, định dạng PGM cũng có những hạn chế. Đáng chú ý nhất là việc thiếu hỗ trợ cho ảnh màu, vì nó vốn được thiết kế cho ảnh xám. Mặc dù đây không phải là một nhược điểm đối với các ứng dụng chỉ xử lý ảnh đơn sắc, nhưng đối với các tác vụ yêu cầu thông tin màu, người ta phải chuyển sang các định dạng anh em trong họ định dạng Netpbm, chẳng hạn như Định dạng ảnh di động (PPM) cho ảnh màu. Ngoài ra, tính đơn giản của định dạng PGM có nghĩa là nó không hỗ trợ các tính năng hiện đại như nén, lưu trữ siêu dữ liệu (ngoài các bình luận cơ bản) hoặc các lớp, có sẵn trong các định dạng phức tạp hơn như JPEG hoặc PNG. Hạn chế này có thể dẫn đến kích thước tệp lớn hơn đối với ảnh có độ phân giải cao và có khả năng hạn chế việc sử dụng nó trong một số ứng dụng nhất định.
Khả năng tương thích và dễ chuyển đổi của định dạng PGM với các định dạng khác là một trong những ưu điểm đáng chú ý của nó. Vì nó mã hóa dữ liệu ảnh theo cách đơn giản và được ghi chép rõ ràng, nên việc chuyển đổi ảnh PGM sang các định dạng khác hoặc ngược lại tương đối đơn giản. Khả năng này làm cho nó trở thành một định dạng trung gian tuyệt vời cho các đường ống xử lý ảnh, trong đó ảnh có thể có nguồn gốc từ nhiều định dạng khác nhau, được xử lý ở định dạng PGM vì lý do đơn giản và sau đó được chuyển đổi sang định dạng cuối cùng phù hợp để phân phối hoặc lưu trữ. Nhiều tiện ích và thư viện trên các ngôn ngữ lập trình khác nhau hỗ trợ các quy trình chuyển đổi này, củng cố vai trò của định dạng PGM trong một quy trình làm việc linh hoạt và có khả năng thích ứng.
Các cân nhắc về bảo mật đối với các tệp PGM thường xoay quanh các rủi ro liên quan đến việc phân tích cú pháp và xử lý các tệp được định dạng không đúng hoặc được tạo ra một cách độc hại. Do tính đơn giản của nó, định dạng PGM ít dễ bị các lỗ hổng cụ thể hơn so với các định dạng phức tạp hơn. Tuy nhiên, các ứng dụng phân tích cú pháp các tệp PGM vẫn nên triển khai xử lý lỗi mạnh mẽ để quản lý các đầu vào không mong muốn, chẳng hạn như thông tin phần đầu không chính xác, dữ liệu vượt quá kích thước mong đợi hoặc các giá trị nằm ngoài phạm vi hợp lệ. Đảm bảo xử lý an toàn các tệp PGM là rất quan trọng, đặc biệt là trong các ứng dụng chấp nhận ảnh do người dùng cung cấp, để ngăn chặn các lỗ hổng bảo mật tiềm ẩn.
Nhìn về phía trước, sự liên quan lâu dài của định dạng PGM trong một số lĩnh vực nhất định của ngành công nghệ, mặc dù có tính đơn giản và hạn chế, nhấn mạnh giá trị của các định dạng tệp đơn giản, được ghi chép rõ ràng. Vai trò của nó như một công cụ giảng dạy, sự phù hợp của nó cho các tác vụ xử lý ảnh nhanh và việc tạo điều kiện chuyển đổi định dạng ảnh minh họa cho tầm quan trọng của sự cân bằng giữa chức năng và độ phức tạp trong thiết kế định dạng tệp. Khi công nghệ phát triển, các định dạng ảnh mới với các tính năng nâng cao, khả năng nén tốt hơn và hỗ trợ các công nghệ hình ảnh mới chắc chắn sẽ xuất hiện. Tuy nhiên, di sản của định dạng PGM sẽ vẫn tồn tại, đóng vai trò là chuẩn mực cho thiết kế các định dạng trong tương lai, hướng tới sự kết hợp tối ưu giữa hiệu suất, tính đơn giản và khả năng di động.
Tóm lại, Định dạng ảnh xám di động (PGM) đại diện cho một tài sản vô giá trong lĩnh vực hình ảnh kỹ thuật số, bất chấp sự đơn giản của nó. Triết lý thiết kế của nó, tập trung vào tính dễ sử dụng, khả năng tiếp cận và sự đơn giản, đã đảm bảo sự liên quan liên tục của nó trong nhiều lĩnh vực khác nhau, từ giáo dục đến phát triển phần mềm. Bằng cách cho phép thao tác và xử lý hiệu quả các ảnh xám, định dạng PGM đã tự khẳng định mình là một yếu tố chính trong bộ công cụ của những người đam mê và chuyên gia xử lý ảnh. Cho dù được sử dụng vì giá trị giáo dục của nó, vai trò của nó trong các đường ống xử lý hay sự đơn giản của nó trong thao tác ảnh, định dạng PGM vẫn là minh chứng cho
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.