Já jsem taky hledal a našel jsem jen nějaký script, který byl pro Python (nebo Perl) už si nepamatuju. Taky jsem se touto myšlenkou zabýval. Podle mého názoru to opravdu není jednoduché. Co se týče detekce tak jsem to rozvrhl asi na tři fáze.
1) První věc, nad kterou jsem přemýšlel bylo že je třeba nějak odlišit bílou plochu nebo plochu s obrázkama od zbytku textu.
2) Je třeba rozlišit mezi řádky od textu samotného a určit výšku písma
3) je třeba provést detekci písma a určit typ písma.
Zatím bych ti poradil jen k první části, dle toho nejlepšího co mě napadlo, nevím nakolik efektivního.
Projížděl bych sloupce pixelů odshora dolů a hledal bych světlé pixely v souvislém sloupci. To ale znamená kontrolovat vždy několik pixelů za sebou, okraj textů bývá lehce rozmazaný, a ten nechceme zahrnout do výsledku. Všechny sloupce kde není text, bych ukládal.
Současně je tu ovšem problém jak určit jak vysoké jsou meziřádky, které by neměly být zahrnuty do výsledku, neboť jsou součástí textové oblasti. Tenhle problém jen tak vyřešit asi nejde. Muselo by se to odečíst až poté co provedeš detekci textu.
Nakonec bych několikrát opakoval smyčky, které mají za cíl seskupit nalezené sloupce a určit tak plochy, které se netýkají textu. To znamená porovnávat pozici začátku a konce následujícího řádku, abych například zjistil jestli daná plocha má tvar obdélníku a mohl ji zarovnat. Cílem je vytvořit plochy obdélníků, které vyloučí že by se mohlo jednat o textovou nebo obrázkovou plochu.
Pak je třeba hledat oblast textu a oblast obrázků. To by snad také šlo určit pokud budeš porovnávat pozice těch obdélníků, ať už mezer či barvou vyplněné oblasti.
K detekci textu, když víš kde leží text - protože si našel delší obdélníkové oblasti kterou mají malou výšku, pak musíš určit jednotlivé linie textu (Jako kde končí velké a kde končí malé písmena).