Vytvoření mobilního skeneru dokumentů s nulovými závislostmi:Úvod

Aplikace pro skenování dokumentů jako CamScanner a Smallpdf používám k odesílání digitálních kopií fyzických dokumentů již dlouhou dobu, ale vždy mě zajímalo, jak přesně tyto aplikace fungují. Když vyfotíte kus papíru, a to i bez papíru dokonale vycentrovaného, ​​tyto aplikace automaticky najdou jeho rohy a pokřiví perspektivu obrázku tak, aby vypadal, jako by byl pořízen speciálním skenerem. Před několika týdny jsem začal hledat skenery dokumentů s otevřeným zdrojovým kódem, které bych mohl studovat.

Problém? Nejsou žádné. Jediné skenery dokumentů s otevřeným zdrojovým kódem, které jsem našel, v podstatě vše předaly OpenCV, které má bohužel velmi řídkou interní dokumentaci.

Rozhodl jsem se tedy vytvořit si vlastní skener dokumentů s jedním úlovkem:nepoužíval bych nula knihoven třetích stran . O měsíc později mám prototyp, se kterým jsem spokojen, a fungoval dobře na většině dokumentů, se kterými jsem ho testoval.

Zkusme to s náhodným obrázkem od Googlu:

Tady je můj skener dokumentů v práci:

A zde je náš konečný výsledek:

Kvalita není dokonalá, protože původní obrázek neměl příliš vysoké rozlišení, ale pořízení snímků většiny dokumentů pomocí slušného smartphonu přináší skvělé výsledky. Pokud se na to chcete podívat, kód a demo web jsou k dispozici na GitHubu.

Důrazně však doporučuji přečíst si nejprve zbytek článků v této sérii, abyste pochopili, co se přesně děje pod kapotou. Věřím, že každý se může naučit i ty nejsložitější aspekty informatiky, a proto jsem tuto sérii napsal tak, že potřebujete pouze začátečníky v programování a základní znalosti algebry. Pojďme se rovnou ponořit!