Wie man mit ChatGPT Text aus Bildern extrahiert

OCR-Prompts zur bestmöglichen Textextraktion mit ChatGPT

OCR-Prompts, um den bestmöglichen Text auch aus (nahezu) unleserlichen Bildern zu extrahieren.

Von
Bastian Moritz
Jul 2024
Update
Min

OCR-Prompts zur besseren Textextraktion aus (nahezu) unleserlichen Bildern

Du kannst ein LLM wie ChatGPT mit nur einem Prompt anweisen, Text besser und gründlicher aus einem Bild zu extrahieren.

Dieser Ansatz umfasst iterative Verbesserungen und verschiedene Techniken, um den bestmöglichen Text aus einem Bild zu extrahieren. Es handelt sich eher um einen systematischen Fehlerbehebungs- und Verbesserungsprozess als um eine Chain of Thought (CoT), eine Methode zur Verbesserung des Denkprozesses, die wir typischerweise in Problemlösungs- und Entscheidungsprozessen verwenden.

OCR-Prompt zur besseren Textextraktion aus einem Bild

Kannst Du bitte das Bild sorgfältig analysieren und transkribieren? Es ist sehr schwer zu lesen und Du musst mehrere OCR-Durchläufe sorgfältig durchführen, um das perfekte Ergebnis zu erzielen, das wir suchen.
[#todo: Bild mit diesem Prompt anhängen/hochladen]

Dann wurden mehrere Optimierungen durchgeführt, um sicherzustellen, dass die Textextraktion so genau wie möglich war.

ChatGPT wendet keine Bildvorverarbeitungstechniken für OCR selbst an?

Du kannst Dein LLM explizit anweisen, Bildvorverarbeitungstechniken selbst anzuwenden, mit diesem OCR-Folgeprompt, um den Text aus Deinen Bildern besser zu extrahieren.

OCR (Optical Character Recognition) ist eine Technologie, die verwendet wird, um verschiedene Arten von Dokumenten, wie gescannte Papierdokumente, PDFs oder Bilder, die mit einer Digitalkamera aufgenommen wurden, in bearbeitbare und durchsuchbare Daten umzuwandeln. Sie funktioniert, indem sie die Formen von Zeichen in einem Bild analysiert und in maschinenlesbaren Text umwandelt.

Warum LLMs wie ChatGPT gut für OCR-bezogene Aufgaben geeignet sind

ChatGPT OCR-Prozess

Der Prozess, dem das LLM folgt, ist ein systematischer Ansatz zur Textextraktion und -verbesserung.

Hier ist eine Übersicht dessen, was GPT-4 gemacht hat:

  1. Erster OCR-Versuch: Führte eine grundlegende OCR auf dem Originalbild durch, um die Qualität der Textextraktion zu bewerten.
  2. Bildvorverarbeitung: Wendet verschiedene Bildverbesserungstechniken an, einschließlich Kontrasteinstellung, Schärfen und Konvertieren des Bildes in Graustufen und Schwarz-Weiß, um die OCR-Genauigkeit zu verbessern.
  3. Verschiedene OCR-Konfigurationen: Experimentierte mit benutzerdefinierten OCR-Konfigurationen, um zu sehen, ob sie bessere Ergebnisse liefern würden.
  4. Segmentierte OCR: Teilte das Bild in kleinere Abschnitte und führte OCR auf jedem Teil einzeln durch, um komplexe Layouts besser zu handhaben.
  5. Manuelle Transkription: Erkannte, dass automatisierte OCR nicht ausreichend war, und transkribierte den Text manuell für Genauigkeit.

Durchführung von OCR auf dem Bild

import pytesseract
from PIL import Image

Bild laden

image_path = "/mnt/data/stencil.1024.png" image = Image.open(image_path)

OCR auf dem Bild durchführen

text = pytesseract.image_to_string(image)

print(text)

Verbesserung der OCR-Ergebnisse durch Anwendung von Bildvorverarbeitungstechniken

Bildverbesserung: Verbessert den Bildkontrast und wendet eine Schärfung an, um den Text klarer zu machen.

  1. Bild für bessere OCR-Ergebnisse verbessern
  2. OCR auf dem verarbeiteten Bild durchführen
import pytesseract
from PIL import Image, ImageEnhance, ImageFilter

Bild laden

image_path = "/mnt/data/stencil.1024.png" image = Image.open(image_path)

Bild für bessere OCR-Ergebnisse verbessern

enhancer = ImageEnhance.Contrast(image) image_enhanced = enhancer.enhance(2) image_filtered = image_enhanced.filter(ImageFilter.SHARPEN)

OCR auf dem verarbeiteten Bild durchführen

text = pytesseract.image_to_string(image_filtered)

print(text)

Optimierung 2: Konvertierung des Bildes in Graustufen

Graustufenkonvertierung: Konvertierte das Bild in Graustufen, um den Textextraktionsprozess zu vereinfachen.

  1. Bild in Graustufen konvertieren
  2. OCR auf dem Graustufenbild durchführen
import pytesseract

Bild in Graustufen konvertieren

image_gray = image.convert('L')

OCR auf dem Graustufenbild durchführen

text = pytesseract.image_to_string(image_gray)

print(text)

Optimierung 3: Konvertierung des Bildes in Schwarz-Weiß

Schwarz-Weiß-Konvertierung: Transformierte das Bild in Schwarz-Weiß, um die Textsichtbarkeit zu verbessern.

  1. Bild in Schwarz-Weiß für bessere OCR-Ergebnisse konvertieren
  2. OCR auf dem Schwarz-Weiß-Bild durchführen
# Bild in Schwarz-Weiß für bessere OCR-Ergebnisse konvertieren
image_bw = image_gray.point(lambda x: 0 if x < 128 else 255, '1')

OCR auf dem Schwarz-Weiß-Bild durchführen

text_bw = pytesseract.image_to_string(image_bw)

print(text_bw)

Benutzerdefinierte OCR-Konfigurationen

Versuche eine andere OCR-Konfiguration, um die Ergebnisse zu verbessern

Wendete benutzerdefinierte Konfigurationen in OCR an, um die Texterkennung zu verbessern.

# Andere OCR-Konfiguration ausprobieren, um die Ergebnisse zu verbessern
custom_config = r'--oem 3 --psm 6'
text_custom = pytesseract.image_to_string(image_bw, config=custom_config)

print(text_custom)

Weitere Verbesserung mit adaptiver Schwellenwertbildung

Adaptive Schwellenwertbildung: Verwendung der adaptiven Schwellenwertbildung, um unterschiedliche Lichtverhältnisse im Bild zu bewältigen.

  1. In Numpy-Array für OpenCV-Verarbeitung konvertieren
  2. Adaptive Schwellenwertbildung anwenden
  3. Zurück in PIL-Bild konvertieren
  4. OCR auf dem Schwellenwertbild durchführen
import numpy as np
import cv2

In Numpy-Array für OpenCV-Verarbeitung konvertieren

image_cv = np.array(image_gray)

Adaptive Schwellenwertbildung anwenden

image_adaptive_threshold = cv2.adaptiveThreshold(image_cv, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)

Zurück in PIL-Bild konvertieren

image_pil = Image.fromarray(image_adaptive_threshold)

OCR auf dem Schwellenwertbild durchführen

text_threshold = pytesseract.image_to_string(image_pil)

print(text_threshold)

Segmentierung: Spezifische Bereiche des Bildes extrahieren

Teilte das Bild in kleinere, besser handhabbare Abschnitte und wendete OCR individuell auf jeden Abschnitt an.

  1. OCR auf der linken Hälfte durchführen
  2. OCR auf der rechten Hälfte durchführen
# Linke Hälfte des Bildes extrahieren
left_half = image.crop((0, 0, image.width // 2, image.height))

Rechte Hälfte des Bildes extrahieren

right_half = image.crop((image.width // 2, 0, image.width, image.height))

OCR auf der linken Hälfte durchführen

text_left = pytesseract.image_to_string(left_half, config=custom_config)

OCR auf der rechten Hälfte durchführen

text_right = pytesseract.image_to_string(right_half, config=custom_config)

Texte kombinieren

text_combined = text_left + "\n" + text_right

print(text_combined)

ChatGPT wendet keine Bildvorverarbeitungstechniken für OCR selbst an?

Du könntest Dein LLM auch explizit damit beauftragen, diese Bildvorverarbeitungstechniken selbst anzuwenden, wenn es diese Techniken nicht selbst anwendet.

OCR-Folgeprompt zur besseren Textextraktion aus einem Bild

  1. Bildverbesserung: Verbessere den Bildkontrast und wende eine Schärfung an, um den Text klarer zu machen.
  2. Graustufenkonvertierung: Konvertiere das Bild in Graustufen, um den Textextraktionsprozess zu vereinfachen.
  3. Schwarz-Weiß-Konvertierung: Transformiere das Bild in Schwarz-Weiß, um die Textsichtbarkeit zu verbessern.
  4. Adaptive Schwellenwertbildung: Verwende adaptive Schwellenwertbildung, um unterschiedliche Lichtverhältnisse im Bild zu bewältigen.
  5. Segmentierung: Teile das Bild in kleinere, besser handhabbare Abschnitte und wende OCR individuell auf jeden Abschnitt an.
  6. Benutzerdefinierte OCR-Konfigurationen: Probiere und wende verschiedene benutzerdefinierte Konfigurationen in OCR an, um die Texterkennung zu verbessern.
Um die Genauigkeit Deiner Ergebnisse zu erhöhen, musst Du diese Techniken nacheinander und schrittweise anwenden, um die Texterkennung zu verbessern:
Aufgaben:
1. **Bildverbesserung**: Verbessere den Bildkontrast und wende eine Schärfung an, um den Text klarer zu machen.
2. **Graustufenkonvertierung**: Konvertiere das

Bild in Graustufen, um den Textextraktionsprozess zu vereinfachen. 3. Schwarz-Weiß-Konvertierung: Transformiere das Bild in Schwarz-Weiß, um die Textsichtbarkeit zu verbessern. 4. Adaptive Schwellenwertbildung: Verwende adaptive Schwellenwertbildung, um unterschiedliche Lichtverhältnisse im Bild zu bewältigen. 5. Segmentierung: Teile das Bild in kleinere, besser handhabbare Abschnitte und wende OCR individuell auf jeden Abschnitt an. 6. Benutzerdefinierte OCR-Konfigurationen: Probiere und wende verschiedene benutzerdefinierte Konfigurationen in OCR an, um die Texterkennung zu verbessern.

Trotz dieser Optimierungen waren die OCR-Ergebnisse aufgrund der Komplexität des Layouts und der Textqualität der getesteten Bilder oft nicht perfekt. Daher solltest Du den transkribierten Text immer manuell überprüfen, um die Genauigkeit sicherzustellen.

Veröffentlicht
Jul 2024
Letztes Update
4.7.2024
Prompt Engineering
Prompt Library
ChatGPT
Generative AI
Innovation
AI Agents
CRM

Newsletter

Bleib auf dem Laufenden: Erhalte immer die aktuellen Artikel, Videos und Veranstaltungshinweise.

Ready? Set. Growth!
Den Impact deiner Organisation kundenorientiert nachhaltig wachsen, damit eure Mission ihre volle Wirkung entfaltet: