3 Punkte von GN⁺ 2024-03-17 | 1 Kommentare | Auf WhatsApp teilen
  • TextSnatcher ist eine OCR-App, mit der sich unter Linux Text aus Bildern schnell kopieren lässt: Man zieht über ein Bild, die Texterkennung wird ausgeführt und das Ergebnis kann eingefügt werden
  • Zu den Kernfunktionen gehören Mehrsprachenunterstützung, das Kopieren von Text aus Bildern, Ziehen über beliebige Bilder und anschließendes Einfügen sowie eine schnelle und einfache Bedienung
  • Für die Texterkennung wird Tesseract OCR 4.x verwendet; außerdem werden Links zur Tesseract-Dokumentation und zum Tesseract-Projekt bereitgestellt
  • Die Verteilung erfolgt über Flathub und das elementary OS AppCenter; wer selbst bauen möchte, nutzt ein Installationsverfahren auf Basis von Meson und Ninja
  • Für die Ausführung werden scrot, tesseract-ocr und Tesseract-Sprachdaten benötigt; das Projekt weist derzeit darauf hin, dass es im nächsten Monat mit Updates und Korrekturen zurückkehren soll

Was TextSnatcher macht

  • TextSnatcher ist eine Linux-App, die Text aus Bildern kopiert und innerhalb weniger Sekunden eine OCR-Aufgabe ausführt
  • Nutzer können über ein Bild ziehen, um Text zu kopieren und einzufügen
  • Verfügbare Funktionen:
    • Mehrsprachenunterstützung

      • Text per Ziehen aus Bildern kopieren
      • Über ein beliebiges Bild ziehen und anschließend einfügen
      • Schnelle und einfache Bedienung

OCR-Engine und verwandte Projekte

Installation und Vertriebswege

  • Die App ist über Flathub erhältlich
  • Nutzer von elementary OS können sie über das AppCenter beziehen

Abhängigkeiten und Build

  • Für die Ausführung erforderliche Runtime-Abhängigkeiten:
    • scrot
    • tesseract-ocr
    • Tesseract-Sprachdaten
      • Links zu den Arch- und Debian-Repositories werden bereitgestellt
  • Für den Build erforderliche Buildtime-Abhängigkeiten:
    • granite
    • gtk+-3.0
    • gobject-2.0
    • gdk-pixbuf-2.0
    • libhandy-1
    • libportal-0.5
  • Wer selbst bauen und ausführen möchte, klont das Repository, erstellt anschließend ein Meson-Build-Verzeichnis, installiert mit Ninja und startet dann com.github.rajsolai.textsnatcher

Entwicklungsstand und Quellen

  • Das Projekt enthält ein Badge, das darauf hinweist, dass es mit Vala erstellt wurde
  • In der README steht, dass derzeit Geld für den Kauf eines Linux-PCs gesammelt wird und das Projekt voraussichtlich im nächsten Monat mit Updates und Korrekturen zurückkehren soll
  • Als Inspiration werden die README von Planner, die Anwendungsstruktur von Develop und die macOS-App TextSniper genannt

