Quorvyn

Wie wird ein schräg fotografiertes Dokument entzerrt?

Wie ein Programm die Ecken einer fotografierten Seite findet, ihre echten Proportionen schätzt und sie gerade zieht. Am Beispiel von Quorvyn Docyra.

Zuletzt aktualisiert am · 5 Min. Lesezeit

Warum ein Foto keine gerade Seite liefert

Wer eine Rechnung mit dem Handy fotografiert, hält die Kamera selten genau senkrecht über das Blatt. Auf dem Foto ist die Seite deshalb kein Rechteck mehr. Die Kante, die weiter von der Kamera entfernt war, erscheint kürzer, Zeilen laufen leicht aufeinander zu, und meist liegt das Blatt zusätzlich ein wenig gedreht. Für das Auge ist das kein Problem. Eine Texterkennung liest eine solche Seite aber schlechter, und als Teil eines Archivs sieht sie unordentlich aus. Das Entzerren macht daraus wieder eine Seite, die aussieht, als läge sie flach auf einem Scanner.

Dazu braucht ein Programm zwei Dinge. Es muss wissen, wo die vier Ecken des Blatts im Foto liegen, und es muss die Fläche zwischen diesen Ecken so umrechnen, dass daraus ein Rechteck mit den richtigen Proportionen wird. Wie Quorvyn Docyra beides löst, zeigen wir hier an einem Testlauf mit einer erfundenen Rechnung.

Die Ecken finden

Liegt die Seite so dicht vor der Kamera, dass sie das ganze Bild ausfüllt, übernimmt Docyra einfach die Bildränder. Sonst sucht ein kleines neuronales Netz die Ecken. Es stammt aus dem quelloffenen Projekt DocAligner und ist in der Variante LCNet-100 knapp 5 MB groß. Das Netz sieht eine auf 256 mal 256 Bildpunkte verkleinerte Fassung des Fotos und gibt für jede der vier Ecken eine Wärmekarte aus. Darin steht für jeden Punkt, wie wahrscheinlich dort die gesuchte Ecke liegt. Docyra nimmt in jeder Karte den größten zusammenhängenden Bereich, der eine Schwelle überschreitet, und rechnet seinen Mittelpunkt auf das Originalfoto zurück. Verwendet wird das Ergebnis nur, wenn alle vier Karten eine Ecke liefern.

Findet das Netz keine vier Ecken, greift ein klassisches Verfahren ohne gelerntes Modell. Es wandelt das Foto in Graustufen um, glättet es und sucht Kanten und helle oder dunkle Flächen. Aus deren Umrissen sammelt es Vierecke und bewertet jedes danach, wie groß es ist, wie nah seine Winkel an rechten Winkeln liegen, wie gut seine Seiten auf echten Kanten im Bild liegen und wie deutlich sich innen und außen unterscheiden. Das beste Viereck wird zum Schluss am Foto in voller Auflösung nachgeschärft.

Die Ansicht Zuschneiden in Docyra. Eine erfundene Rechnung liegt leicht gedreht und gekippt auf grauem Grund, eine blaue Linie mit runden Griffen an den vier Ecken und den Seitenmitten umrahmt das Blatt.
Die erkannten Ecken auf einem synthetischen Foto der Testrechnung, aufgenommen aus Docyra auf Commit b2bd60d

Die Ecken prüfen

Beide Verfahren liefern nur einen Vorschlag. Beim Import entzerrt Docyra die Seite damit sofort, und in der Ansicht Zuschneiden können Sie jede Ecke mit der Maus verschieben oder die Erkennung erneut anstoßen. Wenn Sie dort speichern, wird die Seite mit den neuen Ecken noch einmal entzerrt. Findet die Erkennung gar keine Ecken, öffnet Docyra die Ansicht von selbst, mit den Bildrändern als Ecken, und Sie setzen sie dort. Dieser Schritt ist Absicht. Eine falsch erkannte Ecke schneidet sonst ohne Rückfrage einen Teil des Dokuments ab.

Die echten Proportionen schätzen

