OCR pro rucne psany text s doucovanim

Máte nějaký nápad o kterýse chcete podělit, nebo radu kterou chcete přispět ostatním v jejich genealogickém úsilí? Můžete ji napsat sem.

Re: OCR pro rucne psany text s doucovanim

Příspěvekod zburget » ned dub 11, 2021 13:11

Poznatek - zkusil jsem přečíst text pomocí CRNN modelu (který nijak netrénuju) a přepis byl sice samozřejmě mimo a zmatky, ale nebylo to úplně marné - písmenka to celkem čsto nacházelo tak, že byly aspoň podobné tomu, co je v zápisu. Řekl bych, že to snad četlo líp, než Tesseract, kde jsem si udělal svoji instanci OCR modelu kopií z Global po přečtení 3 skenů (5 stran). Není ten Global v modelu Tesseract něčím zblbnutý, že čte hůř, než CRNN?

A pár poznatků, které směřují spíš na vedoucího práce a nan další směřování vývoje OCR.
Jednak je opravdu dost žalostná ta detekce regionů a řádků.
Druhák - i když se formulace ve všech zápisech absolutně opakují, OCR to vůbec nebere v úvahu. Čtení po řádcích je možná trochu zavádějící. Nebylo by možné nějak vymyslet čtení po záznamech? Teď jsou místy i řádky roztrhané na menší části. Ale i kdyby byly celé řádky v kusu, tak se z těch samostatných řádků ztrácí kontext.
Kdyby OCR bylo schopné pochopit, že všechny záznamy vypadají stejně, mohlo by hledat podobnosti v jednotlivých částech záznamu - podobně, jako to dělá člověk, když to čte.
Když čtu text, vycházím z toho, že vím (poznám) jazyk a mám v hlavě jakýsi slovník - takže slova čtu i proto, že vím, co v daném místě má být. To slovo tam prostě čekám a nečtu úplně strojově. Bylo by možné tuhle logiku "nějak" do nějaké následné verze toho OCR taky dostat? Vím, že čtu matriku, tak čekám formulace z matriky. Čtu, gruntovnici, čekám formulace, jaké jsou v gruntovnicích. Když nevím co čtu, přečtu kousek a docvakne mi, co čtu (např. matriku - křestní) a podle toho "přepnu mozek" a čtu s daleko větší jistotou.

A jedna připomínka k OCR obecně - teď je označený celý řádek a OCR ho "nějak" přečte. Já mu to opravím, ale ono to vlastně netuší, které písmenko kde je. Často to při čtení vypadá tak, že to ani netuší, kde končí jedno a začíná druhé slovo. V této fázi této práce to asi není reálné, ale nepomohlo by, kdybych byl schopen té neuronové síti při učení přesně ukázat tady je tohle konkrétní písmeno? A nebo alespoň tady je to hle konkrétní slovo? Tzn. Tak, jak je teď udělané dělení na řádky, tak ještě udělat dělné na slova (ale se zachováním kontextu celého řádku). Opět téma na zamyšlení spíš do budoucna.

Bylo by zde tedy možné dělení regiony / (odstavce /) řádky / slova / písmena
region = celý záznam (a držet kontext celého záznamu). Odstavce u matrik, kde jsou třeba samostatné kolonky pro dítě, otce, matku,… Řádky - jasně, text je v řádcích, ale několik řádků tvoří jeden souvislý logiocký blok. Slova (můžou výt rozdělená přes více řádků). Rozdělení na řádky / slova / písmena by mělo smysl jen pro samotnou detekci písmen v textu, ale se čtením by měl pomáhat nějaký ten slovník podle kontextu celého záznamu nebo odstavce (v ráci celého záznamu).
No, snadno se mi to asi mluví, když vůbec nevidím do toho, jak to celé funguje. Já jen vidím, jaké to dává (spíš nedává) výsledky. Když do něj nasypu několik desítek záznamů s identickou strukturou, tak bych čekal, že už minimálně začne vidět stejná slova stejně, protože jesou ve stejném místě záznamu a prostě tam musí být stejné slovo, jako u všech předchozích.
Ale berte to prosím jen jako námt k zamyšlení. Pokud jste to všechno takhle už promýšleli, tak prosím moje moudra tiše (nebo klidně hlasitě :-)) ignorujte.
Zbyněk Burget
zburget
 
