Bỏ qua đến nội dung
AI Portal Docs
Trên trang này Bảng mã văn bản 1/10

Đọc một tệp trả về các mục (section): mỗi mục mang văn bản, các tiêu đề hoặc tên cột phía trên, và vị trí của nó. Byte được chuyển thành văn bản trước; các trang không có lớp văn bản dùng được sẽ được đọc từ ảnh, bằng OCR và — ở các mức đọc sâu hơn — bằng mô hình thị giác.

Quy tắc chính

  1. Từ chối xảy ra ngay khi tải lên, lúc hộp thoại còn mở, không phải cuối quá trình nạp.
  2. Bảng mã tiếng Việt được nhận diện, và dấu thanh được giữ qua mọi bước.
  3. OCR đọc mọi trang scan trước; mô hình chỉ đọc ở Text + figures hoặc Full rewrite.
  4. Mô hình không bao giờ đọc một trang mà không có gì để tự đối chiếu.
  5. Mỗi đoạn đều ghi văn bản được lấy bằng cách nào.

Bảng mã văn bản

Quy tắc đầu tiên khớp sẽ được dùng.

Dấu hiệuBảng mã
Byte order markTheo đánh dấu
Cứ mỗi byte thứ hai là số 0UTF-16 — kiểm tra trước UTF-8, vì byte NUL vẫn hợp lệ trong UTF-8
Giải mã được bằng UTF-8UTF-8
Có dấu thanh trên nguyên âmBảng mã tiếng Việt
Có chữ hoa giữa từBảng mã Tây Âu; chữ hoa đó là một byte bị đọc sai

Chọn bộ đọc

Bộ đọc được chọn theo loại khai báo, tên tệp quyết định phần loại không nói được: trình duyệt Linux báo Markdown và CSV là nhị phân chung, còn Windows báo CSV thường là Excel cũ. Tệp mà cả hai không nêu được thì quyết định theo byte. Ký tự được đọc như văn bản thuần, nên một bản dump SQL, playbook YAML hay module Terraform được lập chỉ mục mà không ai phải thêm đuôi tệp vào danh sách; byte không phải ký tự thì bị từ chối.

Ảnh là một trang không có lớp văn bản — giống trang PDF scan — nên ảnh chụp tài liệu hay trang lưu dạng JPEG, PNG được đọc theo cùng cách, không cần render trước: tệp đã lưu được đưa cho OCR, và cho mô hình theo đúng loại của nó chỉ khi tệp yêu cầu Text + figures hoặc Full rewrite.

Định dạng bị từ chối

  • Tệp nén, bản ghi âm/ghi hình và phông chữ — theo loại hoặc đuôi tệp, nhờ đó lượt đồng bộ bỏ qua được trước khi tải.
  • Mã trang web (HTML) — chữ nằm lẫn giữa thẻ và không có gì gỡ chúng. Việc xem tệp đó trên màn hình là chuyện khác (xem màn hình xem lại tài liệu).
  • Word, Excel và PowerPoint trước 2007 — định dạng nhị phân không bộ đọc nào ở đây đọc được; lời từ chối nêu ứng dụng có thể chuyển đổi tệp.

Route tải lên đã giữ byte, nên nó trả lời đúng câu hỏi mà bộ trích xuất sẽ hỏi. Lượt đồng bộ theo lịch hỏi hai lần: theo tên trước khi tải và theo byte khi nhận, tính tệp không đọc được là bỏ qua.

Mục theo từng định dạng

