# 🧮 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%