| # 🧮 Pix2Text‑MFR: Nhận dạng Công Thức Toán Học Viết Tay | |
| **Mô hình** `breezedeus/pix2text-mfr` sử dụng kiến trúc **TrOCR (vision-encoder-decoder)** và đã được huấn luyện lại chuyên biệt trên ảnh công thức toán học để chuyển đổi ảnh thành biểu diễn **LaTeX**. | |
| --- | |
| ## 📌 Mục Đích | |
| Chuyển đổi hình ảnh chứa **công thức toán học** (in hoặc viết tay) thành **chuỗi LaTeX**. | |
| --- | |
| ## ✅ Tính năng | |
| - Nhận dạng công thức in và viết tay (handwritten). | |
| - Ra kết quả dưới dạng chuỗi LaTeX có thể biên dịch. | |
| - Sử dụng kiến trúc TrOCR nhỏ gọn, có thể chạy trên CPU hoặc GPU. | |
| - Kết quả đạt **Character Error Rate thấp (CER ≈ 2.1%)** trên tập thử nghiệm 485 ảnh thật :contentReference[oaicite:1]{index=1}. | |
| --- | |
| ## ⚠️ Hạn chế | |
| - Chỉ hiệu quả với **ảnh công thức toán học**, không áp dụng cho ảnh khác. | |
| - Độ chính xác phụ thuộc vào chất lượng ảnh (nhiễu, mờ). | |
| - Không hiệu quả nếu ảnh chứa chữ thường, ký tự lẫn trong văn bản phức tạp. | |
| --- | |
| ## 🛠 Cài đặt | |
| ```bash | |
| pip install transformers pillow optimum[onnxruntime] | |
| ``` | |
| Ngoài ra nếu cần xử lý văn bản và hình đa dạng, có thể cài thêm Pix2Text toolkit để hỗ trợ xử lý layout và văn bản chung: | |
| ```bash | |
| pip install pix2text>=1.1 | |
| ``` | |
| ## 🧪 Cách sử dụng | |
| ⭐ Phương pháp 1: Sử dụng mô hình trực tiếp (chỉ công thức) | |
| ```python | |
| from PIL import Image | |
| from transformers import TrOCRProcessor | |
| from optimum.onnxruntime import ORTModelForVision2Seq | |
| processor = TrOCRProcessor.from_pretrained("breezedeus/pix2text-mfr") | |
| model = ORTModelForVision2Seq.from_pretrained("breezedeus/pix2text-mfr", use_cache=False) | |
| images = [Image.open(fp).convert("RGB") for fp in ['formula1.png', 'formula2.jpg']] | |
| pixel_values = processor(images=images, return_tensors="pt").pixel_values | |
| generated_ids = model.generate(pixel_values) | |
| latex_texts = processor.batch_decode(generated_ids, skip_special_tokens=True) | |
| print(latex_texts) | |
| ``` | |
| ## 🛠 Phương pháp 2: Sử dụng cùng với Pix2Text | |
| Dùng Pix2Text để nhận diện vùng công thức và văn bản hỗn hợp: | |
| ```python | |
| from pix2text import Pix2Text | |
| p2t = Pix2Text.from_config() | |
| # Avatar images containing mixed text + formula | |
| outs = p2t.recognize("mixed_sample.png", file_type='text_formula', return_text=True) | |
| print(outs) | |
| ``` | |
| ## 📈 Hiệu Năng | |
| Tập thử nghiệm: 485 ảnh lấy từ người dùng Pix2Text Online | |
| CER (Character Error Rate): | |
| Pix2Text-MFR (open-source): 2.1% | |
| Texify: 5.5%, Latex-OCR: 6.2% |