Định dạngMụcPhía trên mỗi mụcVị trí
Văn bản thuần, JSON, mọi tệp có byte là ký tựCả tệpKhông cóKhông có
MarkdownMỗi tiêu đề một mụcCác tiêu đề phía trênĐường dẫn tiêu đề
CSV, TSVMỗi dòng một mụcDòng tiêu đề, và tên bảng nếu cóSố dòng
PDFMỗi trang một mục, bỏ phần đầu/chân trang lặp lại; trang do mô hình đọc được tách theo tiêu đềBookmark bao trang, rồi tiêu đề của mô hìnhSố trang, và số in trên trang khi khác
WordĐầu trang và chân trang là một khối, rồi mỗi tiêu đề một mục, cộng mỗi dòng bảngTiêu đề, và tiêu đề riêng của bảngDòng bảng
ExcelMỗi dòng của mỗi sheet hiển thị, bỏ dòng và cột ẩnTên sheet, và dòng tiêu đề cùng dải phía trênSheet và dòng
PowerPointMỗi slide được trình chiếu, kèm ghi chú và chữ SmartArtTiêu đề slideSố slide

Định dạng ngày và phần trăm được hiển thị đúng — nếu không, ngày giao hàng sẽ thành số nguyên năm chữ số và mười hai phần trăm thành 0.12. Các số khác giữ nguyên như lưu, vì chuỗi số trần là thứ tìm kiếm chính xác khớp.

Bị bỏ lạiHệ quả
Thứ tự đọc nhiều cột trong PDF có lớp văn bảnKhông xử lý
Đánh số tiêu đề tự động của WordTiêu đề đánh số 5.2 chỉ còn phần chữ
Sheet, dòng, cột ẩn; slide đánh dấu không trình chiếuBỏ qua
Ảnh nằm trong tài liệuBỏ qua; ảnh tải lên riêng được đọc như một trang

Tệp Markdown hoặc văn bản có thể nhúng ảnh dạng base64 dưới dấu ảnh. Chúng được thay bằng chữ image trước khi cắt tệp thành mục; nếu để nguyên, một nhát cắt có thể rơi vào giữa ảnh, tốn một lần embedding cho đoạn không có chữ và bị trích dẫn làm bằng chứng cho câu trả lời.

Trang mà lớp văn bản không phục vụ được

Trang scan không có lớp văn bản, còn bảng số liệu thì bị dẹt thành một dòng số không có cột. Cả hai được đọc từ ảnh trang, ở mọi mức đọc.

  1. OCR đọc mọi trang như vậy trước

    Tesseract, chạy trong subprocess, ở độ phân giải chọn để đọc ký tự chứ không theo cách tính phí của mô hình. Ở Text và Text + figures, văn bản OCR là bản chép của trang dù độ tin cậy thế nào, và không gọi mô hình. Độ tin cậy trung bình theo từ được lưu trên dòng của trang.

  2. Phát hiện bảng có kẻ ô

    OCR đo tỷ lệ token chỉ là một ký hiệu kẻ — dấu gạch đứng, gạch chéo hoặc gạch ngang ở chỗ trang in một đường kẻ. Từ ngưỡng do bản triển khai đặt trở lên, trang là bảng kẻ ô: mọi ký tự đọc đúng nhưng các ô trả về thành một khối chữ liền.

  3. Trang có kẻ ô được dựng lưới

    Điểm ảnh tối được chiếu dọc trang theo từng dải ngắn và kết quả các dải được gom cụm, ghép lại đường kẻ scan bị lệch. Ngưỡng phân tách mực/giấy là phương pháp Otsu, lấy từ histogram của chính trang. Mỗi từ OCR được đặt vào ô theo toạ độ của nó, và các ký hiệu kẻ của OCR bị bỏ.

  4. Ở Full rewrite, mô hình đọc mọi trang

    Trang mà lớp văn bản không phục vụ được đi kèm văn bản OCR, hoặc lưới nếu có. Trang khác đi kèm lớp văn bản của chính nó, vốn chính xác từng ký tự, và không bao giờ được render cho OCR.

