trOCR: Revolucionē teksta atpazīšanu ar transformatoriem

Sasniedziet cilvēka līmeņa precizitāti teksta atpazīšanā gan drukātam, handrakstam, gan daudzvalodu saturam.

Kas ir trOCR API?

trOCR (Transformatoru balstīta optiskā rakstzīmju atpazīšana) ir Microsoft jaunrades OCR modelis, kas izmanto transformatoru arhitektūras priekšrocības, lai nodrošinātu nepārspējamu precizitāti teksta atpazīšanā. Atšķirībā no tradicionālajām OCR sistēmām, kas balstās tikai uz konvolūciju tīkliem, trOCR apvieno redzes transformatorus (ViT) ar secības-modelēšanu, ļaujot tai saprast teksta kontekstu un telpiskās attiecības — pat tādiem sarežģītiem avotiem kā handraksti, zema izšķirtspēja skenējumi vai sarežģītas rakstzīmes.

trOCR galvenās priekšrocības:

  • Cilvēkam līdzīga atpazīšana: Lieliski nolasī kursīvu un deformētu tekstu, kur tradicionālā OCR neizdodas.
  • Daudzvalodu atbalsts: Iepriekš apmācītie modeļi atbalsta angļu, franču, vācu un citas valodas ar iespēju pielāgot citām valodām.
  • Vienkāršota pārstrāde: Apvieno teksta noteikšanu un atpazīšanu vienā procesā.
  • Vienkārša integrācija: Balstīts uz Hugging Face Transformers bibliotēku, ļaujot viegli ievietot esošos darba procesos.

No vēsturisku arhīvu digitalizēšanas līdz rēķinu apstrādei, trOCR nosaka jaunu standartu OCR veiktspējai reālos lietojumos.

GitHub

GitHub Stats

Name:
Language:
Stars:
Forks:
License:
Repository was last updated at

Kāpēc izvēlēties trOCR?

  • Transformatoru darbināts: Pārspēj CNN balstītus modeļus ar 15–20% augstāku precizitāti testu datos, piemēram, IAM Handwriting.
  • Handrakstu speciālists: Modelis trocr-base-handwritten sasniedz 90%+ precizitāti kursīvā tekstā.
  • Minimāla priekšapstrāde: Noturīgs pret fontu, orientācijas un fona trokšņu variācijām.
  • Mērogojama izpilde: Apstrādā attēlu partijas ar gandrīz lineāru GPU paātrinājumu.
  • Pielāgojams: Var pielāgot specifiskiem datiem (piemēram, medicīniskajiem receptēm, čekiem).

Instalācija

trOCR nepieciešams PyTorch vai TensorFlow un Hugging Face Transformers bibliotēka. Lai iegūtu optimālu veiktspēju, iesakām izmantot GPU vidē:

Instalēt ar PyTorch (ieteicams GPU)


pip install transformers torch torchvision
pip install datasets  # Neobligāti precizēšanai

Piezīme: Modeļiem microsoft/trocr-base nepieciešama ~1.5GB diska vietas katram variantam (drukāts/handraksts). Pārliecinieties, ka ir pietiekama krātuve un RAM (8GB+ partiju apstrādei).

Koda piemēri

Apskatiet trOCR iespējas, izmantojot šos praktiskos piemērus. Visi piemēri pieņem, ka ir instalētas nepieciešamās atkarības.

trOCR apstrādā handrakstu un drukātu tekstu

1. piemērs: Handraksta atpazīšana

Šis piemērs parāda trOCR spējas atšifrēt kursīvu. Modelis (trocr-base-handwritten) tika apmācīts uz IAM Handwriting datu bāzes, padarot to ideālu piezīmēm, vēstulēm vai vēsturiskiem dokumentiem.

Handraksta atpazīšana


from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image

# Ielādēt procesoru un modeli (specializēts handrakstam)
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")

