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
Jul 2024
Update

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

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.

Schließe dich all jenen an, die sich dafür interessieren, wie man mit kundenorientierten Strategien, Methoden und Frameworks ein solides, nachhaltiges Wachstum erzielen kann...

Bleibe so lange, wie du willst. Abmeldung jederzeit möglich.

WEitere ArtiKel in der Serie

Einführung KI anwenden

Einführung in die praktische Nutzung von ChatGPT

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