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 hình ảnh PCT, còn được gọi là định dạng Macintosh PICT, là định dạng tệp đồ họa được sử dụng chủ yếu trên máy tính Macintosh. Ban đầu, nó được thiết kế như một định dạng tệp siêu dữ liệu vào những năm 1980, có nghĩa là nó có thể chứa cả dữ liệu bitmap và dữ liệu vector. Tính linh hoạt này khiến nó trở thành lựa chọn phổ biến để lưu trữ và truyền tải nhiều loại đồ họa, từ hình minh họa đơn giản đến hình ảnh phức tạp. Định dạng PCT được Apple Inc. phát triển để tạo điều kiện truyền đồ họa giữa các ứng dụng khác nhau và đóng vai trò là định dạng đổ đồ họa cho thư viện đồ họa QuickDraw, đây là cơ sở cho giao diện người dùng đồ họa của các hệ điều hành Macintosh đầu tiên.
Định dạng PCT có điểm độc đáo là có thể lưu trữ cả thông tin vector và bitmap. Đồ họa vector được tạo thành từ các đường dẫn được xác định bởi các phương trình toán học, giúp chúng có thể mở rộng mà không làm giảm chất lượng. Mặt khác, đồ họa bitmap được tạo thành từ các pixel, có thể dẫn đến mất chi tiết khi được mở rộng. Bằng cách kết hợp hai loại dữ liệu này, các tệp PCT có thể lưu trữ hiệu quả các hình ảnh phức tạp như hình minh họa có văn bản, nghệ thuật đường nét và các yếu tố nhiếp ảnh, đồng thời duy trì khả năng mở rộng một số phần nhất định của hình ảnh mà không bị suy giảm.
Các tệp PCT được cấu trúc theo cách bắt đầu bằng một tiêu đề 512 byte, thường được điền bằng các số không và không được định dạng PICT sử dụng. Tiếp theo là tiêu đề tệp PICT, bao gồm các thông tin quan trọng như số phiên bản và kích thước của hình ảnh. Tiêu đề được tiếp theo là dữ liệu hình ảnh, bao gồm các mã lệnh (mã thao tác) chỉ định cách hiển thị hình ảnh. Các mã lệnh này có thể xác định các đường, hình dạng, màu sắc và các yếu tố đồ họa khác, cũng như dữ liệu bitmap cho hình ảnh raster.
Có hai phiên bản chính của định dạng PCT: PICT1 và PICT2. PICT1 là phiên bản gốc hỗ trợ các lệnh vẽ cơ bản và số lượng màu hạn chế. PICT2, được giới thiệu cùng với Macintosh II, đã bổ sung hỗ trợ cho các khả năng hình ảnh tinh vi hơn, chẳng hạn như màu 24 bit, độ dốc và nén JPEG. PICT2 cũng giới thiệu khái niệm 'vùng', cho phép thực hiện các thao tác cắt phức tạp hơn, trong đó chỉ một số phần nhất định của hình ảnh sẽ được vẽ, dựa trên vùng được xác định.
Một trong những tính năng chính của định dạng PCT là khả năng nén dữ liệu hình ảnh. Các tệp PCT sử dụng RLE (Mã hóa độ dài chuỗi), một dạng nén dữ liệu đơn giản trong đó các chuỗi có cùng giá trị dữ liệu được lưu trữ dưới dạng một giá trị và số đếm duy nhất, thay vì là chuỗi gốc. Điều này đặc biệt hiệu quả đối với các hình ảnh có diện tích lớn có màu đồng nhất. PICT2 đã nâng cao khả năng này bằng cách hỗ trợ nén JPEG, hiệu quả hơn trong việc nén hình ảnh nhiếp ảnh.
Định dạng PCT cũng bao gồm một số tính năng khác tiên tiến vào thời điểm đó. Nó hỗ trợ nhiều độ phân giải, có nghĩa là hình ảnh có thể được hiển thị ở các mức độ chi tiết khác nhau tùy thuộc vào khả năng của thiết bị đầu ra. Điều này đặc biệt hữu ích khi cùng một hình ảnh được hiển thị trên cả màn hình và máy in, thường có các yêu cầu về độ phân giải rất khác nhau. Ngoài ra, các tệp PCT có thể chứa hình ảnh xem trước, là một biểu diễn bitmap nhỏ của dữ liệu vector. Điều này cho phép các ứng dụng hiển thị nhanh chóng hình thu nhỏ của hình ảnh mà không cần phải hiển thị toàn bộ đồ họa vector.
Mặc dù có nhiều khả năng, định dạng PCT vẫn có một số hạn chế. Một trong những hạn chế đáng kể nhất là không hỗ trợ tính trong suốt. Không giống như các định dạng như GIF và PNG, PCT không cho phép tạo hình ảnh có nền trong suốt hoặc các yếu tố bán trong suốt. Hạn chế này có thể gây ra vấn đề khi xếp lớp hình ảnh hoặc khi cần đặt hình ảnh lên nền có nhiều màu sắc hoặc hoa văn khác nhau.
Một h ạn chế khác của định dạng PCT là phụ thuộc vào nền tảng. PCT được thiết kế cho hệ điều hành Macintosh và QuickDraw, có nghĩa là nó không được hỗ trợ gốc trên các nền tảng khác. Mặc dù có các công cụ và thư viện của bên thứ ba có thể đọc và ghi các tệp PCT trên Windows và các hệ điều hành khác, nhưng định dạng này không bao giờ được áp dụng rộng rãi bên ngoài cộng đồng Macintosh. Điều này đã dẫn đến các vấn đề về khả năng tương thích, đặc biệt là khi việc sử dụng phần mềm dành riêng cho Macintosh đã giảm dần theo thời gian.
Định dạng PCT cũng có các mối quan ngại về bảo mật. Trong quá khứ, người ta đã phát hiện ra các lỗ hổng trong cách một số ứng dụng xử lý các tệp PCT, có khả năng cho phép thực thi mã độc. Đây là một vấn đề phổ biến với nhiều định dạng tệp, trong đó tính phức tạp và khả năng tương thích ngược có thể dẫn đến việc bỏ qua bảo mật. Do đó, một số ứng dụng hiện đại đã ngừng hỗ trợ định dạng PCT hoặc xử lý định dạng này trong môi trường an toàn hơn, được bảo vệ bằng hộp cát.
Về phần mở rộng tệp, các tệp PCT thường được lưu với phần mở rộng '.pct' hoặc '.pict'. Tuy nhiên, do hệ thống tệp Macintosh không phân biệt chữ hoa chữ thường, các phần mở rộng này có thể hoán đổi cho nhau. Khi truyền các tệp PCT sang các hệ thống có hệ thống tệp phân biệt chữ hoa chữ thường, chẳng hạn như Linux, cần phải cẩn thận duy trì phần mở rộng tệp chính xác cho mục đích tương thích.
Định dạng PCT phần lớn đã được thay thế bằng các định dạng hình ảnh hiện đại hơn như PNG, JPEG và SVG. Các định dạng này cung cấp khả năng nén tốt hơn, hỗ trợ nền tảng rộng hơn và các tính năng bổ sung như tính trong suốt và hoạt ảnh. Tuy nhiên, các tệp PCT vẫn được sử dụng trong một số hệ thống và ứng dụng cũ, đặc biệt là những hệ thống và ứng dụng được thiết kế cho các hệ điều hành Macintosh cũ hơn. Vì lý do này, việc hiểu định dạng PCT có thể rất quan trọng khi xử lý tài liệu đồ họa lưu trữ hoặc khi giao tiếp với phần mềm Macintosh cũ hơn.
Đối với các nhà phát triển và người dùng làm việc với các tệp PCT, có một số công cụ có sẵn để xem, chuyển đổi và chỉnh sửa các hình ảnh này. GraphicConverter là một ứng dụng Macintosh phổ biến có thể xử lý các tệp PCT cùng nhiều định dạng khác. Adobe Photoshop cũng có khả năng mở và chuyển đổi các tệp PCT, mặc dù các phiên bản mới hơn có thể đã ngừng hỗ trợ do định dạng này ngày càng ít được sử dụng. Ngoài ra còn có một số công cụ trực tuyến cho phép người dùng chuyển đổi các tệp PCT sang các định dạng phổ biến hơn như JPEG hoặc PNG.
Trong lĩnh vực lập trình, các thư viện như ImageMagick và Thư viện hình ảnh Python (PIL) có thể được sử dụng để thao tác các tệp PCT theo chương trình. Các thư viện này cung cấp các hàm để đọc, ghi và chuyển đổi các tệp PCT, cũng như thực hiện các tác vụ xử lý hình ảnh. Tuy nhiên, các nhà phát triển cần lưu ý rằng hỗ trợ cho các tệp PCT trong các thư viện này có thể bị hạn chế so với các định dạng hiện đại hơn và có thể cần thêm nỗ lực để xử lý các tệp PCT một cách chính xác.
Tóm lại, định dạng hình ảnh PCT đóng một vai trò quan trọng trong những ngày đầu của máy tính Macintosh, cung cấp một cách linh hoạt và mạnh mẽ để lưu trữ và thao tác đồ họa. Mặc dù phần lớn đã được thay thế bằng các định dạng mới hơn, nhưng di sản của nó vẫn tiếp tục dưới dạng nội dung và ứng dụng cũ vẫn dựa vào định dạng phổ biến một thời này. Việc hiểu các khía cạnh kỹ thuật của PCT, từ cấu trúc và khả năng của nó đến các hạn chế và mối quan ngại về bảo mật, là điều cần thiết đối với các chuyên gia có thể gặp định dạng này trong công việc lưu trữ hoặc khi tương tác với các hệ thống Macintosh cũ hơn.
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.