Model_18 / README.md
zhaospei's picture
Upload folder using huggingface_hub
36a7a80 verified
# 🧮 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%