CodeKitHub
Tiếng Việt
Vì sao ảnh chụp trang sách khiến OCR thất bại (và chỉ vài độ nghiêng đã phá hỏng độ chính xác)

Vì sao ảnh chụp trang sách khiến OCR thất bại (và chỉ vài độ nghiêng đã phá hỏng độ chính xác)

Đăng ngày 24 thg 7, 2026

Nếu bạn từng thử chuyển ảnh chụp một trang sách thành văn bản trực tuyến và nhận lại một mớ ký tự lộn xộn vô nghĩa, có thể bạn đã đổ lỗi sai thứ. Rất dễ nghĩ rằng thủ phạm là giấy cũ ố vàng hay ánh sáng kém — nhưng qua thử nghiệm, cả hai yếu tố này gần như không ảnh hưởng gì đáng kể. Nguyên nhân thực sự gần như luôn là thứ bạn không thể nhìn thấy chỉ bằng cách nhìn vào tấm ảnh: một góc nghiêng nhỏ khi chụp.

Thử nghiệm: cùng một trang, bốn điều kiện

Để tìm hiểu điều gì thực sự phá hỏng OCR (nhận dạng ký tự quang học) trên ảnh chụp sách thực tế, chúng tôi đã chạy cùng một đoạn văn bản qua Tesseract — công cụ OCR mã nguồn mở — trong bốn điều kiện: một bản quét phẳng sạch sẽ, một trang giấy ố vàng/phai màu, một tấm ảnh nghiêng khoảng 12 độ, và một tấm ảnh nghiêng có thêm điểm chói sáng.

Điều kiện Độ chính xác từ
Bản quét phẳng, sạch sẽ 100%
Trang ố vàng, phai màu (không nghiêng) 100%
Nghiêng ~12° (không đổi màu) 67.7%
Nghiêng ~8° + chói sáng 71.0%

Trang giấy ố vàng đạt điểm giống hệt trang giấy mới tinh — điểm tuyệt đối. Ngay khi có độ nghiêng, độ chính xác sụt giảm một phần ba, tạo ra đúng loại kết quả mà bất kỳ ai từng thử công cụ “quét sách giáo khoa thành văn bản” đều từng gặp: "mà," thay vì “màu”, "Chươn,." thay vì “Chương.”, "ẩ,n" thay vì “ẩn”.

Vì sao một độ nghiêng nhỏ lại gây thiệt hại lớn đến vậy

Các công cụ OCR đọc văn bản bằng cách quét các hàng ảnh để tìm những dải mực nằm ngang nhất quán — đó là cơ chế chúng dùng để phân biệt dòng văn bản này với dòng tiếp theo. Trên một bản quét hoàn toàn phẳng, mỗi dòng văn bản nằm gọn trong một dải ngang, và công cụ tách rõ ràng dòng 1 khỏi dòng 2 khỏi dòng 3.

Nghiêng trang giấy chỉ 10 độ thôi, dải ngang gọn gàng đó sẽ trở thành một vệt xiên trải dài qua hàng chục hàng pixel. Logic phân đoạn dòng của công cụ bắt đầu gộp các ký tự từ những gì lẽ ra phải là hai dòng riêng biệt, hoặc chia một ký tự đơn thành hai dòng khác nhau theo cách nó “nghĩ.” Kết quả không phải là “kém chính xác một chút” — mà là kết quả hoàn toàn khác về bản chất, vì đơn vị cơ bản mà công cụ đọc (một dòng) không còn tương ứng với những gì thực sự có trong ảnh nữa.

Đây cũng là lý do vì sao một tấm ảnh trông hoàn toàn dễ đọc với bạn vẫn có thể cho ra kết quả OCR không thể đọc được. Hệ thị giác của bạn tự bù trừ cho một độ nghiêng 10 độ mà không cần bất kỳ nỗ lực ý thức nào — bạn thậm chí không nhận ra nó bị nghiêng. Một quy trình OCR đơn giản không có cơ chế bù trừ như vậy, và nó đọc đúng những pixel được đưa cho.

Cách khắc phục: làm thẳng trước khi nhận dạng, không phải sau

Bài học thực tế không phải là “cầm điện thoại cẩn thận hơn” — một chút nghiêng khi chụp một cuốn sách đang mở gần như không thể tránh khỏi, vì bạn không thể ép trang sách phẳng lên một máy quét. Cách khắc phục là tự động: phát hiện góc nghiêng và chỉnh sửa nó trước khi chạy nhận dạng văn bản, chứ không phải sau.

Một cách đáng tin cậy để phát hiện góc nghiêng mà không cần bất kỳ mô hình học máy nặng nề nào là phương pháp biểu đồ chiếu (projection profile method): xoay ảnh qua một loạt góc ứng viên, và với mỗi góc, đo xem sự phân bố mực theo từng hàng “nhọn” đến mức nào. Ở góc đúng, các dòng văn bản xếp thành những dải sắc nét (phương sai giữa các hàng cao); ở bất kỳ góc nào khác, mực bị nhòe qua các hàng (phương sai thấp). Góc cho ra phương sai cao nhất chính là góc cần chỉnh để làm thẳng ảnh.

Chạy bước chỉnh sửa này trước rồi sau đó mới nhận dạng văn bản đã đưa mọi trường hợp thử nghiệm bị nghiêng của chúng tôi trở lại độ chính xác từ 100% — cùng một trang, cùng một công cụ OCR, khác biệt duy nhất là làm thẳng nó trước.

Ý nghĩa của điều này nếu bạn đang số hóa một cuốn sách

  • Đừng lo lắng về tình trạng giấy. Sự ố vàng, phai màu nhẹ, và giảm độ tương phản do giấy cũ hầu như không tự nó ảnh hưởng đến độ chính xác. Một cuốn sách bìa mềm cũ số hóa tốt gần như tương đương một cuốn sách mới.
  • Hãy lo lắng về góc chụp. Ngay cả một độ nghiêng mà bạn không nhận ra bằng mắt thường cũng có thể là toàn bộ sự khác biệt giữa văn bản dùng được và kết quả vô nghĩa.
  • Chói sáng từ đèn flash ít ảnh hưởng hơn độ nghiêng, nhưng vẫn gây hại. Một điểm sáng chói trên giấy bóng có thể xóa trắng bất kỳ văn bản nào bên dưới nó — việc chỉnh góc nghiêng sẽ không sửa được một điểm mà ngay từ đầu không có mực nào đọc được.
  • Một công cụ tự động chỉnh góc nghiêng giải quyết đúng vấn đề thực sự. Công cụ chuyển trang sách thành văn bản của chúng tôi thực hiện đúng bước phát hiện và chỉnh sửa này ngay trong trình duyệt của bạn trước khi nhận dạng — không tải lên, không qua máy chủ, và được xây dựng riêng để giải quyết vấn đề độ nghiêng chứ không giả định rằng bạn đang đưa vào một bản quét phẳng.

Nếu bạn từng thử OCR trên ảnh chụp sách và từ bỏ vì kết quả không đọc được, có lẽ trang giấy không phải là vấn đề — mà gần như chắc chắn là vài độ nghiêng của góc chụp.

← Quay lại Blog