Komentar: OCR – AI ne živi ovde
Uz svu priču o napretku veštačke inteligencije, vraćamo se na jedan naoko znatno jednostavniji problem – OCR. Poželeo sam da knjigu „Čudnovati doživljaji ekspedicije Barsak“ Žila Verna pretvorim u EPUB… i baš sam se namučio.
Još u počecima razvoja PC računara, čim su se pojavili skeneri kao što je HP ScanJet, ljudi su želeli da štampane tekstove prenesu u računar. Nije to bilo lako – prvi OCR programi su zahtevali da odštampani tekst bude praktično savršen, što znači da je već postojao na računaru, pa je štampan na laserskom printeru. Kada pokušate sa nekom knjigom, naročito malo starijom, dobijete uglavnom gomilu đubreta koje je teže ispravljati nego prekucati tekst. Sećam se da su me tamo negde 1996. godine namamili oglasom na kome je bio par lepih ženskih očiju i slogan The only OCR system that outperforms… Bačene pare.
U domaćim uslovima stvari su bile još mnogo gore. OCR postaje mnogo precizniji ako uzme u obzir karakteristike jezika, a očekivani jezik je engleski a ne srpski. Programi nisu prepoznavali znake čćđšž, a još manje ćirilicu. Veliki korak napred učinila je mađarska Recognita, koja je podržala razne jezike, među kojim i srpski. Zadnji put smo je prikazali još 2001, u PC#63, a razvoj paketa je prestao nekoliko godina kasnije. Sličnu tehnologiju je implementirao ruski (nedavno se firma preselila u Milpitas, California) Abbyy FineReader, koji smo zadnji put testirali 2014. u PC#208. FineReader je danas jedan od najboljih OCR programa, a bez konkurencije je kada treba „pročitati“ tekst na srpskom jeziku, koji doduše i dalje nije podržan rečnikom, za razliku od Hrvatskog i Slovenačkog. Za ovaj hobi-projekat koristio sam FineReader 15, što je bila aktuelna verzija prošle godine, kada sam počinjao. U međuvremenu je izašla verzija 16 koju bi vredelo probati.
Sve češće se pominje termin ICR (Intelligent Character Recognition) kao naslednik OCR-a. FineReader nominalno podržava ICR, ali u praksi…
Nepoznati Žil Vern
Žil Vern je jedan od mojih omiljenih pisaca, što ne znači da su mi se sve njegove knjige jednako dopale. „Tajanstveno ostrvo“, „Put u središte Zemlje“, „Put oko sveta za 80 dana“, „Hector Servadac“, „Petnaestogodišnji kapetan“… vredi ih čitati i danas. Na tom mom spisku najboljih je i roman „Čudnovati doživljaji ekspedicije Barsak“ (u originalu L’Étonnante Aventure de la mission Barsac) koji je prilično nepoznat. Čak je pitanje i da li ga je napisao Žil Vern ili ga je, na osnovu započete verzije, dovršio Michel Verne. Roman je objavljen nekoliko godina nakon smrti velikog pisca i postigao je značajan uspeh u Francuskoj, dok je na engleski preveden 1960. godine.
Roman je krajem pedesetih objavljen kod nas, i tu knjigu „oduvek“ imam u porodičnoj biblioteci. Lako ćete je naći na kupindo.com za 300 do 600 dinara, zavisno od toga koliko je primerak očuvan. Nažalost, u elektronskoj formi knjiga nije raspoloživa – po raznim sajtovima ima gomila OCR-ovanih Žil Vernovih romana, ali ovog jednostavno nema. Ni na kom jeziku – romana nema ni na gutenberg.org. Probleme tog tipa obično rešavam tako što „čekam da Internet još malo poraste“, ali posle desetak godina čekanja zaključujem da je jedini način da nešto i sam uradim za community.
I tako sam odlučio da skeniram, OCR-ujem i obradim ovaj roman. Autorska prava su davno istekla, roman je u javnom vlasništvu, pa sa te strane nema problema. Prvo sam mislio da stranice knjige skeniram, ali se barem taj deo dosadnog posla može izbeći – odnesete knjigu u neku kopirnicu (u mom slučaju „Antika“ u Đušinoj ulici) i oni vam za sitne pare (oko 500 dinara) skeniraju sve stranice u rezoluciji 600 dpi i pošalju e-mail-om dokument u PDF formatu. Prebacite tih 23 MB u Abby Fine Reader, sačekate nekoliko minuta, dobijete Word dokument, otvorite ga i… uhvatite se za glavu.
Kvalitet zvani katastrofa
Kad gledam originalnu knjigu, kvalitet štampe je solidan. Istini za volju knjiga je stara, papir je malo požuteo, na raznim mestima se vide crne mrlje, poneku bi čovek zaista mogao da protumači kao kvačicu na nekom slovu. Ali prirodni OCR sistem zvani oko nema apsolutno nikakav problem niti nedoumicu kod tumačenja znakova i reči. Za razliku od veštačke pameti.
Knjiga je prilično stara, papir je malo požuteo, ali prirodni OCR sistem zvani oko nema apsolutno nikakav problem niti nedoumicu kod tumačenja znakova i reči. Za razliku od veštačke pameti…
Najveći je problem u tome što OCR kao da čita samo znak po znak i da na svakom mestu očekuje bilo koji karakter, bez ikakvog razumevanja toga da se radi o tekstu koji teče sleva nadesno. Recimo, veliko I (kao Ivanjica) grafički izgleda isto kao malo l (ladolež), ali ko još očekuje veliko I usred reči koja je inače pisana malim slovima? Vidite reč koja vam izgleda kao „mišljenje“ ali ne prolazi kontrolu spelovanja jer je posle š zapravo veliko I, a ne malo l. Sve češće se pominje termin ICR (Intelligent Character Recognition) kao naslednik OCR-a. FineReader nominalno podržava ICR, ali u praksi…
Uzmimo još jedan karakterističan primer: crtica na kraju reda. Kad je program detektuje, gotovo 100% je sigurno da se radi o hifenaciji, ali OCR mirno ostavi crticu u tekstu, nekad čak dodajući i blanko iza nje. Pa onda razni crni kvadratići koji mogu da se pojave bilo gde u dokumentu; koja je verovatnoća da između dve reči stoji crni kvadratić?
Zatim, dijalozi. U ovoj knjizi oni su pisani kao redovi koji počinju crtom što je velika sreća, pošto se samo dešava da budu prepoznate crte raznih dužina, a to je lako rešiti sa Search & Replace. Velika nevolja je u knjigama gde su dijalozi stavljani pod navodnike, pa sistem nekad prepozna “kompjuterski” navodnik, nekad „štamparski navodnik“, nekad dva ,,susedna zareza“, dve ..susedne tačke“ i svakakve .,druge varijante”.
OCR postaje mnogo precizniji ako uzme u obzir karakteristike jezika, a očekivani jezik je engleski a ne srpski. Većina OCR programa ne prepoznaje znake čćđšž, a još manje ćirilicu. Abbyy FineReader je danas jedan od najboljih OCR programa, a bez konkurencije je kada treba „pročitati“ tekst na srpskom jeziku
Prvi deo posla je da se oporavi struktura dokumenta, dakle pasusi koji su nasilno presečeni, da se izbace bezvezni znaci, uklone tragovi hifenacije i slično. Pošto takvih grešaka ima „bezbroj“, treba sagledati način da se karakteristični problemi reše sa Find & Replace, možda uz korišćenje džoker znakova ili regularnih izraza. Nažalost, često se ne može zadati jednoznačan Replace, nego se ide kroz tekst i pritiska Y ili N u zavisnosti od toga da li treba izvršiti izmenu ili ne. Proces koji zahteva veoma jaku koncentraciju; recimo, zamena pogrešnih Đ sa D je zahtevala skoro sat teškog posla.
Od glave do glave
Pošto je tekst kako-tako upristojen, treba ga čitati redom i ispravljati greške. Logična pomoć je
Word-ov program za kontrolu pravopisa, generalno dobro prilagođen srpskom jeziku, ali ne i OCR-ovanom tekstu. OCR donosi neke karakteristične greške, recimo rn bude protumačeno kao m, ri kao n, in kao m, ti kao h i slično. Word prepozna da odgovarajuća reč ne postoji u rečniku (ponekad i postoji…) pa je obeleži kao problematičnu (što je dobro), ali ne ume da vam ponudi pravu zamenu; kao da nerado nudi reči koje su za slovo duže ili kraće od pogrešne. I tako umesto jednog klika morate da izađete iz režima provere, ručno ispravite reč i onda nastavite sa automatskom kontrolom.
Prva ideja mi je bila da najpre pokrenem proveru pravopisa pa posle da čitam tekst, ali se pokazalo da to nije dobro. Ima previše grešaka i automatska kontrola je prespora. Sledeća ideja je bila da najpre pročitam jedno poglavlje i ispravim greške koje primetim, pa da onda pustim proveru pravopisa za to poglavlje. Pa onda da ga još jednom čitam. Usput sam primetio da se naš pravopis ponešto promenio u odnosu na pedesete godine kada je knjiga izdata; tada je bilo pravilno pretsednik, otsustvo, filosofija… trebalo je to modernizovati.
Vremenom sam došao do optimalne varijante: uopšte ne pokrećem kontrolu spelovanja koja bi išla od reči do reči, nego samo tražim od Word-a da talasastom crvenom linijom podvuče nepoznate reči. Pa onda čitam i ispravljam kako te reči tako i ostale probleme, ne zaboravljajući da reči koje su ispravne (npr. vlastita imena) dodam u rečnik, kako ih Microsoft Word ne bi podvlačio u kasnijim poglavljima. Ako ima vremena i raspoloženja, treba još jednom pročitati čitavo poglavlje da bi se uočile dodatne greške; zapravo, možete ga čitati koliko god puta želite, svaki put ćete po nešto pronaći. A znajući da roman ima nekih 600,000 karaktera (papirna knjiga od 310 strana), sve će to neminovno potrajati.
Lingvistika, geografija, istorija…
Kad već nešto radim, cilj me je da to uradim što bolje, pa sam dosta patio nad imenima i citatima. Geografija je bila Žil Vernova fascinacija, pa su njegovi romani uvek puni imena gradova, reka, planina, ali i brodova, pomorskih kompanija… Sam Vern nije mnogo putovao, ali je koristio geografske karte i enciklopedije, koje nisu uvek sasvim pouzdan izvor, naročito kada se gleda na 100 godina unazad. Recimo, u čuvenom romanu „Deca kapetana Granta“, ključ čitave priče bilo je ostrvo Tabor (odnosno Marija Terezija na nekim kartama) za koje danas znamo da uopšte ne postoji, već je kapetan Asaph P. Taber (a ne Tabor) pogrešio kada ga je prijavio kao pronalazak, pa je ta greška prepisivana sa geografske karte na kartu 150 godina.
Ekspedicija Barsak je trebalo da putuje od Konakrija (Conakry) do Kotonua (Cotonou), kroz gomilu gradova i sela uz okuku reke Niger. Neki od gradova se danas zovu drugačije, države su promenile imena, više nisu Francuske kolonije, ali to nisam dirao. Razna sela koja se pominju u priči nije moguće naći na Internetu, da li zato što su promenila imena, ili ih je Žil Vern prosto izmislio. A na susednim stranicama knjige se povremeno ta sela speluju drugačije i sad – koje ime je tačno? Ko je pogrešio, Žil Vern, prevodilac, štamparija… Bilo bi lepo da sam imao francuski original, mislio sam da ga kupim u nekoj Internet antikvarnici, ali me je najzad mrzelo da ga čekam. Usvojio sam konvenciju da je prvo pomenuto ime tačno, a naredna pominjanja treba da se prilagode tom prvom. Uostalom, tako najviše odgovara spell checker-u i njegovom rečniku izuzetaka. Istu konvenciju sam koristio i za brojna urođenička imena.
Primetio sam da se naš pravopis ponešto promenio u odnosu na pedesete godine kada je knjiga izdata: tada je bilo pravilno pretsednik, otsustvo, filosofija… trebalo je to modernizovati
Žil Vern je voleo igre reči, naročito sa latinskim citatima. Svi znaju da ime kapetana Nema na latinskom znači „niko“, ali jeste li znali da prezime glavnog junaka romana Hector Servadac, kada ga napišete unatraške, glasi cadavres, leš – možda da bi se naglasilo da niko zapravo ne bi preživeo let kroz Sunčev sistem na kometi. Ili igra reči u, kod nas nepoznatom, Žil Vernovom romanu Le village aerien gde ime nekog čudnog belca koji živi među majmunima koji su gotovo evoluirali u ljude (da, Žil Vern se bavio i Darvinom), Waggdis MSelo-Tala-Tala, uz neku latinsku transformaciju, kazuje da je Leo XIII, Papa u vreme kada je knjiga izdata, perverznjak (pervert).
Gledajući razna čudna urođenička imena u romanu Barsak, pomišljao sam da i tu možda postoje neke skrivene poruke, nažalost daleko izvan mog enigmatskog domašaja. Mogao sam samo da popravim latinske citate kod kojih je prevodilac napravio nekoliko grešaka; srećom, Google je tu da ih ispravi. Čak su i engleske fraze povremeno bivale pogrešne, možda zato što su dodavane kasnije. Naime, Žil Vern je bio pristalica esperanta, pa je originalni naslov romana bio Voyage d’étude, nešto kao „Istraživačko putovanje“, ali i referenca na esperanto. Njegov sin Michael je, prepravljajući roman, potpuno izbacio esperanto i odlučio da se u Blackland-u kao univerzalni jezik razbojnika iz svih krajeva sveta koristi engleski, što je možda vizionarska odluka…
Download za vas
Ako je verovati informacijama koje Word pokazuje na File / Info, proveo sam 1062 minuta editujući fajl, dakle 18 sati vrlo koncentrisanog rada. Pošto mi to nije bio jedini posao u životu, potrajalo je čitavih sedam meseci ali sam najzad stigao do kraja. Trebalo je još uvesti Word dokument u Calibre, konvertovati ga u EPUB, generisati sadržaj i… to je to.
Usmerite browser na adresu pcpress.rs/download/barsak.zip i preuzmite arhivu u kojoj imate skeniranu knjigu kao i sređeni roman u EPUB, DOCX i PDF formatu; ako primetite neke greške (a sigurno ih je ostalo još), pišite mi pa ću napraviti verziju 2.0. Kurioziteta radi, u arhivi je i fajl barsak0.docx u kome je prva varijanta teksta nastalog OCR-om knjige; jasno se vidi koliko je dug put od toga pa do kraja priče i koliko bi OCR još trebalo da napreduje da bi postao stvarno upotrebljiv.
Greška je bila scan u pdf u kopirnici. Pdf format komplikuje stvari, pogotovo ako je urađen u slaboj rezoluciji. Scan treba uraditi u sliku sa što boljom rezolucijom i manje kompresije i onda sve slike uvesti u Abbyy FineReader koji onda dobro odradi OCR, snimi se u Word i u Calibre konveruje u epub.