abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:33 | Zajímavý projekt

    Singularity je rootkit ve formě jaderného modulu (Linux Kernel Module), s otevřeným zdrojovým kódem dostupným pod licencí MIT. Tento rootkit je určený pro moderní linuxová jádra 6.x a poskytuje své 'komplexní skryté funkce' prostřednictvím hookingu systémových volání pomocí ftrace. Pro nadšence je k dispozici podrobnější popis rootkitu na blogu autora, případně v článku na LWN.net. Projekt je zamýšlen jako pomůcka pro bezpečnostní experty a výzkumníky, takže instalujte pouze na vlastní nebezpečí a raději pouze do vlastních strojů 😉.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 21:22 | Zajímavý projekt

    Iconify je seznam a galerie kolekcí vektorových open-source ikon, ke stažení je přes 275000 ikon z více jak dvou set sad. Tento rovněž open-source projekt dává vývojářům k dispozici i API pro snadnou integraci svobodných ikon do jejich projektů.

    NUKE GAZA! 🎆 | Komentářů: 0
    včera 03:33 | IT novinky

    Dle plánu certifikační autorita Let's Encrypt nově vydává také certifikáty s šestidenní platností (160 hodin) s možností vystavit je na IP adresu.

    Ladislav Hagara | Komentářů: 6
    17.1. 14:44 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 14.0 (Mastodon). Forgejo je fork Gitei.

    Ladislav Hagara | Komentářů: 3
    17.1. 13:11 | Zajímavý projekt

    Just the Browser je projekt, 'který vám pomůže v internetovém prohlížeči deaktivovat funkce umělé inteligence, telemetrii, sponzorovaný obsah, integraci produktů a další nepříjemnosti' (repozitář na GitHubu). Využívá k tomu skrytá nastavení ve webových prohlížečích, určená původně pro firmy a organizace ('enterprise policies'). Pod linuxem je skriptem pro automatickou úpravu nastavení prozatím podporován pouze prohlížeč Firefox.

    NUKE GAZA! 🎆 | Komentářů: 3
    16.1. 16:44 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.18. Díky 174 přispěvatelům.

    Ladislav Hagara | Komentářů: 2
    16.1. 15:11 | IT novinky

    Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.

    Ladislav Hagara | Komentářů: 25
    16.1. 13:55 | IT novinky

    Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny

    … více »
    Ladislav Hagara | Komentářů: 0
    16.1. 02:22 | Nová verze

    D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.

    Ladislav Hagara | Komentářů: 0
    16.1. 02:00 | Nová verze

    Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (17%)
     (5%)
     (0%)
     (9%)
     (19%)
     (3%)
     (6%)
     (2%)
     (11%)
     (40%)
    Celkem 506 hlasů
     Komentářů: 14, poslední včera 10:22
    Rozcestník

    Automatizované retušování digitalizovaných textů – 2

    20. 7. 2009 | Jiří Poláček | Návody | 3689×

    V druhé části popisovaného postupu retušování digitalizovaných textů konečně dostává slovo program unpaper. Aby bylo možné jej správně a účinně používat, je nejdříve nutné pochopit algoritmus, kterým retušování skenovaného textu provádí. Ten je podrobně vysvětlen v dokumentaci, zde se omezím jen na stručný výtah.

    Princip fungování unpaperu

    Pro unpaper je podstatné najít na naskenované stránce obdélníkovou oblast s vlastním obsahem této stránky (tj. obvykle s nějakým textem). Obsah masky (jak je v originální dokumentaci obdélníková oblast nazývána) zůstane součástí výstupu, vše okolo je smazáno. Masku je možné specifikovat fixně, hlavní síla unpaperu však spočívá právě ve velmi propracované automatické detekci. Od nějakého bodu, u kterého předpokládáme, že by měl být součástí masky (například od středu obrázku – výchozí hodnota) posouváme jakýsi virtuální proužek udaným směrem (vlevo a vpravo, volitelně též nahoru a dolů), přičemž v každém kroku počítáme počet tmavých bodů. Jakmile jejich počet klesne pod stanovenou mez, má se za to, že jsme našli okraj masky. Nalezená maska se pootočí o vypočítaný úhel sklonu a usadí do výsledné stránky.

    Jak již bylo řečeno dříve, unpaper umí rozdělit naskenovanou dvoustranu na jednotlivé strany – to ve světle předchozího odstavce neznamená nic jiného, než že se zároveň hledají dvě masky – jedna v levé a druhá v pravé polovině naskenované dvoustrany. Ještě předtím, než dojde na hledání masek, provádí unpaper následující dva druhy činností:

    1. otočení o 90°, zrcadlení, posun, změna velikosti a promazání specifikovaných oblastí – toto vše pouze na přání uživatele;
    2. aplikace celkem čtyř filtrů pro pročištění obrazu – to se děje automaticky, lze však povypínat.

    Otočení o 90 stupňů, zrcadlení a změny velikosti lze s unaperem dělat i dodatečně – po usazení nalezené masky do stránky – žádnou z těchto vlastností jsem však zatím neměl možnost ocenit.

    Základní užití unpaperu

    Konečně unpaper v příkladech – začneme základním voláním pro dvoustrany:

    unpaper --layout double --output-pages 2 dvoustrana007.pgm strana%01d.pgm 

    Základní volání unpaperu na jedné zkušební stránce, --layout double sděluje, že na vstup dáváme dvoustranu a chceme najít dvě masky; --output-pages 2 pak zajistí dva soubory na výstupu. S pomocí formátovacího řetězce %01d zapneme jednociferné číslování výstupních souborů, získáme tak soubory pojmenované strana1.pbmstrana2.pbm. K většině parametrů unaperu existuje i zkrácená varianta, první příklad by šel přepsat jako

    unpaper -l double -op 2 dvoustrana007.pgm strana%01d.pgm 

    Dále budu uvádět dlouhé názvy parametrů, zkrácené verze najdete v nápovědě.

    Pokud není naskenovaná dvoustrana nějak „extra divoká“, mělo by už toto základní volání vrátit uspokojivé výsledky. Špatný výsledek je většinou způsoben tím, že se nepodařilo správně rozpoznat hranice masky. Obvyklým problémem je přílišné zabíhání textu do černého pruhu naskenovaného hřbetu, který se nepodařilo při snímání knihy pořádně rozevřít. Jako nejúčinnější lék se mi osvědčilo zmenšení šířky virtuálního proužku pro hledání okrajů masky:

    unpaper -l double -op 2 --mask-scan-size 20 dvoustrana007­.pgm strana%01d.pgm 

    Výchozí šířkou je 50 bodů, čím menší ji nastavíme, tím přísněji bude posuzována možná hranice textu (a naopak).

    Problém jménem vícesloupcová sazba

    Jiným častým problémem je dvou a vícesloupcová sazba, používaná například pro rejstříky na konci knih – algoritmus hledání masky celkem pochopitelně může občas detekovat jen jeden sloupec. Pomoci zde může naopak zvětšení šířky virtuálního proužku, to však bude fungovat jen pokud mezírka mezi sloupci bude relativně úzká v porovnání se skutečnými okraji stránky. Nabízí se však i jiné možnosti, například změna způsobu hledání okrajů masky na směry nahoru a dolů:

    unpaper -l double -op 2 --mask-scan-direction vertical dvoustrana007.pbm strana%01d.pbm 

    Zde jsme významně změnili výchozí nastavení, ve kterém se hledá pouze levý a pravý okraj, aby (analogicky s problémem vícesloupcové sazby) nebyly detekovány okraje stránky mezi odstavci. Záleží hodně na typu dokumentu, zda lze vertikální způsob hledání masky použít, aby nedocházelo například k ořezu čísel stránek apod. Další možností je definování minimálního a maximálního rozměru automaticky hledané masky:

    unpaper -l double -op 2 --pre-shift –200,25 --mask-scan-minimum 1000,1500 \
     --mask-scan-maximum 1200,1800 dvou­strana007.pgm strana%01d.pgm 

    Pokud bude nalezena maska menší než přípustné minimum, bude ignorována a jako maska bude stanovena oblast velikosti definované maximální masky se středem v počátku hledání masky. Pokud bude nalezena maska větší než stanovené maximum, bude tato nalezená maska oříznuta na povolené maximum. Parametr --pre-shift, který nasnímaný obrázek posouvá o zadaný počet bodů (záporné hodnoty posouvají vlevo/nahoru, kladné vpravo/dolů), je zde právě kvůli korekci středů masek. Volitelně by bylo možné tyto počáteční body definovat také s pomocí parametru --mask-scan-point.

    Podaří-li se nám minimální a maximální rozměry masky dobře odhadnout, lze očekávat úspěch, zároveň je to však předzvěst k tomu, abychom na (v tomto případě) nespolehlivou automatiku pozapomněli a masky si nastavili ručně:

    unpaper -l double -op 2 --no-mask-scan --mask 320,10,1570,1890 \
     --mask 1590,10,2810,­1890 dvoustra­na007.pgm strana%01d.pgm 

    Zpracování více souborů

    Máme-li natrénováno použití parametrů ovlivňující určení masek, můžeme se seznámit s dalšími užitečnými volbami unpaperu:

    unpaper -l double -op 2 dvoustrana%03d­.pgm strana%03d.pgm 

    Formátovací řetězec %03d v názvech vstupního i výstupního souboru deklaruje číslování od 001 do 999, ze vstupního souboru dvoustrana001.pgm tak vzniknou strana001.pgmstrana002.pgm; z dvoustrana007­.pgm pak strana013.pgmstrana014.pgm apod.

    unpaper -l double -op 2 -start 10 -end 20 --exclude 13,16–18 \
     --start-output 101 dvoustrana%03d­.pgm strana%03d.pgm 

    Volby -start-end udávají interval vstupních souborů, které se budou zpracovávat, podle příkladu se tak bude jednat o soubory dvoustrana010.pgmdvoustrana020.pgm s výjimkou těch s čísly 013, 016, 017 a 018, které jsou explicitně vyjmuty z vybraného rozsahu pomocí parametru --exclude. Volba --start-output zajistí, že budou výstupní soubory číslovány od hodnoty 101.

    Filtry

    Unpaper při zpracování obrazu aplikuje následující filtry:

    • blackfilter – odstraňuje rozsáhlé černé oblasti, typicky pruhy na okrajích naskenovaných stran
    • noisefilter – odstraňuje šum, neboli promazává oblasti obsahující málo černých bodů
    • blurfilter – odstraňuje šmouhy – shluky tmavých bodů, v jejichž okolí je „pusto prázdno“
    • grayfilter – odstraňuje oblasti obsahující pouze šedé body

    Filtry lze při volání unpaperu potlačit parametrem --no-<název filtru>, kupříkladu grayfilter je u černobílých obrázků zhola zbytečný a stejně tak se neuplatní noisefilter u obrázků, které jsme již dříve pročistili programem pbmclean:

    unpaper -l double -op 2 --no-noisefilter --no-gray-filter --no-blurfilter 14,32–39 \
     --blackfilter-scan-exclude 300,120,700,6­90 dvoustrana%03d­.pbm strana%03d.pbm 

    V příkladu jsme vypnuli též blurfilter, ale pouze pro strany 14 a 32 až 39, a pro blackfilter jsme vytyčili zakázanou oblast, ve které se neuplatní – aby například nesmazal sloupečky v nějakém grafu. Parametrů ovlivňujících chování filtrů existuje povícero, případné zájemce o hrátky s filtry odkazuji na dokumentaci.

    Jednotky a velikosti stránek

    Ve všech výše uvedených příkladech, kde se vyměřuje nějaká část obrázku, jsou hodnoty udávány v bodech. Unpaper nicméně umí pracovat i s obvyklými měrnými jednotkami, jako jsou milimetry, centimetry či palce a velikostmi stránek A5, A4, A3, LetterLegal včetně orientací na šířku. Aby však s těmito jednotkami bylo nakládáno správně, je nutné také správně nastavit rozlišení DPI (pokud se liší od výchozí hodnoty 300 dpi):

    unpaper --dpi 200 -l double -op 2 --size a4-landscape --pre-shift \
     –11mm,0.25in --post-size a3-landscape dvoustrana010.pbm strana%01d.pbm 

    V příkladu unpaperu sdělujeme, že má na vstupu očekávat (případně přepočítat) stránku velikosti A4 na šířku (tj. dvě A5 vedle sebe) v rozlišení 200 dpi. Volba --pre-shift posouvá obsah stránky o 11 milimetrů vlevo a čtvrt palce dolů, --post-size nakonec zvětší výslednou velikost dvoustrany na A3 orientované na šířku, tj. po rozdělení do dvou souborů budou jednotlivé stránky velikosti A4 na výšku.

    Dlužno podotknout, že lícování výsledných stránek zvětšováním pomocí volby --post-size či --post-stretch (bez zachování poměru stran) akorát navýší výslednou velikost souboru, aniž bychom získali nějakou informaci navíc. Vhodnější je nastavení vhodného rozlišení při převodu do PDF, viz dále.

    Umísťování masky na stránku

    Poslední odstavec týkající se unpaperu bude věnován umísťování masky do výsledné stránky. Jak již bylo řečeno, výchozím chováním je vycentrování, které ovšem nemusí být vždy žádoucí. Připomínám, že ve výchozím nastavení se nejdříve hledá levý a pravý okraj masky přes celou výšku stránky a následně se dohledává horní a dolní okraj směrem od okrajů (v terminologii unpaperu se provádí tzv. border-scan). Centrování masky lze vypnout parametrem --no-mask-center, skenování okrajů pak přes --no-border-scan. Podívejme se na zdrojovou stránku a co to způsobí:

    Zdrojový obrázek
    Zdrojový obrázek

    unpaper zdroj.pbm test1.pbm 

    Zpracovaný obrázek podle výchozího nastavení
    Zpracovaný obrázek podle výchozího nastavení

    unpaper --no-mask-center zdroj.pbm test2.pbm 

    Zpracovaný obrázek se zakázaným vycentrováním masky
    Zpracovaný obrázek se zakázaným vycentrováním masky

    unpaper --no-border-scan zdroj.pbm test3.pbm 

    Zpracovaný obrázek se zakázanou detekcí okrajů
    Zpracovaný obrázek se zakázanou detekcí okrajů

    unpaper --no-mask-center --no-border-scan zdroj.pbm test4.pbm 

    Zpracovaný obrázek s kombinací obou zákazů
    Zpracovaný obrázek s kombinací obou zákazů

    Masku je možné také zarovnat podle přání:

    unpaper --dpi 200 --overwrite --border-align bottom --border-margin 2cm zdroj.pbm test5.pbm 

    Hodnota parametru --border-align definuje okraj, ke kterému bude maska zarovnána, --border-margin pak udává velikost okraje.

    Zpracovaný obrázek zarovnaný ke spodnímu okraji
    Zpracovaný obrázek zarovnaný ke spodnímu okraji

    Převod zpět do černobílé

    S trochou štěstí nyní máme po zpracování unpaperem vyretušované texty a můžeme pomalu začít kompletovat. Prvním – volitelným – krokem je převedení obrazů zpět na černobílé. V sadě nástrojů netpbm se nabízejí hned dva specializované programy k tomuto účelu – pamditherbwpamthreshold. První jmenovaný nahrazuje šedé odstíny odpovídajícím černobílým vzorkem, druhý pak šedé body mění na černou či bílou v závislosti na „jasu“ svého okolí. Oba programy disponují řadou parametrů, kterými se dá metoda převodu ovlivnit, já rovnou prozradím, že po sadě testů jsem byl nejvíce spokojený s pamthreshold:

    pamthreshold -dual=2×2 -threshold=0.52 stra­na013.pgm > strana013.pam 

    Černobílý obrázek převedený do odstínů šedé programem pbmtopgm
    Černobílý obrázek převedený do odstínů šedé programem pbmtopgm

    Převedení šedého obrázku zpět do černobílé
    Převedení šedého obrázku zpět do černobílé

    Malou nepříjemností těchto programů je fakt, že výsledek ukládají ve formátu PAM, kterému – jak již jsem zmiňoval v prvním díle – jiné programy nerozumějí. Chceme-li si tedy prohlédnout výsledek, musíme použít nějaký převodník, například pamtopnm.

    Pokud nechceme retušované texty převádět zpět na černobílou, ale výsledek zpracovaný unpaperem se nám přeci jenom zdá lehce rozmazaný, pomůže nám pgmenhance:

    pgmenhance strana013.pgm > ostra_strana013.pgm 

    Odstranění rozmazaní šedých písmen programem pgmenhance
    Odstranění rozmazaní šedých písmen programem pgmenhance

    Výroba výsledného PDF

    Konečně máme stovky hotových stránek ve stejném počtu nekomprimovaných souborů, a chtěli bychom to všechno dostat do jednoho souboru v úspornějším formátu, například do PDF. Cesta vede před formát TIFF:

    for I in strana*.pgm; do pnmtotiff -flate $I > ${I%%.pgm}.tiff; done

    → převede soubory do formátu TIFF s kompresí „flate“ (u které jsem si experimentálně ověřil, že je nejúčinnější)

    tiffcp strana*.tiff vysledek.tiff 

    → spojí více obrázků do jednoho vícestránkového TIFFu

    tiff2pdf -z -o vysledek.pdf vysledek.tiff 

    → převede vícestránkový TIFF do PDF, parametr -z si vynutí kompresi LZ77.

    Program tiff2pdf disponuje též volbami pro škálování uložených stránek – pokud například budeme chtít obsah napasovat na velikost strany A4, použijeme takovéto volání:

    tiff2pdf -p A4 -u i -x 166 -y 166 -z -o vysledek.pdf vysledek.tiff 

    Parametr -p nastavuje velikost stránky na A4, -u definuje měrné jednotky na palce, -x-y pak udávají rozlišení v příslušném směru v nastavených jednotkách, tj. zde v palcích. Hodnota 166 je menší jak rozlišení 200 dpi, v kterém bylo skenováno – to znamená, že v tomto případě bude obsah stránky roztažen. Optimální hodnotu dpi je samozřejmě vhodné si nejdříve vyzkoušet na jedné testovací stránce.

    Máme hotovo

    Přeji pevné nervy a mnoho úspěchů při digitalizaci!

           

    Hodnocení: 100 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    20.7.2009 13:08 dalda
    Rozbalit Rozbalit vše Re: Automatizované retušování digitalizovaných textů – 2

    Šlo by to ještě prohnat přes nějaké OCR a pak teprve tvořit PDF?

    20.7.2009 13:34 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Automatizované retušování digitalizovaných textů – 2
    O tom už se hodně diskutovalo pod minulým dílem. Pokud budete chtít obrázek prohnat přes OCR (což je rozumné, protože ve výsledku pak lze vyhledávat, lze jej indexovat, kopírovat z něj atd.), jsou v článku popisované úpravy zbytečné a mnohdy kontraproduktivní. Ty potřebné úpravy udělá OCR stejně, ale lépe se mu bude pracovat nad originálním obrázkem, než nad obrázkem, ze kterého byla spousta informací odstraněna a přidáno množství digitálního šumu.
    21.7.2009 20:56 zdenek-hbr | skóre: 10 | blog: .
    Rozbalit Rozbalit vše Re: Automatizované retušování digitalizovaných textů – 2
    hezkej clanek. ja jen doufam ze podobnou pakarnu nebudu muset nikdy resit :-)
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.