Příspěvky: 12626
Registrován: pon dub 30, 2018 17:15
Bydliště: Nezamyslice [okr. Prostějov]
Oblast pátrání: Konicko, Protivanovsko (okres Prostějov)
Boskovicko

Re: OCR pro rucne psany text s doucovanim

Příspěvekod Davidh » ned dub 11, 2021 18:26

Editace řádků a regionu reálná je, ale nejdříve musím sepsat text k práci a pak ve zbytku času dodělám tyto věci. Zatím na ni asi nečekejte :).

Koukal jsem se do logu jak jste trénoval Tesseract a váš natrénovaný model měl chybu na znacích asi 60%, takže byl málo natrénovaný (měla by se v aplikaci vypisovat nějaká zpětná vazba jako u CRNN OCR). Tesseract je už předtrénovaný na anglických textech a poté až dotrénovaný na nějakých pár skenech matrik. Vytvořil jsem novou instanci Tesseract "Test, zburget" a natrénoval ji na Vašem datasetu "Test". Nechal jsem to trénovat déle, chyba na znacích klesla na cca 1.5%, poté jsem touto instancí inferoval stejný dataset, tak koukněte, jestli je to už lepší :).

Jak jsem už psal, ty OCR jsou schopny přepisovat znaky podle kontextu celého řádku a podle kontextů všech již viděných řádků, takže si myslím, že určitě vzory v opakování slov se umí naučit. Co se týče vyznačení pozice jednotlivých slov v řádku -- zvolil jsem schválně princip OCR, který nevyžaduje určení pozice textu v obraze, jedná se o metodu, kterou dnešní "moderní" OCR často využívají.
Davidh
 
Příspěvky: 46
Registrován: čtv dub 08, 2021 13:25

Re: OCR pro rucne psany text s doucovanim

Příspěvekod Davidh » ned dub 11, 2021 18:40

Natrénoval jsem novou instanci CRNN OCR "Global (Deutsch)" na datasetu obsahujícím 187k přepsaných řádků německého textu. Pokud máte nějaké německé skeny, můžete je zkusit touto instancí přečíst.
Davidh
 
Příspěvky: 46
Registrován: čtv dub 08, 2021 13:25

Re: OCR pro rucne psany text s doucovanim

Příspěvekod Davidh » ned dub 11, 2021 21:02

Problém s nahráváním skenů snad opraven.
Davidh
 
Příspěvky: 46
Registrován: čtv dub 08, 2021 13:25

Re: OCR pro rucne psany text s doucovanim

Příspěvekod zburget » pon dub 12, 2021 7:15

O.K. - takže k lepším výsledkům by teď mělo vést až to, že budou správně detekované celé řádky (tedy až pak bude možné upravovat ty špatně automaticky nadatakované regiony - aby nebyly řádky roztrhané na menší kousky).

Novou instanci OCR modelu otestuju :-)
Zbyněk Burget
zburget
 
Příspěvky: 12626
Registrován: pon dub 30, 2018 17:15
Bydliště: Nezamyslice [okr. Prostějov]
Oblast pátrání: Konicko, Protivanovsko (okres Prostějov)
Boskovicko

Re: OCR pro rucne psany text s doucovanim

Příspěvekod zburget » pon dub 12, 2021 7:43

