papero: Công cụ phân tích PDF siêu nhẹ, giữ nguyên bố cục, bảng biểu và công thức

Công nghệ01 tháng 10, 2026·7 phút đọc

papero là thư viện mã nguồn mở giúp trích xuất cấu trúc tài liệu PDF chỉ với CPU, không cần mô hình học máy. Công cụ này chuyển PDF sang Markdown, JSON, Word hay Excel mà vẫn giữ đúng thứ tự đọc, bảng biểu, công thức LaTeX và tọa độ của từng khối nội dung — tất cả chạy được ngay trên trình duyệt hoặc qua API.

papero: Công cụ phân tích PDF siêu nhẹ, giữ nguyên bố cục, bảng biểu và công thức

papero: Phân tích PDF giữ nguyên bố cục chỉ với CPU, không cần GPU

Trích xuất văn bản từ PDF thì dễ, nhưng lấy lại cấu trúc của tài liệu — cột nào đọc trước, dòng nào là bảng, công thức nằm ở đâu — mới là điều quyết định đầu ra có dùng được cho RAG, tìm kiếm hay LLM hay không. papero giải quyết bài toán đó bằng hình học thuần túy, nhờ vậy vẫn chạy nhanh trên CPU của laptop mà không cần mô hình học máy nào.

Dự án mã nguồn mở này do Beatriz Almeida phát triển, cho phép chuyển PDF sang Markdown, JSON, Word và Excel, đồng thời giữ lại vị trí của từng khối nội dung.

Vì sao papero đáng chú ý?

Hầu hết công cụ phân tích PDF hiện nay đều phải "nuôi" bằng PyTorch và các mô hình học máy nặng nề. papero đi theo hướng ngược lại: chỉ dùng CPU, không mô hình ML, chạy được ngay trong trình duyệt, bằng Python hoặc dưới dạng API.

Các tính năng chính gồm:

  • Thứ tự đọc thông minh: bài báo hai hoặc ba cột được đọc theo từng cột, tự động tách riêng phần đầu trang, chân trang, số trang và logo lặp lại.
  • Bảng biểu thực thụ: bảng có kẻ ô, bảng không viền và cả bảng LaTeX booktabs đều được tái tạo thành hàng và cột, kể cả ô nhiều dòng. Xuất được ra CSV hoặc Excel.
  • Công thức toán học: chỉ số trên, chỉ số dưới và ký hiệu toán học được chuyển thành LaTeX (ví dụ E = mc^{2}), kèm theo ảnh cắt của công thức.
  • Vị trí của mọi thứ: mỗi khối đều có bounding box — có thể trích dẫn chính xác vị trí trong câu trả lời RAG, vẽ đè lên trang hoặc cắt ra.
  • Hình vẽ và biểu đồ: ảnh và biểu đồ vector được cắt thành PNG, giữ nguyên chú thích, nhãn trục và chú giải.
  • Xuất ngược về Word: giữ căn lề, thụt đầu dòng, giãn dòng, chữ đậm và phông chữ, nên file .docx trông giống trang gốc.

Ngoài ra còn có những xử lý tinh tế: dấu được vẽ tách rời trong PDF LaTeX (Computa¸ca˜o → Computação), loại bỏ văn bản trắng vô hình do các công cụ tạo biểu mẫu thêm vào, trang quét được đưa qua OCR, và các định dạng DOCX/PPTX/XLSX/EPUB/HTML được đọc qua Apache Tika.

Biểu tượng các mô hình ML và giấy phép của dự ánBiểu tượng các mô hình ML và giấy phép của dự án

Bắt đầu chỉ với một dòng lệnh

Cài đặt gói Python:

pip install pdf-text-api

Sau đó sử dụng ngay:

from pdf_text_api import extract

doc = extract("paper.pdf")
print(doc.to_markdown())

Hoặc bỏ qua bước cài đặt: mở ứng dụng trình duyệt, kéo thả file PDF vào và xuất ra định dạng bạn cần. Điểm đáng chú ý là PDF không bao giờ rời khỏi máy của bạn khi dùng ứng dụng web.

from pdf_text_api import extract, extract_text

doc = extract("paper.pdf", images=True)
doc.tables[0].rows        # [["Model", "Accuracy"], ["Base", "0.81"], ...]
doc.formulas[0].latex     # "E = mc^{2}"
doc.figures[0].image.data # PNG bytes

for block in doc.pages[0].blocks:   # theo thứ tự đọc, kèm vị trí
    print(block.type, block.bbox, block.text[:60])

doc.to_html()             # giữ căn lề và thụt đầu dòng
doc.to_dict()             # JSON đầy đủ

extract("slides.pptx").to_markdown()   # mọi định dạng Apache Tika đọc được
extract_text("contract.pdf").text      # nhanh nhất: chỉ lấy văn bản sạch

Công cụ dòng lệnh (CLI) cũng rất tiện:

pdf-text-api extract paper.pdf -o paper.md --images   # Markdown + thư mục images/
pdf-text-api extract paper.pdf -o paper.json          # định dạng suy ra từ phần mở rộng
pdf-text-api extract paper.pdf -f csv -o tables.csv   # chỉ lấy bảng
pdf-text-api extract paper.pdf -p 1-5 -f html
pdf-text-api extract paper.pdf --fast                 # chỉ lấy văn bản sạch
pdf-text-api serve --port 8000                        # API + ứng dụng trình duyệt

