trOCR: Трансформатор ашиглан текст таних технологийн хувьсгал
Хэвлэгдсэн, гараар бичигдсэн, олон хэл дэх бичвэрийг хүний түвшинд таних.
trOCR API гэж юу вэ?
trOCR (Трансформатор дээр суурилсан OCR) нь Microsoft-ийн боловсруулсан OCR загвар бөгөөд трансформатор архитектур ашиглан текст танихдаа хамгийн өндөр нарийвчлалд хүрдэг. Энгийн OCR системүүд зөвхөн convolutional сүлжээг ашигладаг бол trOCR нь vision transformers (ViT) болон дарааллыг загварчлах технологийг хослуулж, текст дэх контекст болон орон зайн хамаарлыг ойлгодог. Энэ нь гараар бичигдсэн тэмдэглэл, муу чанарын сканнердсан зураг, нарийн төвөгтэй бичлэг зэрэгт ч амжилттай ажилладаг.
trOCR-ийн гол давуу талууд:
- Хүний бичвэртэй төстэй таних: Гараар бичигдсэн, хэвтээ бичвэрийг энгийн OCR-ээс илүү нарийвчлалтай танидаг.
- Олон хэл дэмжих: Англи, франц, герман зэрэг хэл дээр урьдчилан сургасан загвартай, бусад хэл дээр тохируулах боломжтой.
- Бүрэн автомат: Текст олох, таних үйл явцыг нэгтгэсэн.
- Хялбар интеграцчилалт: Hugging Face-ийн Transformers сан дээр суурилсан тул ажиллагаанд хялбар нийлүүлдэг.
Түүхийн баримт бичиг дижиталчлахаас эхлээд нэхэмжлэх боловсруулах хүртэл trOCR бодит амьдрал дээр OCR-ийн шинэ стандартыг тогтоодог.
Яагаад trOCR-г сонгох вэ?
- Трансформатор технологи: CNN дээр суурилсан загваруудаас IAM Handwriting гэх мэт тестүүд дээр 15-20% илүү нарийвчлалтай.
- Гараар бичигдсэн текстэд зориулагдсан:
trocr-base-handwritten
загвар нь гараар бичигдсэн текстэд 90%+ нарийвчлалтай. - Бэлдэц бага шаарддаг: Фонт, эргэлт, чимээ шуугианд тэсвэртэй.
- Зэрэгцээ боловсруулалт: GPU дээр олон зураг зэрэг боловсруулж, хурдыг нэмдэг.
- Тохируулах боломжтой: Өөрийн өгөгдлөөр (эмийн жор, баримт гэх мэт) сургах боломжтой.
Суулгах
trOCR нь PyTorch эсвэл TensorFlow болон Hugging Face Transformers санг шаарддаг. GPU ашиглахыг зөвлөж байна:
PyTorch-ээр суулгах (GPU зөвлөмжтэй)
pip install transformers torch torchvision
pip install datasets # Тохируулахдаа заавал биш
Анхаар: microsoft/trocr-base
загвар нь хувилбар бүрт ~1.5GB зай шаарддаг (хэвлэгдсэн/гараар бичигдсэн). Хангалттай зай, RAM (8GB+ багц боловсруулалтанд) байгаа эсэхийг шалгана уу.
Код жишээнүүд
trOCR-ийн чадваруудыг эдгээр жишээнүүдээр туршиж үзээрэй. Бүх жишээнд шаардлагатай сангууд суусан гэж үзнэ.
Жишээ 1: Гараар бичигдсэн текстийг таних
Энэ жишээ нь trOCR-ийн гараар бичигдсэн текстийг таних чадварыг харуулж байна. trocr-base-handwritten
загвар нь IAM Handwriting Database-ээр сургагдсан тул тэмдэглэл, захидал, түүхийн баримт бичигт тохиромжтой.
Гараар бичигдсэн текстийг таних
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("handwritten_note.jpg").convert("RGB") # RGB форматаар байгаа эсэхийг шалгах
pixel_values = processor(image, return_tensors="pt").pixel_values # Хэмжээ өөрчлөх, normalize хийх
# Текст таних
generated_ids = model.generate(pixel_values)
text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(f"Танигдсан текст: {text}")
Зөвлөгөө: Гараар бичигдсэн текстэд хамгийн сайн үр дүнд хүрэхийн тулд:
- 300+ DPI-тэй сканнер хэрэглэх
- Сүүдэргүй гэрэлтүүлэгтэй байх
- Боломжтой бол текстийн хэсгийг таслах
Жишээ 2: Хэвлэгдсэн баримтыг боловсруулах
Хэвлэгдсэн текстэд (ном, нэхэмжлэх гэх мэт) trocr-base-printed
загвар бараг төгс ажилладаг. Энэ жишээнд сканнердсан баримтыг хэрхэн боловсруулж байгааг харуулсан:
Хэвлэгдсэн текстийг таних
from transformers import pipeline
from PIL import Image
# Hugging Face pipeline ашиглах
ocr = pipeline("image-to-text", model="microsoft/trocr-base-printed")
# Баримт боловсруулах
image = Image.open("contract.png").convert("RGB") # RGB руу хөрвүүлэх
results = ocr(image)
# Үр дүнг харуулах
for idx, item in enumerate(results):
print(f"Хуудас {idx + 1}: {item['generated_text']}")
Гүйцэтгэл: NVIDIA T4 GPU дээр секундэд ~3 хуудас боловсруулдаг. Олон баримт боловсруулахдаа багц ашиглах (Жишээ 3-ыг үзнэ үү).
Жишээ 3: Багц боловсруулалт
trOCR нь олон зураг зэрэг боловсруулах боломжийг олгодог. Энэ жишээнд хэрхэн зэрэгцүүлэн ажиллаж байгааг харуулсан:
Зэрэгцээ текст таних
import torch
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
# Эхлүүлэх
device = "cuda" if torch.cuda.is_available() else "cpu"
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-printed")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-printed").to(device)
# Багц бэлтгэх
image_paths = ["doc1.jpg", "doc2.jpg", "doc3.jpg"]
images = [Image.open(path).convert("RGB") for path in image_paths]
# Багц боловсруулах
pixel_values = processor(images, return_tensors="pt").pixel_values.to(device)
generated_ids = model.generate(pixel_values)
texts = processor.batch_decode(generated_ids, skip_special_tokens=True)
# Үр дүнг харуулах
for path, text in zip(image_paths, texts):
print(f"{path}: {text[:50]}...") # Эхний 50 тэмдэгтийг харуулах
Bагцын хэмжээ:
GPU VRAM | Санал болгох багцын хэмжээ |
---|---|
8GB | 4-8 зураг (1024x768) |
16GB+ | 16-32 зураг |
Нэмэлт зөвлөгөө
trOCR-ийн гүйцэтгэлийг сайжруулах:
- Урьдчилсан боловсруулалт: OpenCV ашиглан зураг эргүүлэх, контраст нэмэх:
Зургийн чанарыг сайжруулах
import cv2 img = cv2.imread("low_quality_doc.jpg") img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) # Чиглэл засах img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] # Хар/цагаан болгох
- Тохируулах: Өөрийн өгөгдлөөр сургах:
Тохируулах скрипт
from transformers import Seq2SeqTrainingArguments args = Seq2SeqTrainingArguments( output_dir="./trocr-finetuned", per_device_train_batch_size=8, num_train_epochs=3, save_steps=1000, evaluation_strategy="steps" ) # Дэлгэрэнгүйг Hugging Face-ийн баримтаас үзнэ үү
Дүгнэлт
trOCR нь трансформатор технологи, компьютер харлыг хослуулснаар OCR-ийн боломжийг өргөжүүлсэн. Дараахь зорилгоор зайлшгүй шаардлагатай:
- Архив: Түүхийн бичвэрийг форматыг нь алдалгүйгээр дижиталчлах.
- Эрүүл мэнд/хууль: Мэдээллийн нууцлал бүхий баримтаас текст гаргах.
- Хүртээмж: Зургийг текстэд хөрвүүлэх.
Microsoft болон open-source хамтын ажиллагааны ачаар trOCR текст таних технологийн хил хязгаарыг тэлсээр байна.
Produk Serupa
- API EasyOCR – Pengenalan Aksara Optik Komprehensif dalam Python
- API Python PyMuPDF | Penghuraian dan Pengekstrakan PDF Lanjutan
- docTR API - Pengenalpastian Aksara Optik (OCR) dalam Python
- pdfminer.six Perpustakaan Python | Ekstrak Teks daripada PDF
- pypdf | Perpustakaan Python untuk Penghuraian PDF yang Cekap