Dlaczego nie robimy w ten sposób?
TL;DR: bo to dużo trudniejsze, niż się komuś na pierwszy rzut oka może wydawać. Ale nie to żebyśmy nie próbowali.
Problemy:
Rozpoznawanie ciągłego pisma odręcznego (Connected-Offline Handwriting Recognition) to trudny problem badawczy, do niedawna w ogólnym przypadku nierozwiązywalny. Dopiero od kilku lat są metody uczenia maszynowego (pojęcie "Sztuczna Inteligencja" to ładne hasło reklamowe), które pozwalają się do niego w ogóle zabrać (wcześniej SVM dawał stopę błędów rzędu 30% na słowach).
A samo rozpoznanie słów to jeszcze nie wszystko, bo później trzeba dokonać ekstrakcji informacji (IE), czyli wyciągnąć interesujące nas dane.
Ale ponieważ akurat osobiście się tym zajmuję, to pozwólcie Państwo że wyjaśnię gdzie nas (badaczy) boli:
1. Do wyuczenia dobrego modelu do rozpoznawania pisma odręcznego potrzebna ogromnych ilości dobrej jakości danych. To są raczej setki tysięcy jak nie miliony ręcznie zaanotowanych (i to poprawnie!) danych.
2. Język polski ma tę wredną cechę, że posiada bogatą fleksję. I to może nie byłby taki problem, bo metryki mają na ogół bardzo podobny format, ale mówimy o języku anachronicznym i to jeszcze z różnych lat - ten ewaluował. To tylko zwiększa potrzebną ilość danych i nakłada dodatkowo konieczność tłumaczenia z formy anachronicznej na współczesną (coś co robimy automatycznie nawet nie myśląc Maryanna -> Marianna).
3. Metryki mamy w różnych językach od łaciny (przed kodeksem Napoleona), przez polski do 1864 i po 1914, przez rosyjsko-polsko-rosyjskawy do niemieckiego (na określonych terenach). Aha, jak ktoś ma rodzinę z Galicji, to i ukraiński zarówno cyrylicą jak i alfabetem łacińskim z polskimi znakami może się trafić.
4. Ale przecież rekordów w Genetece mamy miliony! Tak, ale niestety z bardzo dużymi szumami. Akurat niedawno sprawdzałem swoje pierwsze indeksy: tam jest sporo błędów. Nie czarujmy się: w Genetece ich nie brakuje. Nawet jeżeli większość jest prawidłowa.
4a. To co mamy w Genetece nie nadaje się do uczenia modeli COHWR (popularnie: OCR). Brakuje anotacji *wszystkich* słów, które są na obrazku. I ustalania jakiejś spójnej w całym zbiorze kolejności czytania.
5. Pismo odręczne jest bardzo nieregularne, te same słowa mają zupełnie różne rozmiary w zależności od rekordu (polecam zmierzyć sobie rosyjskie Состаялосъ). I każdy człowiek ma swój charakter pisma. Tu zarówno człowiek, jak i model muszą się nauczyć te udziwnienia czytać i rozumieć. Każdy kto indeksował wie o czym piszę.
5a. Jakby ktoś myślał że "no przecież można zrobić syntetyczne obrazki czcionkami przypominającymi pismo odręczne" polecam poszukać takich czcionek ze wsparciem dla języka polskiego i cyrylicy. Ewentualnie próbę zrobienia takiej czcionki (dla użytkowników Linuksa mogę podpowiedzieć jak).
6. Szczególnie język rosyjski jest interesujący, bo przed reformą ortografii (a z takim się tu mierzymy) były jeszcze takie ciekawe literki jak Fita, i znak twardy stosowany po prawie każdej spółgłosce. Na dodatek, żeby było mało, mała litera de ma dwie różne glify: małe łacińskie g i albo grecka mała delta, albo znak pochodnej cząstkowej. I nie umiem wskazać reguły.
6a. Co ksiądz to różny sposób zapisu imienia: albo transkrypcja do cyrylicy, albo tłumaczenie. Te ostatnie często błędne.
6b. A jak zapisać polskie nazwiska? Z polskimi diakrytykami, których w rosyjskim nie ma? Z tym się mierzyli ludzie piszący te księgi i stosowali różne rozwiązania; np. ó zapisywali jako у (u w cyrylicy) lub о (o w cyrylicy usuwając diakrytyk). OK, rozpoznać rozpoznamy tak jak jest, ale później musimy to zindeksować (i się zaczyna...).
7. Metryki obcojęzyczne mogą mieć podane polskie formy - to czyni model do rozpoznawania tekstu wielojęzycznym, a to jest DUŻO trudniejszy problem.
A co do samej ekstrakcji danych:
a) Możemy mieć wiele rekordów na jednej stronie. Jak zwrócić dane dla konkretnego rekordu (jak je w ogóle wyekstrahować bez uprzedniego podziału na rekordy)? To jest oddzielny problem badawczy, służę artykułami jak kogoś interesuje, nie jest rozwiązany.
b) Formaty są podobne, ale jednak różne. Model musi się nauczyć na co ma zwracać uwagę - to akurat jest w miarę dobrze opanowane.
c) Rekordy mogą być podzielone między strony - takich przypadków jest mało i trudno jest nauczyć komputer je rozumieć. A jeżeli akurat dane są podzielone między różne obrazki, to w ogóle jest to dużo trudniejsze zadanie (te modele nie mają pamięci krótkoterminowej).
d) Jakość rozpoznawania znaków jest krytyczna - przy zbyt dużej stopie błędów model w ogóle nie będzie w stanie nic wyekstrahować.
e) Co prawda istnieją tzw. modele języka dla polskiego, czy rosyjskiego, ale są one gorszej jakości niż dla języka angielskiego, a to takie modele stanowią naszą bazę dla modelu do ekstrakcji danych. A mówimy tu o języku anachronicznym, przypominam. Takich danych, to modele bazowe nawet nie widziały. Jak jeszcze - nie daj Boże - będzie to model wielojęzyczny, to będzie jeszcze trudniej (skądinąd wiadomo że modele dedykowane działają znacznie lepiej).
Może na razie wystarczy, pozdrawiam wytrwałych
Jakby ktoś chciał się czymś takim zająć (i wie mniej-więcej o czym piszę), to zapraszam do kontaktu. Nie dalej jak przedwczoraj skończyłem artykuł naukowy w tym temacie. Pracy jest bardzo dużo, dla wielu wystarczy.
Dla przykładu można by przygotować te skromne kilkadziesiąt tysięcy czystych rekordów (tj. zweryfikowanych danych z Geneteki). Na razie mam tylko nieco ponad 4k swoich, to trochę mało.