Đo trên một bộ kiểm thử tiếng Việt 422 trang, với bộ dò đường kẻ đánh dấu các trang có lưới in: mọi bảng rộng (từ tám cột) đều có tỷ lệ ký hiệu kẻ từ 4,17% trở lên. Hai nhóm chồng nhau ở mức thấp hơn — trang có một khối kẻ nhỏ đạt 12,98% — nên ngưỡng là giá trị lớn nhất vẫn bắt được mọi bảng rộng. Trên cùng 422 trang, ngưỡng Otsu dao động từ 136 đến 252, nên không con số cố định nào dùng được; bảng rộng nhất từ ba số cột khác nhau giữa các trang trở về một.

Có lưới đi kèm, mô hình đặt dấu đúng cột. Đọc văn bản dẹt, nó phải đếm ô trống ngang trang để đặt một chữ A, và trên bản scan 25 cột nó gộp thành hai; có lưới, các dấu đến đúng các cột uỷ ban ở mép phải mà cách đọc dẹt bỏ mất hoàn toàn. Tiêu đề nhiều tầng không có đường kẻ chạy hết chiều ngang, nên mô hình được yêu cầu đọc tiêu đề từ ảnh và đặt cho mỗi cột một tên.

Vì sao giữ cả hai bộ đọc

Chúng sai theo những kiểu khác nhau. Mô hình đọc bản scan mờ sẽ lấp chỗ trống bằng hiểu biết ngôn ngữ sẵn có — trên một trang thật, nó viết ra tên một công ty không hề in trên trang, bằng câu văn trôi chảy mà không cơ chế tự động nào bắt được. Tesseract không bịa ra tên; khi sai, nó ra ký tự lộn xộn mà người đọc nhìn thấy. Vì vậy mô hình không bao giờ được đưa trang mà không có gì để đối chiếu, và được dặn: OCR là bằng chứng về tên, mã, số và ngày; ảnh thắng khi hai bên khác nhau ở một ký tự; không chép khoảng trắng và thứ tự đọc của OCR.

Dòng của trang giữ độ tin cậy OCR và bộ đọc đã tạo bản chép. Không ngưỡng nào dựa vào độ tin cậy: mô hình có đọc trang hay không chỉ phụ thuộc mức đọc của tệp.

Trang đến mô hình thế nào

  • Bộ trích xuất chỉ quyết định trang nào đủ điều kiện — báo từng trang kèm bookmark và số in — và không bao giờ gọi mô hình, nên mọi lần gọi diễn ra ở nơi được định giá và tính tiền. Đọc trang là việc của mô hình nền.
  • Không dùng Amazon Textract: nó chỉ đọc chữ Latin cho tiếng Anh, Tây Ban Nha, Đức, Pháp, Ý và Bồ Đào Nha, và làm mất hoặc đọc sai dấu tiếng Việt. Mô hình thị giác qua LiteLLMLiteLLM (cổng mô hình)LiteLLM (model gateway)Cổng mà mọi lệnh gọi mô hình đi qua. Nó định tuyến tới Bedrock, áp khoá và ngân sách của từng phòng ban, và ghi chi phí từng lệnh gọi.Mở trong Thuật ngữ trên Bedrock đọc được tiếng Việt và nằm trong tài khoản AWS của bạn.
  • Mỗi trang được gửi lên dạng ảnh, vì Bedrock xử lý khối tài liệu PDF bằng cách trích lớp văn bản, nên trang scan sẽ đến trống rỗng. Cạnh dài nhất là kích thước mô hình nhìn.
  • Raster hoá là subprocess, mỗi dải trang liên tiếp một lần gọi. Nó ghi JPEG ở chất lượng mà không điểm ảnh nào của trang tiếng Việt lệch quá năm phần trăm so với bản PNG, nên dấu tiếng Việt còn nguyên sau khi mã hoá. Các trang được đọc vài trang cùng lúc, giới hạn bởi một thiết lập.
  • Chỉ dẫn yêu cầu chép lại: mọi chữ giữ nguyên ngôn ngữ, tiêu đề là tiêu đề, bảng là bảng Markdown với mỗi giá trị dưới đúng cột in, số và mã đúng như in, không tóm tắt, không dịch.
  • Câu trả lời được tách theo tiêu đề của mô hình và đặt dưới bookmark của trang tại vị trí của nó, với số trang in ở đầu phần đầu tiên không phải bảng. Đầu trang lặp lại bị bỏ như với lớp văn bản. Mọi đoạn chép lại đều được đánh dấu, vì bản chép có thể đọc sai một chữ số.

