Źródło zdjęcia: huggingface.co
Nvidia opublikowała szczegóły dotyczące nowego modelu OCR o nazwie Nemotron OCR v2, który wykorzystuje syntetyczne dane do rozpoznawania tekstu w sześciu językach. Model został opisany w artykule technicznym opublikowanym na platformie Hugging Face.
Głównym wyzwaniem w tworzeniu wielojęzycznych modeli OCR jest pozyskanie wystarczającej ilości wysokiej jakości danych treningowych. Istniejące podejścia wiążą się z kompromisami: publiczne zbiory danych jak ICDAR czy Total-Text mają czyste etykiety, ale ograniczoną skalę i koncentrują się głównie na języku angielskim i chińskim. Ręczne oznaczanie danych zapewnia najwyższą jakość, ale jest drogie i czasochłonne. Z kolei pliki PDF pozyskiwane z internetu oferują ogromną ilość danych, ale często zawierają zaszumiony tekst.
• Syntetyczne dane jako rozwiązanie: Nvidia wykorzystała 12 milionów syntetycznych obrazów treningowych w sześciu językach, co pozwoliło obniżyć błędy NED z przedziału 0.56-0.92 do 0.035-0.069 dla języków innych niż angielski
• Wysoka wydajność: Model osiąga prędkość 34,7 stron na sekundę na pojedynczym GPU A100 dzięki współdzielonej architekturze z jednym modułem detekcji
• Otwartość: Zarówno zbiór danych (nvidia/OCR-Synthetic-Multilingual-v1) jak i model (nvidia/nemotron-ocr-v2) są publicznie dostępne na platformie Hugging Face
• Uniwersalność podejścia: Pipeline do generowania syntetycznych danych można rozszerzyć na dowolny język, dla którego dostępne są fonty i tekst źródłowy
• Rozszerzona funkcjonalność: Model generuje adnotacje na trzech poziomach (słowo, linia, akapit) oraz grafy relacji określające kolejność czytania
Poprzednia wersja Nemotron OCR v1 była skuteczna dla języka angielskiego, ale nie została przygotowana do pracy z innymi językami. W testach na zbiorze SynthDoG v1 osiągnął wyniki NED (Normalized Edit Distance) między 0.56 a 0.92 dla języków japońskiego, koreańskiego, rosyjskiego i chińskiego. Przy takich poziomach błędów wyjście modelu miało niewiele wspólnego z rzeczywistym tekstem.
Częścią problemu był ograniczony zestaw znaków. Model v1 obsługiwał tylko 855 znaków, co nie pokrywało skryptów CJK (chińskiego, japońskiego, koreańskiego) ani cyrylicy. Eksperyment z rozszerzeniem zestawu do 14,244 znaków przyniósł jedynie marginalne poprawy. Model teoretycznie mógł generować właściwe znaki, ale nigdy nie nauczył się, jak wyglądają.
Kluczowym spostrzeżeniem zespołu Nvidia było to, że przepis na wielojęzyczne dane treningowe OCR jest fundamentalnie niezależny od języka. Potrzebne są tylko dwa składniki: tekst źródłowy w docelowym języku z realistyczną dystrybucją oraz fonty zdolne renderować skrypt tego języka.
Jako źródło tekstu wykorzystano mOSCAR - wielojęzyczny korpus internetowy obejmujący 163 podzbiory językowe w dziesiątkach skryptów, w tym łacińskim, CJK, cyrylicą, arabskim, devanagari i tajskim. Próbkowanie z mOSCAR zapewnia tekst o realistycznej dystrybucji słownictwa, długości zdań i częstotliwości znaków dla każdego języka.
Do renderowania wykorzystano silnie zmodyfikowaną wersję SynthDoG (Synthetic Document Generator) z projektu Donut. Oryginalny SynthDoG generuje obrazy przypominające dokumenty z etykietami na poziomie strony. Zespół Nvidia rozszerzył go o wielopoziomowe ramki ograniczające (słowo, linia, akapit), grafy relacji dla kolejności czytania oraz zaawansowaną randomizację layoutów, fontów, kolorów i tła.
Wyniki pokazują skuteczność tego podejścia. Model Nemotron OCR v2 osiągnął znaczące poprawy we wszystkich testowanych językach, redukując błędy o rzędy wielkości w porównaniu do poprzedniej wersji. Zbiór danych i model są dostępne publicznie, co umożliwia dalszy rozwój wielojęzycznych rozwiązań OCR przez społeczność badawczą.