# Atvērt attēlu un sagatavot
image = Image.open("handwritten_note.jpg").convert("RGB")  # Pārliecināties par RGB formātu
pixel_values = processor(image, return_tensors="pt").pixel_values  # Normalizēt un mainīt izmēru

# Ģenerēt teksta prognozes
generated_ids = model.generate(pixel_values)
text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

print(f"Iegūtais teksts: {text}")

Padoms: Lai iegūtu labākos rezultātus ar handrakstu:

  • Izmantojiet 300+ DPI skenējumus
  • Nodrošiniet pareizu apgaismojumu, lai izvairītos no ēnām
  • Ja iespējams, apgrieziet teksta reģionus

2. piemērs: Drukāta dokumenta apstrāde

Drukātam tekstam (grāmatām, rēķiniem u.c.) modelis trocr-base-printed nodrošina gandrīz perfektu precizitāti. Šis piemērs parāda, kā apstrādāt skenētu dokumentu:

Drukāta teksta iegūšana


from transformers import pipeline
from PIL import Image

# Izmantot Hugging Face pipeline vienkāršībai
ocr = pipeline("image-to-text", model="microsoft/trocr-base-printed")

# Apstrādāt dokumentu
image = Image.open("contract.png").convert("RGB")  # Konvertēt uz RGB
results = ocr(image)

# Parādīt strukturētus rezultātus
for idx, item in enumerate(results):
    print(f"Lapa {idx + 1}: {item['generated_text']}")

Veiktspējas piezīme: Uz NVIDIA T4 GPU tas apstrādā ~3 lapas sekundē. Lielapjoma operācijām izmantojiet partijas apstrādi (skat. 3. piemēru).

3. piemērs: Partiju apstrāde efektivitātei

trOCR atbalsta partiju apstrādi, lai palielinātu aparatūras izmantošanu. Šis piemērs apstrādā vairākus attēlus paralēli:

Paralēla teksta iegūšana


import torch
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image

# Inicializēt
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)

# Sagatavot partiju
image_paths = ["doc1.jpg", "doc2.jpg", "doc3.jpg"]
images = [Image.open(path).convert("RGB") for path in image_paths]

# Apstrādāt partiju
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)

# Rādīt rezultātus
for path, text in zip(image_paths, texts):
    print(f"{path}: {text[:50]}...")  # Parādīt pirmos 50 rakstzīmes

Partijas izmēra vadlīnijas:

GPU VRAMIeteicamais partijas izmērs
8GB4–8 attēli (1024x768)
16GB+16–32 attēli

Papildu padomi

Lai uzlabotu trOCR veiktspēju:

  • Priekšapstrāde: Izmantojiet OpenCV attēlu izlīdzināšanai un kontrasta uzlabošanai:

    Attēla uzlabošana

    
        import cv2
        img = cv2.imread("low_quality_doc.jpg")
        img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)  # Labot orientāciju
        img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]  # Binarizēt
        
    
  • Precizēšana: Pielāgojiet savam domēnam ar pielāgotiem datiem:

    Precizēšanas skripts

    
        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"
        )
        # Pilns apmācības iestatījums skatāms Hugging Face dokumentācijā
        
    

Secinājums

trOCR pārveido optiskās rakstzīmju atpazīšanas iespējas, apvienojot transformatoru arhitektūru ar datorredzi. Tā spēja apstrādāt visu, sākot no skraidītām piezīmēm līdz daudzvalodu dokumentiem, padara to neatstājamu šādiem lietojumiem:

  • Arhīvu projekti: Digitalizējiet vēsturiskus manuskriptus, saglabājot formatējumu.
  • Juridiski/medicīnas procesi: Iegūstiet tekstu no jutīgiem dokumentiem ar audita pēdām.
  • Pieejamības risinājumi: Ģenerējiet alternatīvu tekstu attēliem lielos apjomos.

Ar Microsoft un open-source kopienas pastāvīgajiem uzlabojumiem trOCR turpina paplašināt teksta atpazīšanas tehnoloģiju robežas.

Similar Products

 Latvian