1 Kommentare

 
GN⁺ 2024-03-17
Meinungen auf Hacker News
  • Ich verwende ein Skript wie Dibby053; ich habe es von Stack Overflow übernommen, dann etwas angepasst, damit es unter KDE/GNOME und Wayland/X11 funktioniert, und lasse den aktuellen Status per Benachrichtigung anzeigen.
    Die Erkennung von X11/Wayland habe ich noch nicht selbst getestet, aber ihr könnt es gern ausprobieren und berichten.

    • Ich habe das Skript etwas geändert, damit die Aufräumarbeiten korrekt laufen, und starte spectacle im Hintergrundmodus, damit nach dem Screenshot kein Fenster hervorspringt.
    • Die Fehlerbehandlung ist gut, aber temporäre Dateien kann man weglassen und stattdessen über eine Pipe weiterreichen.
      Dabei werden grim, slurp, mogrify, tesseract und wl-copy hintereinandergeschaltet, und die OCR-Sprache wird mit fuzzel ausgewählt.
    • Ich habe dasselbe Skript benutzt und dann auf HN diese Methode entdeckt.
      Man wählt die Sprache mit dmenu und verarbeitet es etwa mit maim -us | tesseract --dpi 145 -l eng+${lang} - - | xsel -bi.
      https://news.ycombinator.com/item?id=33704483#33705272
    • Bei trap "cleanup '$SCR_IMG'" EXIT gibt ShellCheck manchmal einen False Positive aus, aber in diesem Fall ist der Hinweis nicht völlig falsch.
      Der an trap übergebene Befehl wird normalerweise ausgewertet, wodurch Variablenerweiterung stattfindet; trap 'cleanup "$SCR_IMG"' EXIT funktioniert sicherer.
      Mit aktuellem Bash ist auch trap "cleanup ${SCR_IMG@Q}" EXIT eine Option.
    • Ich habe auf eine Tastenkombination bash -c 'flameshot gui -s -r | tesseract - - | gxmessage -title "Decoded Data" -fn "Consolas 12" -wrap -geometry 640x480 -file -' gelegt.
      Wenn man Super+O drückt und den Bereich zieht, der per OCR erkannt werden soll, erscheint der erfasste Text sofort als Popup-Dialog.
  • Ein Skript, das ich vor langer Zeit irgendwo kopiert habe, erledigt das ziemlich gut.
    Es erfasst mit scrot einen Bereich, führt mit mogrify eine Vorverarbeitung wie Schwarzweiß-Umwandlung und Vergrößerung durch, extrahiert den Text dann mit tesseract, legt ihn mit xsel in die Zwischenablage und zeigt sogar eine Benachrichtigung an.

    • Als Ergänzung zum Teilen: Ich bevorzuge maim gegenüber scrot.
      Dank der Option --nodrag ist es bei der Bereichsauswahl mit dem Trackpad bequemer: einmal klicken, den Cursor bewegen und dann erneut klicken.
      Bei maim -s --nodrag --quality=10 $IMG.png entspricht 10 der 100 von scrot.
    • Ich habe das eine Zeit lang so benutzt, aber Tesseract blieb ziemlich oft hinter den Erwartungen zurück.
      Auch durch die Vergrößerung als Vorverarbeitung habe ich keinen großen Unterschied bemerkt, und ich weiß nicht recht, welche Vorverarbeitung besser wäre.
      Mich würde interessieren, ob TextSnatcher hier etwas verbessert, aber die GitHub-Seite ist wenig transparent.
    • Ich hatte auch ein ähnliches Skript in PowerShell, aber es ist zusammen mit den kleinen Skripten meines früheren Jobs im Lauf der Zeit verschwunden.
      Tut mir leid für die Kollegen, die zwischen Unix und Windows leben.
    • Bei trap "rm $IMG*" EXIT sollte man sich https://www.shellcheck.net/wiki/SC2064 ansehen.
      Besser ist es, mktemp -d zu verwenden und das Verzeichnis rekursiv zu löschen.
    • Für mich passt diese Methode genau.
      Ein Skript an eine Tastenkombination zu binden ist deutlich besser, als ein Fenster mit einem Button anklicken zu müssen.
  • Für die Kollegen aus dem gemeinen Volk, die Windows nutzen: Auch die offiziellen Microsoft PowerToys haben diese Funktion als Zusatzfeature.
    Sie ist inzwischen auch im Standard-Screenshot-Tool enthalten, aber persönlich finde ich die einzelne Tastenkombination von PowerToys angenehmer.
    https://github.com/microsoft/PowerToys

    • Die integrierte OCR des Snipping Tools funktioniert für mehrere Sprachen wie Englisch, Russisch, Chinesisch und Japanisch, ohne dass separate OCR-Sprachpakete installiert werden müssen.
    • Auch das standardmäßige Snipping Tool bietet diese Funktion.
      Man drückt WIN+SHIFT+S; wenn das Symbol „Text actions“ fehlt, sollte man über den Windows Store auf die neueste Version aktualisieren.
  • Ich frage mich schon lange, ob Tesseract in diesem Bereich wirklich noch die beste Lösung auf aktuellem Stand ist.
    Subjektiv wirkt es ziemlich unzureichend, und schon um 2019 herum hatte ich angesichts der Fortschritte in Computer Vision das Gefühl, Texterkennung müsste eigentlich ein weitgehend gelöstes Problem sein.
    Sie sollte besser sein als ein Mensch, aber selbst Scans von Belegen in niedriger Auflösung wurden nicht korrekt umgewandelt, besonders wenn sie nicht auf Englisch waren.
    Vielleicht benutze ich es auch einfach nicht richtig.

    • Ich nutze Tesseract halbwegs regelmäßig, und selbst bei Beleg-Scans oder Fotos hatte ich nur selten Erkennungsprobleme.
      Mich würde interessieren, wie genau du es verwendest.
  • Mir fällt auf, dass Tesseract immer häufiger erwähnt wird.
    Als ich es vor 10 bis 15 Jahren bei eingescannten wissenschaftlichen Arbeiten ausprobiert habe, waren die Ergebnisse enttäuschend, und die manuelle Nachbearbeitung war kaum weniger Aufwand als direktes Abtippen.
    Daher wurde Tesseract für mich zum Synonym für „nicht den Versuch wert“, aber es könnte mit der Zeit besser geworden sein, also sollte ich es vielleicht noch einmal ausprobieren.

    • Inzwischen ist es okay, wenn man nur gescannte Dokumente per OCR verarbeitet oder den Prozess der Bildvorbereitung stark kontrollieren kann.
      Bei allgemeiner Erkennung inklusive ungewöhnlicher Schriftarten oder schlechter Bildqualität hat EasyOCR bei mir deutlich bessere Ergebnisse geliefert.
    • Dieses Projekt enthält Tesseract 4.1.1, das mindestens einige Jahre alt ist.
    • Es lohnt sich, https://github.com/ocrmypdf/OCRmyPDF auszuprobieren.
      Intern nutzt es Tesseract und ist wirklich hervorragend.
    • Inzwischen ist es viel besser geworden.
      Vor 15 Jahren musste man ziemlich viel vorverarbeiten, um wenigstens halbwegs brauchbare Ergebnisse zu bekommen; heute bekomme ich auch ohne Vorverarbeitung gute Resultate.
    • Als ich es vor 3 bis 4 Jahren zum ersten Mal ausprobiert habe, war es okay.
  • Ich habe es selbst ausprobiert, und es funktioniert ziemlich gut
    Da es eine Flatpak-App ist, braucht sie für den vollständigen Funktionsumfang ein Desktop-Portal, aber mit meiner bestehenden xdg-desktop-portal-wlr-Konfiguration lief es ohne zusätzliche Einstellungen problemlos
    In X11- oder Wayland-Umgebungen mit einer xdg-desktop-portal-Konfiguration, die die Screenshot API unterstützt, dürfte es ohne Weiteres funktionieren
    Die Ergebnisse sind uneinheitlich, aber nicht schlecht; bei sauber lesbarem Text gibt es meist nur Probleme mit Leerzeichen oder gelegentliche Fehler, sodass es nützlich sein kann, um Text etwa aus Fehlerdialogen zu kopieren
    Allerdings ist unter Linux der Text in Fehlerdialogen ohnehin häufiger auswählbar, und die Standard-MessageBox von Windows reagiert auf Ctrl+C

  • Ich nutze als ähnliche App Frog und bin damit sehr erfolgreich unterwegs
    https://getfrog.app

    • Kein AppImage, kein .deb, kein brew
  • Für macOS gibt es ein Utility, das mehr kann, als ein Dokument in Preview zu öffnen und zu versuchen, Text auszuwählen
    https://github.com/schappim/macOCR
    Ich mag den Autor

    • Nebenbei: Man kann auch ohne den Umweg über Preview mit Cmd-Shift-3 einen Screenshot machen, dann auf das Thumbnail klicken und in Quick Look mit dem Text interagieren
      Danach kann man das Bild über den Papierkorb oben rechts löschen, und Cmd-A funktioniert ebenfalls
      Ein Beispiel, das ich für diesen Kommentar ausprobiert habe, ist hier: https://imgur.com/a/q0NvcS6
  • Unter iOS habe ich mir eine ähnliche Lösung als Kurzbefehl gebaut, der mit dem Action Button verknüpft ist
    In manchen Apps ist das Kopieren von Text nicht einfach, oder der Text ist in einer Fremdsprache; der Kurzbefehl macht einen Screenshot, extrahiert den Text, erkennt automatisch die Ausgangssprache, übersetzt ihn ins Englische und zeigt Original und Übersetzung in Quick View an, sodass man sie auswählen und kopieren kann
    Eine Beispielimplementierung kann man hier ausprobieren: https://www.icloud.com/shortcuts/f420d24e4960415da1a43f230abfce39
    Nebenbei kann man in aktuellen iOS-Versionen auch in der Fotos-App ein Foto öffnen und Text im Bild per Hand auswählen und kopieren

    • Ein großartiger Kurzbefehl
      Ich habe ihn über den Teilen-Button bei einem Bild und dann über das Share Sheet ausprobiert, und es hat funktioniert; wenn man aber ohnehin schon ein Bild übergibt, ist der Screenshot-Schritt redundant
  • Es heißt zwar „für den Linux Desktop“, aber das ist ein Flatpak, und nicht alle Linux-Distributionen liefern Flatpak standardmäßig mit
    Ich werde es einmal in einer Fedora-VM laufen lassen; solche Tools habe ich schon viele gesehen, und die meisten nutzen Tesseract
    Bei groben oder verrauschten Bildern sowie bei gebogenen oder schräg stehenden Buchstaben scheitern sie deutlich, und CAPTCHAs lösen sie nicht
    https://tesseract-ocr.github.io/tessdoc/Home.html

    • Welche Distribution unterstützt denn Flatpak nicht?
    • Das ist einfach ein Haufen Vala-Code
      Genauer gesagt heißt das eher, dass der Autor kein Paket für deine Distribution gebaut hat und auch sonst niemand Zeit und Lust hatte, es zu paketieren
      Der Maintainer, den du suchst, könntest genau du sein
    • Das ist nicht wirklich ein Nachteil
      Wenn es nur ein .deb gäbe, könnte man sagen, dass es außerhalb von Ubuntu/Debian nicht funktioniert, und das wäre ein deutlich größerer Nachteil