6.2 KiB
Kế hoạch phủ toàn bộ nội dung PDF (text + bảng + công thức + outlier)
Trạng thái: kế hoạch đang thực thi, lập 2026-07-31. Các ô ghi [chờ đo]
là số liệu chưa có tại thời điểm viết — không được trích dẫn cho đến khi
điền bằng kết quả chạy thật.
Mục tiêu, phát biểu chính xác
Có hai mục tiêu thường bị gộp làm một. Kế hoạch này chỉ nhận mục tiêu A cho cuối ngày, và phát biểu rõ B là việc dài hơn.
| Mục tiêu | Nhận cho cuối ngày? | |
|---|---|---|
| A | Phủ toàn bộ, không mất âm thầm: mọi ký tự trong 1668 trang đều rơi vào đúng một rổ đầu ra hoặc vào rổ unassigned đếm được; mọi đối tượng không đáng tin đều bị gắn cờ tường minh; provenance giữ nguyên |
Có |
| B | Đúng 100% đã chứng minh: mọi bảng và công thức đã đối chiếu ground truth | Không — cần đối chiếu thủ công toàn bộ, là công người, không phải công máy |
Tuyên bố "parse được toàn bộ" chỉ hợp lệ theo nghĩa A. Bất kỳ báo cáo nào cũng phải nói rõ đang nói về A hay B.
Vì sao không xây một bộ reconstruct tổng quát
Chưa biết trong sách có bao nhiêu bảng, bao nhiêu dạng cấu trúc, bao nhiêu trang continuation. Xây một bộ tổng quát trước khi biết phân bố dạng là đầu tư mù. Thứ tự bắt buộc: kiểm kê → phân loại dạng → chọn đường xử lý theo từng dạng → mới code.
Giai đoạn
A. Kiểm kê toàn corpus (đang chạy)
Script tạm ingestion/scratch/inventory_tables_formulas.py, scope toàn bộ
1668 trang, xuất provenance từng đối tượng để soi lại được.
| Đại lượng | Kết quả |
|---|---|
| Số bảng pdfplumber tìm được / số trang có bảng | [chờ đo] |
| Phân bố số cột | [chờ đo] |
| Ứng viên continuation (bảng ở đầu trang/cột, không header) | [chờ đo] |
| Lưới toàn số ≥4 cột (ứng viên 2D lookup, catalog item 7) | [chờ đo] |
| Ứng viên công thức: fraction_bar / PUA / small_font_numeric | [chờ đo] |
Kiểm kê này cố tình thiên về recall: bắt thừa còn hơn bỏ sót; độ chính xác đo sau bằng kiểm tra trực quan.
B. Sổ cái phủ ký tự — đây là eval chứng minh "trích xuất được"
Với mỗi trang trong 1668 trang, đối chiếu:
chars_trên_trang_gốc == chars_vào_section_text
+ chars_vào_ô_bảng
+ chars_vào_vùng_công_thức
+ chars_vào_front_matter / phụ lục
+ chars_unassigned
unassigned phải ra một con số cụ thể kèm danh sách trang/bbox, không
phải một lời khẳng định. Đây là điểm khác biệt so với mọi eval trước đó
trong dự án: recall/precision hiện tại chỉ đo phát hiện ranh giới chuyên
luận, không đo nội dung; sổ cái này đo nội dung ở mức ký tự, whole-document,
không phải mẫu.
Giới hạn phải nói rõ: sổ cái chứng minh không mất, không chứng minh
đúng thứ tự hay đúng ngữ nghĩa. Thứ tự đã có kiểm tra riêng
(scan_reading_order, scan_glyph_order); ngữ nghĩa thuộc mục tiêu B.
C. Định tuyến theo dạng, mỗi dạng một đường
| Dạng | Xử lý | Metadata bắt buộc |
|---|---|---|
| Bảng có kẻ khung, header dạng chữ | Trích ô thật | table_id, row, col, page, bbox |
| Bảng ngắt trang/cột (catalog item 5-6) | Gắn lại header gốc vào phần tiếp | thêm continues_from |
| Lưới toàn số 2D (item 7) | Không chunk thành text | do_not_cite: true + giữ công thức đi kèm |
| Công thức 1D (mũ inline) | Giữ nguyên text | formula_kind: "1d" |
| Công thức 2D (có fraction bar) | Gắn cờ, giữ bbox + ảnh crop | needs_review: true |
| Ký tự PUA (item: mũi tên lỗi) | Bảng thay thế tường minh | pua_substituted |
Mở/đóng theo SOLID: thêm một dạng mới = thêm một entry định tuyến, không sửa code đang chạy.
D. Vùng ngoài chuyên luận
General chapters (tr. 37-98) và phụ lục (tr. 1497-1528) hiện nằm ngoài phạm vi hoàn toàn — pipeline chỉ sinh 682 chuyên luận. Hai vùng này phải hoặc vào sổ cái phủ, hoặc bị loại trừ tường minh kèm con số ký tự bị loại. Không được im lặng bỏ qua.
E. Artifact bằng chứng
Mỗi đối tượng bị gắn cờ sinh một ảnh crop theo bbox đặt cạnh text trích ra, để mọi tuyên bố eval soi tận mắt được. Tự đọc ảnh để kiểm chứng, không đẩy việc kiểm tra sang người dùng.
Số đo cần báo riêng, không gộp
Theo yêu cầu tránh gộp chỉ số che lấp điểm yếu:
- detection recall của detector trên golden set — bắt được bao nhiêu % đối tượng thật
- false positive — bắt nhầm bao nhiêu
- số đối tượng chưa phân loại — bao nhiêu cái detector không biết xếp vào đâu
- structural accuracy — bảng tái tạo đúng hàng/cột bao nhiêu %
- semantic fidelity — nội dung ô đúng bao nhiêu %
Detector dựa trên bbox là heuristic: nó tìm ứng viên, không chứng minh đã bắt hết mọi phân số, chỉ số, căn, ma trận hay lưới 2D. Mọi báo cáo phải đi kèm ba số đầu, không được nói suông "detector hoạt động tốt".
Nợ kỹ thuật đã biết, chưa xử lý
- Ground truth từ Mục lục tra cứu chưa được làm sạch: chứa entry tham
chiếu chéo lặp (ví dụ
"- CoA reductase, 285"xuất hiện hơn 10 lần trong danh sách unmatched). Mẫu số 1064 hiện tại vì thế không đáng tin để chốt; ADR 0003 dùng mẫu số 725 nên hai lần đo không so sánh trực tiếp được. - Nội dung text chuyên luận chưa từng được đo độ chính xác so với nguồn.