Pokud jsem pochopil správně, mělo by pomoct, když spustím učení vícekrát?
Těžko říct, jestli dává lepší výsledky tahle instance OCR nebo ta starší. Zatím jsou to zmatky v obojím. Sem tam to trefí celé slovo, sem tam skoro (plete si to písmena, připomíná mi to, jako když sem přijde nováček, který ještě neumí číst :-)), ale většinou je to mimo úplně. Toho tréningu to bude potřebovat daleko víc :-(

Mimochodem - vypadá to, že ligaturu æ nezná ani ten model Tesseract. Já ji v přepisech celkem běžně používám (je prakticky v každém záznamu u jména matky dítěte), ale OCR mi to ještě nikdy nikam nestrčilo. Můžete se podívat, jstli v tom modelu Tesseract ten znak æ je? Pokud ne, mám to přepisovat jako ae? Pokud by se to OCR mělo reálně používat k přepisům, tak by něco tu ligaturu znát mělo. Tedy podle požadavků historiků by se texty měly přepisovat s touhle ligaturou.
Zbyněk Burget
zburget
 
Příspěvky: 12626
Registrován: pon dub 30, 2018 17:15
Bydliště: Nezamyslice [okr. Prostějov]
Oblast pátrání: Konicko, Protivanovsko (okres Prostějov)
Boskovicko

Re: OCR pro rucne psany text s doucovanim

Příspěvekod zburget » pon dub 12, 2021 8:04

Hledal jsem, ale nikde jsem v aplikaci nenašel žádnou informaci o chybovosti nebo (ne)úspěšnosti učení nebo čtení.
V tabulce s úkoly je sice sloupeček Chyba (loss), ale nic v něm nikde není.

Jo, ještě - když si budu chtít udělat nějakou novou instanci OCR, která nebude "zkažená" jinými jazyky, tak při vytváření nové instance nemám vyplňovat pole "Základní instance"? Nebo to je k něčemu jinému?
Zbyněk Burget
zburget
 
Příspěvky: 12626
Registrován: pon dub 30, 2018 17:15
Bydliště: Nezamyslice [okr. Prostějov]
Oblast pátrání: Konicko, Protivanovsko (okres Prostějov)
Boskovicko

Re: OCR pro rucne psany text s doucovanim

Příspěvekod Davidh » pon dub 12, 2021 12:44

Jestli Tesseract podporuje tuto ligaturu ověřím. Myslím, že se ale OCR naučí i přepis ae, takže jej můžete používat.

Když děláte novou instanci, vždy musíte vybrat základní instanci, ze které se "zdědí" naučené parametry. Chyba (loss) se vypisuje pouze u CRNN OCR, Tesseract tuto informaci nevypisuje. Zpětnou vazbu k trénování budu ještě vylepšovat.

Momentálně trénuji ten Tesseract na jednom datasetu obsahujícím 170k přepsaných řádků. Nevím jak dlouho to bude trvat, takže nevím zda se dnes Vaše úkoly stihnou provést.
Davidh
 
Příspěvky: 46
Registrován: čtv dub 08, 2021 13:25

Re: OCR pro rucne psany text s doucovanim

Příspěvekod zburget » pon dub 12, 2021 13:01

Ještě "drobnost" - je nějaká možnost stáhnout si přečtené texty?
A naopak - je nějaká možnost nahrát tam texty, kdybych měl někde něco přepsáno? Tohle ale nebude asi úplně přímočaré, protože bych musel "nějak" přiřadit přepsaný řádek k řádku ve skenu. Jak tohle děláte, když do stroje nahrajete předpřipravené datasety i s přepisy?
Zbyněk Burget
zburget
 
Příspěvky: 12626
Registrován: pon dub 30, 2018 17:15
Bydliště: Nezamyslice [okr. Prostějov]
Oblast pátrání: Konicko, Protivanovsko (okres Prostějov)
Boskovicko

Re: OCR pro rucne psany text s doucovanim

Příspěvekod zburget » pon dub 12, 2021 13:17

Tak to nahrávání obrázků ještě není úplně O.K., ale už to nepřehazuje skeny s názvama - to už je v pořádku.
Teď mi to dělá to, že jsem vybral třeba 20 skenů a ono mi to nahrálo všechny až od 4. (1-3 se nenahrály vůbec). A udělalo to několikrát a nakonec se to povedlo. Možná to souvisí s tím zatížením stroje, které generuje ten trénink.
Neztartí se to vždycky, ale jen někdy a vždycky se ztratí skeny ze začátku. Nikdy ne uprostřed řady. Jeden, dva nebo tři.
A občas se skeny prohodí (nejdou pak podle abecedy), ale to je, bych řekl, ne příliš podstatná drobnost.
Zbyněk Burget
zburget
 
Příspěvky: 12626
Registrován: pon dub 30, 2018 17:15
Bydliště: Nezamyslice [okr. Prostějov]
Oblast pátrání: Konicko, Protivanovsko (okres Prostějov)
Boskovicko

Re: OCR pro rucne psany text s doucovanim

Příspěvekod zburget » pon dub 12, 2021 13:29

Tak æ to umí - už mi ho to párkrát přečetlo - a na správném místě!
Zbyněk Burget
zburget
 
Příspěvky: 12626
Registrován: pon dub 30, 2018 17:15
Bydliště: Nezamyslice [okr. Prostějov]
Oblast pátrání: Konicko, Protivanovsko (okres Prostějov)
Boskovicko

Re: OCR pro rucne psany text s doucovanim

Příspěvekod Davidh » pon dub 12, 2021 13:54

Stáhnout si přečtené texty možné bude, mám to zapsané, import už asi bude problematičtější, protože data musí mít přesný formát. Datasety které mám obsahují pro každý řádek/region pozice polygonu a přepis, takže mi stačí tyto data nahrát do aplikace pomocí skriptu a pak spustit trénink. Pokud mám dataset, který obsahuje pouze přepisy, tak už jsou řádky vyřezané a polygon pak dávám přes celý řádek (natvrdo).

Na to nahrávání skenů se ještě podívám.
Davidh
 
Příspěvky: 46
Registrován: čtv dub 08, 2021 13:25

Re: OCR pro rucne psany text s doucovanim

Příspěvekod zburget » pon dub 12, 2021 14:07

Jde mi o to, že teď přepisuju regiony, které se nadetekovaly automaticky. A ty jsou často dost nešťastně. Občas chybí nějaký kousek písmenka.
Tak jsem měl v plánu, že až bude možné ty regiony upravovat nebo kreslit ručně, tak že bych vzal ty svoje přepisy a nasypal je na stejnou matriku ještě jednou (budu je muset samozřejmě trochu upravit).
Hlavně abych to nemusel všechno psát znovu.
Abych si stáhl to, co mám teď, v textovém editoru upravil a mohl nahrát zpět. Předpokládám, že pak by mohlo OCR dávat i o chlup lepší výsledky.
Zbyněk Burget
zburget
 
Příspěvky: 12626
Registrován: pon dub 30, 2018 17:15
Bydliště: Nezamyslice [okr. Prostějov]
Oblast pátrání: Konicko, Protivanovsko (okres Prostějov)
Boskovicko

Re: OCR pro rucne psany text s doucovanim

Příspěvekod Duke of York » pon dub 12, 2021 16:40

zburget píše:Zajímavé řešení by bylo, kdyby si to OCR tvořilo i nějaký slovník a třeba u matrik dokázalo odhadovat kontext - protože záznamy pasné později německy a česky mají poměrně dost přesnou strukturu, o kterou se dá při luštění dobře opřít. Jenže to by to OCR muselo vědět, jestli čte matriku nebo něco jiného a ještě jak stará ta matrika je. Protože ce struktura těch zápisů v čase mění… Ale to už by bylo asi na jinou diplomku :-)