Trả lời rỗng và bị cắt. Trả lời rỗng là chưa đọc được gì, và giữ văn bản OCR. Trả lời bị cắt ở giới hạn đầu ra giữ mọi thứ phía trên chỗ cắt — đó là chữ của chính trang theo đúng cột — và chỉ bỏ dòng cuối viết dở, vì một dòng bảng thiếu các ô cuối sẽ rơi vào sai tên cột. Trang lỗi được hỏi thêm một lần, rồi ghi là không đọc được; tài liệu hiển thị số trang không đọc được.

Cắt lát bảng rộng

Nhà cung cấp giới hạn một ảnh ở 1.568 token hình ảnh, mỗi token 28 × 28 pixel, tính theo ảnh chứ không theo trang. Trang khổ A4 hay A3 đến mô hình ở khoảng 1318 × 932 pixel dù gửi thế nào, nên giấy càng lớn chữ càng nhỏ: một ký tự cao 20 pixel ở 300 dpi chỉ còn khoảng 5 trên bản scan A3.

Ở Full rewrite, trang có đường kẻ in mô tả một bảng được cắt thành bốn lát dọc, mỗi lát gửi ở mức tối đa, đi chung một lần gọi như các phần của một trang. Nhát cắt rơi vào đường kẻ gần nhất với một phần tư, một nửa và ba phần tư chiều ngang, nên lát kết thúc ở ranh giới cột. Trang có ít hơn tám đường kẻ dọc — mọi trang không phải bảng rộng — được gửi nguyên, cũng như mọi trang gửi để mô tả hình.

Tám trang bảng A3, không kèm OCRLoại từ khôi phục được (so với Tesseract)Viết ra nhưng không có trên trangĐúng số cột in
Nguyên trang61,2%20,7%1 trang
Bốn lát64,2%19,9%3 trang

Một trang bị sụp khi đọc nguyên, tiêu hết ngân sách đầu ra cho một dòng khoảng 15.930 ô trống, nhưng đọc đúng khi cắt lát. Chi phí mỗi trang không đổi: chữ mô hình viết ra nặng gấp năm đến mười lần ảnh.

Điểm dừng trước và trong lần chạy

Tệp cần nhiều trang đọc bằng mô hình hơn giới hạn của bản triển khai bị từ chối nguyên tệp thay vì đọc một nửa, và tệp Text + figures có nhiều trang có hình hơn giới hạn cũng vậy. Tổ chức chưa gán mô hình nền sẽ làm lỗi mọi tệp đọc ở hai mức sâu.

Điểm dừngKhi nào
Chưa gán mô hình nềnTrước khi tốn token nào
Mô hình được gán không đọc được ảnhTrước khi tốn token nào
Sau OCR, số trang cần mô hình vượt giới hạnTrước khi tốn token nào; tệp bị từ chối nguyên
Một trang không render đượcTrong lần chạy
Lần chạy chết và lần quét đã khởi động lại quá nhiều lầnSau trần số lần khởi động lại
Mọi trang đủ điều kiện đều không đọc đượcTrong lần chạy

Bên dưới

Bộ đọc Office

Bảng tính và slide được đọc trực tiếp theo định dạng tệp: bản SheetJS được duy trì không có trên npm, còn gói npm đã cũ và có cảnh báo bảo mật đã biết. Ba định dạng Office dùng chung một container và một bộ đọc.

Liên quan

AI Portal Docs
EN VI