Erstellen eines mobilen Dokumentenscanners ohne Abhängigkeiten:Umgebung und Einrichtung

Ich hatte zwei Hauptziele für dieses Projekt:etwas über die Computer-Vision-Algorithmen und -Techniken zu lernen, die beim Scannen von Dokumenten verwendet werden, und dieses Wissen zu nutzen, um ein Programm zu entwickeln, das ich tatsächlich lieber als bestehende Apps wie CamScanner verwenden würde.

Ich wollte mein Endprodukt auf iOS, macOS, Android und Windows verwenden können, aber ich wollte nicht vier separate native Codebasen pflegen müssen. Flutter schien eine gute Option zu sein, aber ich kenne mich mit Dart nicht aus, und die angeblichen Leistungsvorteile von Flutter gegenüber Web-Apps sind laut meinen lokalen Tests übertrieben. Daher habe ich mich für die Verwendung einer Progressive Web App (PWA)-Architektur für meinen Dokumentenscanner entschieden.

Computer Vision umfasst oft mehrere teure Operationen an einem Bild, daher wäre es logisch, WebAssembly für die eigentliche Dokumentenerkennung und JavaScript nur für die Benutzeroberfläche zu verwenden. Obwohl ich mit Rust und dem Kompilieren in WASM ziemlich vertraut bin, bin ich ein Fan davon, JS an seine Grenzen zu bringen, und ich wollte sehen, wie schnell JavaScript für eine so rechenintensive Aufgabe sein kann; Wie sich herausstellt, ist JS sogar auf Low-End-Mobilgeräten schnell genug für einen Dokumentenscanner. (Unabhängig davon baue ich derzeit eine "Endprodukt"-Version dieser App mit WASM, einer richtigen Benutzeroberfläche und einigen Bibliotheken. Sie sollte schneller und benutzerfreundlicher sein als der vorhandene Prototyp).

Angesichts dieser Einschränkungen machte ich mich an die Arbeit, indem ich ein Parcel 2-Projekt mit TypeScript, der Precaching-Integration des Parcel Service Worker und meinem PWA-Plugin zur Manifesterstellung zusammenhackte. Dies ist mein Standard-Setup für alle meine neuen Projekte, aber normalerweise werfe ich auch React und Emotion hinein; Leider war ich zu diesem Zeitpunkt bereits dem Mantra „Null Abhängigkeiten“ verpflichtet, sodass die einzigen Pakete, die ich installierte, Build-Tools waren. Nächster Schritt:Finden Sie heraus, wie genau die Dokumentenerkennung funktioniert, damit ich die App tatsächlich erstellen kann.