Ja bych byl nejradeji, kdyby se to OCR propojilo s DEMoSem. Pak by se ty udaje, co OCR rozpozna daly rovnou sazet do databaze. Jenze blby je, ze my nevime, co je ktere slovo zac, jestli je to obec, jmeno ditete, prijmeni matky a tak. Proto taky nemuzeme ta data, co vznikla prepisem pro DEMoS, pouzit na uceni OCR. Chci na to vyrobit nejakou diplomku, ale to je na dlouhy lokte...
Duke of York
 
Příspěvky: 116
Registrován: ned kvě 08, 2011 6:33

Re: OCR pro rucne psany text s doucovanim

Příspěvekod Davidh » pon dub 12, 2021 17:34

zburget píše:Jde mi o to, že teď přepisuju regiony, které se nadetekovaly automaticky. A ty jsou často dost nešťastně. Občas chybí nějaký kousek písmenka.
Tak jsem měl v plánu, že až bude možné ty regiony upravovat nebo kreslit ručně, tak že bych vzal ty svoje přepisy a nasypal je na stejnou matriku ještě jednou (budu je muset samozřejmě trochu upravit).
Hlavně abych to nemusel všechno psát znovu.
Abych si stáhl to, co mám teď, v textovém editoru upravil a mohl nahrát zpět. Předpokládám, že pak by mohlo OCR dávat i o chlup lepší výsledky.


Až bude možné upravovat regiony a řádky ručně, tak bude stačit pouze upravit ty polygony, přepisy se nesmažou. Nebo to chápu špatně? :)
Davidh
 
Příspěvky: 46
Registrován: čtv dub 08, 2021 13:25

PředchozíDalší

Zpět na Nápady

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 12 návštevníků