trOCR: انقلابی در تشخیص متن با ترنسفورمرها
به دقت سطح انسانی در استخراج متن از محتوای چاپی، دستنویس و چندزبانه دست یابید.
API trOCR چیست؟
trOCR (تشخیص نوری کاراکتر مبتنی بر ترنسفورمر) یک مدل OCR پیشگامانه از مایکروسافت است که از قدرت معماریهای ترنسفورمر برای ارائه دقت بینظیر در تشخیص متن استفاده میکند. برخلاف سیستمهای OCR سنتی که صرفاً به شبکههای کانولوشنی متکی هستند، trOCR ترنسفورمرهای بینایی (ViTs) را با مدلسازی دنباله به دنباله ترکیب میکند و به آن امکان میدهد تا زمینه و روابط فضایی در متن را درک کند - حتی برای ورودیهای چالشبرانگیز مانند یادداشتهای دستنویس، اسکنهای با وضوح پایین یا اسکریپتهای پیچیده.
مزایای کلیدی trOCR:
- تشخیص شبهانسانی: عالی در خواندن دستنویس و متن تحریفشده
- پشتیبانی چندزبانه: مدلهای از پیش آموزشدیده برای انگلیسی، فرانسوی، آلمانی و بیشتر
- فرآیند یکپارچه: تشخیص و شناسایی متن را ترکیب میکند
- ادغام آسان: مبتنی بر کتابخانه Transformers هگینگ فیس
چرا trOCR را انتخاب کنیم؟
- 15-20% دقت بالاتر از مدلهای مبتنی بر CNN
- بیش از 90% دقت برای متن دستنویس
- پیشپردازش حداقلی: مقاوم در برابر تغییرات فونت و نویز
- پردازش کارآمد: بهینهشده برای GPU
نصب
trOCR به PyTorch یا TensorFlow و کتابخانه Hugging Face Transformers نیاز دارد:
نصب با PyTorch (GPU توصیه میشود)
pip install transformers torch torchvision
pip install datasets # اختیاری برای تنظیم دقیق
توجه: مدلهای microsoft/trocr-base
به ~1.5GB فضای ذخیرهسازی در هر نوع (چاپی/دستنویس) نیاز دارند. اطمینان حاصل کنید که فضای ذخیرهسازی و RAM کافی (8GB+ برای پردازش دستهای) دارید.
نمونه کدها
تشخیص متن دستنویس
تشخیص دستنویس
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")
image = Image.open("note_dastnevis.jpg").convert("RGB")
pixel_values = processor(image, return_tensors="pt").pixel_values
generated_ids = model.generate(pixel_values)
text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(f"متن استخراج شده: {text}")
پردازش اسناد چاپی
استخراج متن چاپی
from transformers import pipeline
from PIL import Image
ocr = pipeline("image-to-text", model="microsoft/trocr-base-printed")
image = Image.open("sanad.png").convert("RGB")
results = ocr(image)
for item in results:
print(item['generated_text'])
نکات پیشرفته
- پیشپردازش تصاویر با OpenCV
- تنظیم مدل برای نیازهای خاص
کاربردها
- دیجیتالیسازی آرشیوهای تاریخی
- پردازش خودکار فاکتورها
- فناوریهای دسترسیپذیری