REST API và Docker

Chỉ cần một lệnh docker compose up là có sẵn API, Apache Tika, Tesseract và ứng dụng trình duyệt chạy ở cổng 8000:

curl -F "[email protected]" "localhost:8000/v1/extract?format=markdown"
curl -F "[email protected]" "localhost:8000/v1/extract?format=zip&images=true" -o paper.zip
curl -F "[email protected]" "localhost:8000/v1/extract?per_page=true"     # khối + vị trí

Tài liệu tương tác có sẵn tại /docs.

bản demobản demo

Cấu trúc đầu ra

Mỗi khối đều biết mình là gì và nằm ở đâu:

{
  "type": "table",
  "bbox": [56.7, 294.8, 481.9, 374.2],
  "rows": [["Model", "Accuracy"], ["Base", "0.81"]],
  "caption": "Table 1: Comparison between models."
}

Các loại khối bao gồm: heading (kèm cấp độ), paragraph, list_item (kèm dấu đầu dòng), table (kèm hàng), figure, formula (kèm LaTeX), caption, code, và — được tách riêng khỏi phần văn bản — header, footer, page_number. Bounding box có dạng [x0, y0, x1, y1] tính theo point, gốc tọa độ ở góc trên bên trái trang.

Hiệu năng

Trên các bài báo arXiv dày đặc (nhiều cột, công thức, bảng biểu, hình vẽ) chạy trên một CPU laptop, không GPU:

  • papero · fast: trả về văn bản sạch.
  • papero · structured: tái tạo thứ tự đọc, bảng, công thức và hình vẽ — 0 lỗi trên 54 bài báo, trung vị 39 ms mỗi trang.

So với các công cụ khác:

Tiêu chípaperoDoclingMarker
Giấy phépMITMITGPL
Cần mô hình ML / PyTorchKhôngCóCó
Thứ tự đọc đa cộtĐầy đủĐầy đủĐầy đủ
Bảng có cấu trúcCóCóCó
Công thứcLaTeX từ glyph + ảnhCóCó
Bounding boxCóCóCó
DOCX / PPTX / XLSX / EPUBCóCóMột phần
Chạy hoàn toàn trong trình duyệtCóKhôngKhông

Các công cụ dựa trên học máy vẫn thắng ở những bố cục rất bất quy tắc và toán học phức tạp (phân số xếp chồng, ma trận) — papero đưa ra công thức dưới dạng LaTeX gần đúng kèm ảnh cắt để không mất mát thông tin.

Nguyên lý hoạt động

Hai engine chạy song song trên cùng một file:

  1. Layout engine trên PDFium đọc từng glyph cùng vị trí, phông chữ và kích thước, cộng với mọi đường kẻ và hình ảnh, rồi tái tạo cột, bảng, công thức, danh sách và hình vẽ bằng thuật toán XY-cut nhận biết cột.
  2. Apache Tika bổ sung metadata, tiêu đề PDF gắn thẻ, OCR (Tesseract) và hỗ trợ mọi định dạng không phải PDF.

Ứng dụng trình duyệt chạy cùng thuật toán đó nhưng được chuyển sang JavaScript trên pdf.js, và CI kiểm tra từng khối để đảm bảo hai engine cho kết quả khớp nhau.

Hạn chế cần lưu ý

  • Toán học: LaTeX được tái tạo từ glyph — phân số xếp chồng, ma trận và căn lớn sẽ ra dạng tuyến tính (ảnh cắt luôn có sẵn để bù lại).
  • Bảng không viền với khoảng cách giữa các cột quá hẹp có thể bị đọc thành văn bản.
  • PDF quét cần OCR, chạy trên đường dẫn server (Tesseract có trong Docker image).
  • Xuất Word/Excel hiện chỉ có trong ứng dụng trình duyệt.

Dành cho lập trình viên Việt Nam

Với các đội ngũ xây dựng hệ thống RAG hoặc xử lý tài liệu hàng loạt, papero là lựa chọn đáng cân nhắc vì giấy phép MIT thoáng, không đòi hỏi hạ tầng GPU đắt đỏ, và có thể chạy hoàn toàn offline — phù hợp với yêu cầu bảo mật dữ liệu nội bộ. Việc hỗ trợ sẵn tiếng Bồ và tiếng Anh cho OCR cũng là điểm cộng, dù người dùng có thể cấu hình thêm ngôn ngữ Tesseract cho tiếng Việt.

Nếu bạn đang cần một giải pháp nhẹ nhàng thay thế cho Docling hay PyMuPDF mà vẫn muốn giữ được bố cục phức tạp của tài liệu, papero rất đáng để thử — chỉ mất khoảng 30 giây ngay trên trình duyệt.

Tìm thấy một file PDF mà papero xử lý sai? Đó là loại issue hữu ích nhất bạn có thể mở — hãy đính kèm file (hoặc một trang của nó) và mô tả kỳ vọng của bạn.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