Bevor die Seite gerade gezogen wird, muss Docyra wissen, wie breit sie im Verhältnis zu ihrer Höhe wirklich ist. Die Kantenlängen im Foto taugen dafür nur, wenn die Seite fast von vorn aufgenommen wurde. Bei einem schrägen Blick erscheint die entferntere Kante verkürzt, und das Verhältnis stimmt nicht mehr. Docyra schätzt es deshalb mit der Rechteckmethode von Zhang und He aus ihrer Arbeit zum Abfotografieren von Whiteboards von 2007. Sie nutzt aus, dass die vier Ecken zu einem echten Rechteck gehören, und berechnet daraus, wie das Blatt im Raum lag. Dafür braucht sie die Brennweite der Kamera. Lässt sie sich aus den Ecken plausibel bestimmen, wird dieser Wert verwendet, sonst der einer üblichen Handykamera.

Weicht das geschätzte Verhältnis höchstens fünf Prozent von dem eines A4-Blatts ab, behandelt Docyra die Seite als A4 und füllt damit das ganze Blatt. Ein Kassenbon, ein Brief im amerikanischen Letter-Format oder eine Karte behält dagegen die eigenen Proportionen und wird verkleinert mittig auf ein weißes A4-Blatt gesetzt. So hat jede gescannte Seite dasselbe Format, ohne dass etwas gestaucht wird.

Die Seite gerade ziehen

Für das eigentliche Entzerren reicht eine einzige Rechenvorschrift, die in der Bildverarbeitung Homographie heißt. Sie bildet eine Ebene so auf eine andere ab, dass gerade Linien gerade bleiben. Bestimmt wird sie durch acht Unbekannte, und jedes der vier Eckpaare aus Foto und Zielblatt liefert zwei Gleichungen. Mit den vier Ecken ist die Abbildung also genau festgelegt. Danach holt sich jeder Bildpunkt der neuen Seite seinen Farbwert von der entsprechenden Stelle im Foto. In der Grundeinstellung rechnet Docyra mit 200 dpi, eine A4-Seite hat dann 1654 mal 2339 Bildpunkte.

Die entzerrte Testrechnung als gerades, weißes A4-Blatt mit Absender, Rechnungsnummer, Datum, Kundennummer, zwei Positionen und dem Gesamtbetrag von 1.237,60 EUR. Über und unter der Rechnung bleibt ein schmaler weißer Rand, an ihrer Oberkante verläuft eine graue Linie.
Dieselbe Seite nach dem Entzerren, unverändertes Ergebnis desselben Testlaufs

An der Oberkante der entzerrten Rechnung ist eine schmale graue Linie zu sehen, rechts und unten eine sehr feine. Dort liegen die gefundenen Ecken knapp außerhalb des Blatts, sodass ein Streifen des Untergrunds mitkommt. Ein solcher Rand ist harmloser als der umgekehrte Fall, bei dem eine Ecke im Blatt liegt und Text abgeschnitten wird.

Die Testrechnung ist ein A4-Blatt, und trotzdem bleibt oben und unten ein weißer Rand. Die Schätzung der Proportionen lag in diesem Lauf rund sechs Prozent neben A4 und damit knapp außerhalb der Toleranz. Docyra hat die Seite deshalb mit ihren geschätzten Proportionen auf das Blatt gesetzt und nichts gestaucht. Auch das ist ein einzelner Lauf und keine Aussage darüber, wie oft die Schätzung bei echten Fotos trifft.

Was dieses Beispiel zeigt und was nicht

Das Foto in den Abbildungen ist synthetisch. Der Testlauf hat die erfundene Rechnung am Rechner gesetzt und sie mit einer bekannten Verzerrung leicht gedreht und gekippt auf grauen Grund gelegt. Es fehlen also Unschärfe, Schatten, Spiegelungen und ein unruhiger Hintergrund, die ein echtes Foto mitbringt. Die Abbildungen zeigen, wie die Schritte zusammenspielen. Wie oft die Ecken auf echten Fotos stimmen, belegen sie nicht, und dazu nennen wir hier keine Zahl.

Eine Grenze gilt unabhängig von der Vorlage. Die Homographie bildet nur eine flache Ebene ab. Eine gewellte Seite, ein aufgeschlagenes Buch mit gewölbter Mitte oder ein Knick lassen sich damit nicht glätten. Solche Seiten werden gerade gedreht, aber nicht flach.

Wie es weitergeht

Kanten erkennen und entzerren sind in Quorvyn Docyra kostenlos und laufen vollständig auf Ihrem Rechner. Wie aus der entzerrten Seite anschließend durchsuchbarer Text wird, beschreibt der Artikel Wie liest eine Texterkennung eine Rechnung?, und einen allgemeinen Einstieg gibt Wie funktioniert Texterkennung offline unter Windows?. Docyra befindet sich noch in Entwicklung und ist nicht erhältlich.