Die Ausrichtung des mit dem Mobiltelefon aufgenommenen Dokuments ist falsch. Verarbeiten Sie zuerst EXIF und senden Sie es dann an OCR.
Das Vertragsfoto auf meinem Telefon sah vertikal aus, aber nach dem Hochladen drehte es sich horizontal. Der Grund kann sein, dass die Pixel selbst nicht gedreht werden, der Betrachter passt die Anzeige einfach anhand der EXIF-Ausrichtungsmarkierungen an. Wenn die OCR-Eingabe diese Markierung ignoriert, wird die Seite in die andere Richtung gelesen.
– Der von OCR für das angepasste Bild zurückgegebene Rahmen muss die Eingabegröße und Transformationsinformationen speichern und die umgekehrte Transformation sollte durchgeführt werden, wenn er wieder im Originalbild angezeigt wird.
Mit Mobiltelefonen aufgenommene Vertragsfotos werden im Album vertikal angezeigt, nach dem Hochladen werden sie jedoch horizontal. Viele Leute werden denken, dass das Foto schief ist oder die Datei falsch ist. Dieser Artikel richtet sich an Personen, die Mobiltelefonfotos an den OCR- oder Übersetzungsprozess senden müssen, um die Unterscheidung zwischen „Anzeigerichtung"und „Pixelrichtung"zu erleichtern.
Nachdem Sie dies gelesen haben, wissen Sie, was ein EXIF-Orientierungsflag ist, welche Funktion Pillow für die Handhabung verwendet und welche Probleme es nicht löst. In den Beispielen werden synthetische Beispiele verwendet und der Code wurde in einer isolierten Umgebung überprüft. Dies stellt jedoch keine Garantie für alle echten Dateien oder die Produktleistung dar. Bevor Sie wichtige Dokumente bearbeiten, bewahren Sie bitte die Originale auf und überprüfen Sie sie anhand der Grenzen und Akzeptanzpunkte im Text.
Was soll ich tun, wenn das mit meinem Mobiltelefon aufgenommene Dokument in der falschen Richtung ist? Fazit in einem Satz
Verwenden Sie zuerstImageOps.exif_transpose, um die EXIF-Richtungsmarkierung anzuwenden, und senden Sie dann das angepasste Bild an OCR. Neigungs- und Perspektivenprobleme müssen separat behandelt werden.
| Ihre Situation | Empfohlene Praktiken | Grund |
|---|---|---|
| Der Viewer wird normal angezeigt, aber die Parsing-Ergebnisse sind seitwärts | Verwenden Sie zunächst ImageOps.exif_transpose, um die EXIF-Richtung anzuwenden | Pixel werden nicht gedreht, nur die Anzeigeebene wird angepasst |
| Das gesamte Foto ist leicht geneigt | Neigungskorrektur individuell bewerten | exif_transpose verarbeitet keine Aufnahmewinkel |
| Das Papier ist trapezförmig | Erkennen Sie Papiergrenzen und führen Sie eine Perspektivkorrektur durch | Perspektivische Verzerrung ist kein Problem der EXIF-Ausrichtung |
| Das von OCR zurückgegebene Feld muss gespeichert werden | Zeichnen Sie gleichzeitig Eingabegröße, Orientierungstransformation und Ausgabegröße auf | Die angepassten Bildkoordinaten unterscheiden sich vom Originalbild |
Die Anzeigerichtung und die Pixelrichtung sollten getrennt betrachtet werden.
Die Pixel eines mobilen Fotos dürfen nicht selbst gedreht werden und die EXIF-Ausrichtungs-Tags in der Datei sagen dem Betrachter, wie es angezeigt werden soll. Der Betrachter passt das Bild entsprechend an und wenn die OCR-Engine diese Markierung ignoriert, liest sie die Seite in die andere Richtung.
ImageOps.exif_transpose von Pillow passt Pixel basierend auf Orientierungsinformationen an und entfernt angewendete Orientierungsmarkierungen, um nachfolgende Drehungen zu vermeiden. Dabei geht es um die EXIF-Ausrichtung, nicht um willkürliche Aufnahmeneigung oder perspektivische Verzerrung. Das Begradigen des mit dem Mobiltelefon schief aufgenommenen Papiers erfordert noch einen weiteren Satz geometrischer Bearbeitung.
Rotationsgrenzen mit synthetisierten Pixeln testen
Der folgende Code verwendet ein zusammengesetztes Bild, um zu überprüfen, ob die Ausrichtungsmarkierungen korrekt angewendet werden:
from PIL import Image, ImageOps
source = Image.new("RGB", (40, 20), "white")
source.putpixel((0, 0), (255, 0, 0))
source.getexif()[274] = 6
fixed = ImageOps.exif_transpose(source)
assert fixed.size == (20, 40)
assert fixed.getpixel((19, 0)) == (255, 0, 0)
assert fixed.getexif().get(274) is None
assert source.size == (40, 20)
again = ImageOps.exif_transpose(fixed)
assert again.size == fixed.size
assert again.tobytes() == fixed.tobytes()
Die roten Pixel in den Ecken werden hier verwendet, um geometrische Beziehungen zu überprüfen, ohne die OCR-Engine aufzurufen oder echten Text zu simulieren. Daher kann der Test nur die Schlussfolgerung unterstützen, dass „die Richtungsmarkierungen korrekt angewendet wurden", nicht jedoch, „um wie viel sich die Texterkennungsrate verbessert hat". Die Beispiele hängen von Pillow ab und sollten in gesperrten Versionen ausgeführt werden.
Anomalien der Umleitungsrichtung
Wenn Sie auf ein Richtungsproblem stoßen, betrachten Sie zunächst das Phänomen und ermitteln Sie dann die Ursache. Die folgende Tabelle kann Ihnen bei der Entscheidung über Ihre nächsten Schritte helfen:
| beobachten | Mögliche Gründe | Nächster Schritt |
|---|---|---|
| Viewer normal, Parser horizontal | EXIF wurde nicht angewendet | Überprüfen Sie die Ausrichtungsbeschriftungen im Vergleich zu den Pixeln |
| Die gesamte Seite ist leicht geneigt | Aufnahmewinkel | Unabhängige Bewertung der Neigungskorrektur |
| Die Seite ist trapezförmig | perspektivische Verzerrung | Korrektur nach Erkennung von Papiergrenzen |
| Text verkehrt herum, aber kein Markup | Fehlende Metadaten | Beurteilen Sie anhand des Inhalts der Seite und machen Sie keine blinden Vermutungen |
Die Koordinatenaufzeichnung sollte nach der Drehung beginnen
Wenn OCR ein Textfeld auf dem angepassten Bild zurückgibt, entsprechen die Koordinaten des Felds dem angepassten Bild und nicht dem ursprünglich aufgenommenen Bild. Daher müssen drei Informationen beibehalten werden: Eingabegröße, Orientierungstransformation und Ausgabegröße. Wenden Sie beim Anzeigen der Hervorhebung eine umgekehrte Transformation auf die Koordinaten an und kehren Sie zur ursprünglichen Bildposition zurück.
Wenn Sie nur eine Gruppe von Kästchen speichern, ohne aufzuzeichnen, zu welchem Bild sie gehört, weicht die Hervorhebungsposition vom Text ab.
Richten Sie das Bild vor dem Übersetzen aus
Wenn Sie gescannte Materialien über das OCR- und Übersetzungsportal von OmniDoc (Produktportal) verarbeiten, können Sie zunächst die Ausrichtung anhand des Originals bestätigen. Orientierung, Perspektive und Klarheit sind drei verschiedene Prüfpunkte, die gesondert bestätigt werden müssen.
Nachdem die Eingabebedingungen klar geklärt sind, werden die zweisprachigen Ergebnisse zur Beurteilung der Übersetzungsqualität herangezogen. Wenn Sie fehlende Wörter dem Übersetzungsmodell zuordnen, wann immer Sie auf sie stoßen, übersehen Sie häufig das eigentliche Eingabeproblem.
Quellen: Pillow ImageOps.
📊 Kernvergleich
| Verarbeitungsobjekt | Verarbeitungsmethode | Ob abgeschlossen durchexif_transpose |
|---|---|---|
| EXIF-Richtungsflag | Passen Sie Pixel anhand von Markierungen an | Ja |
| Die gesamte Seite ist leicht geneigt | Aufnahmewinkelkorrektur | Nein, eine unabhängige Bewertung ist erforderlich |
| Die Seite ist trapezförmig | Perspektivkorrektur | Nein, Papiergrenzen müssen erkannt werden |
🎯 Welche Methode ist für Dich geeignet?
wenn du……
- Viewer OK, OCR-Ergebnisse seitwärts: Wenden Sie zuerst die EXIF-Ausrichtung an und führen Sie dann die OCR erneut ein.
- Gesamtverzerrung des Fotos: Behandeln Sie die Neigungskorrektur als unabhängigen Schritt und erwarten Sie nicht, dass die Ausrichtungsverarbeitung das Problem löst.
- Die Kante des Papiers ist trapezförmig: Erkennen Sie zuerst die Kante des Papiers und führen Sie dann eine Perspektivkorrektur durch.
- Die ursprüngliche Bildposition muss hervorgehoben werden: Speichern Sie die Eingabegröße und Transformationsinformationen und führen Sie dann bei der Anzeige die umgekehrte Transformation durch.
❓ Häufig gestellte Fragen (FAQ)
1. Kann exif_transpose das schiefe Papier begradigen?
kann nicht. Es passt Pixel nur basierend auf EXIF-Ausrichtungsmarkierungen an und berücksichtigt keine Aufnahmewinkel oder perspektivischen Verzerrungen, die eine zusätzliche geometrische Verarbeitung erfordern.
2. Warum wird der Viewer normal angezeigt, aber das OCR-Ergebnis ist horizontal?
Der Betrachter wendet EXIF-Ausrichtungsmarkierungen an, die Pixel selbst dürfen jedoch nicht gedreht werden. Wenn OCR diese Markierung ignoriert, wird die Seite in die andere Richtung gelesen.
3. Kann der Beispielcode zeigen, um wie viel sich die Erkennungsrate verbessert hat?
kann nicht. Das Beispiel verwendet synthetische Pixel, um zu überprüfen, ob die Ausrichtungsmarkierungen korrekt angewendet werden, ohne die OCR-Engine aufzurufen und ohne echten Text zu simulieren.
4. Warum stimmt der von OCR zurückgegebene Rahmen nicht mit der Position des Originalbilds überein?
Wenn OCR auf einer angepassten Karte ausgeführt wird, entsprechen die Koordinaten der Box der angepassten Karte. Es ist notwendig, die Eingabegröße, Transformation und Ausgabegröße aufzuzeichnen und dann bei der Anzeige die umgekehrte Transformation durchzuführen.
📝 Zusammenfassung
Überprüfen Sie bei der Ausrichtung von Mobiltelefonfotos zunächst, ob es sich um die Anzeigerichtung oder die Pixelrichtung handelt, und befassen Sie sich dann mit Richtung, Neigung und Perspektive. Bitte bewahren Sie die Originale auf und führen Sie eine Prüfung durch, bevor Sie wichtige Dokumente bearbeiten.


