Pydcviewer: Software für Dokumenten-Kameras (plattformübergreifend)

Hallo Thorsten,

ja.

apt install tesseract-ocr-deu

Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen… Fertig
tesseract-ocr-deu ist schon die neueste Version (1:4.00~git30-7274cfa-1).
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

funktioniert aber trotzdem nicht.

Gruß

Alois

Hallo Alois
was passiert denn? Der gleiche Fehler wie bei @Michael beim Aufrufen?
Irgendeine Abhängigkeit scheint da nicht erfüllt zu sein - und es gibt wohl unterschiedliche QT-Bindings.
Könntest Du mir Dein Betriebssystem sagen und Deine Python-Version (python3 -V) schicken?
Viele Grüße
Thomas

Hi.
Hier ist es ein Ubuntu 20.04 mit Python 3.8.5
Ich habe ebenfalls tesseract-ocr-deu und vorhin auch noch python3-pyqt5 installiert (das war hier noch nicht drauf). Testen kann ich OCR gerade nicht … habe gerade nur die VM zur Verfügung.
Viele Grüße,
Michael

Hallo Thomas,

ich habe die gleiche Konstellation wie Michael.

Gruß

Alois

Hallo Thomas,

ich habe das Programm von der Konsole gestartet und erhalte folgende Rückmeldung nach Klick auf „Texterkennung im Rechteck“.

Traceback (most recent call last):
File „/opt/pydcviewer/pydcviewer.py“, line 1061, in
r.ocrend(oframe, i)
File „/opt/pydcviewer/pydcviewer.py“, line 997, in ocrend
ocr_gray = cv2.cvtColor(ocr_img, cv2.COLOR_RGB2GRAY)
cv2.error: OpenCV(4.5.2) /tmp/pip-req-build-eirhwqtr/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ‚cvtColor‘

Gruß

Alois

Hallo @alois
Das scheint der Fehler zu sein, den @MachtDochNix als Issue gemeldet hat (man muss ein Rechteck ziehen, sonst ist der OCR-Bereich leer.
Den Fehler habe ich in der letzten Version abgefangen - vielleicht löst das das Problem ja schon.
Viele Grüße
Thomas

Moin @Michael PyQt5 ist bei mir (durch irgendeine Abhängigkeit) installiert.
Um kurz zu testen, ob das geht: python3 -c 'import PyQt5'. Passiert nichts, ist alles ok. Kommt eine Fehlermeldung, stimmt irgendetwas nicht.
Viele Grüße
Thomas

Hallo Alois,

bitte schaue mal in die Zwischenablage nachdem du das Rechteck um Text aufgezogen hast. Achtung Bild muss 1:1 als Größe haben sonst stimmt die position des Kasten nicht mit dem Text überein.

Beste Grüße

Thorsten

Hallo Thorsten,

ich gehe davon aus, dass 1:1 beim Start eingestellt ist. Ich ziehe einen Rahmen auf und schon ist das Programm weg.

Meldung:

Traceback (most recent call last):
File „/opt/pydcviewer/pydcviewer.py“, line 1100, in
frame = u.show(frame, w.res, oframe, z.rect) # show ui
File „/opt/pydcviewer/pydcviewer.py“, line 505, in show
masked_bg = cv2.bitwise_and(roi.copy(),roi.copy(),mask = cv2.bitwise_not(self.ach[‚uii‘])) # mask out ui from bg
cv2.error: OpenCV(4.5.2) /tmp/pip-req-build-eirhwqtr/opencv/modules/core/src/arithm.cpp:230: error: (-215:Assertion failed) (mtype == CV_8U || mtype == CV_8S) && _mask.sameSize(*psrc1) in function ‚binary_op‘

Gruß

Alois

Hallo,

ok, ich habe immer gedacht man müsse auf den Menüpunkt oberhalb „Texterkennung im Rahmen“ klicken („Zoom auf Rechteck“) und dann den Rahmen aufziehen. Wenn ich jetzt auf „Texterkennung im Rahmen“ klicke und einen Rahmen aufziehe, dann kommt tatsächlich in der Zwischenablage etwas an, nur nicht das was ich erwarte. Ich denke, dass der Grund ist, dass die Darstellung nicht 1:1 ist. Wenn ich aber auf den Menüpunkt „Zoom zurücksetzen 1:1“ klicke, dann tut sich nichts. OCR bringt dann irgend etwas von der Seite, aber nicht das, was im Rahmen steht.

Gruß

Alois

Hi.
Hier ergab der Aufruf:

python3 -c 'import PyQt5'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'PyQt5'

Daraufhin ein pip install PyQt5 – anschließend lieferte der Befehl python3 -c 'import PyQt5'keine Ausgabe mehr, was laut @thoschi ja so sein soll.

Dennoch funktioniert das OCR nicht – grünen Kasten aufgezogen und das Programm verabschiedet sich mit dieser Meldung:

/usr/bin/python3 /opt/pydcviewer/pydcviewer.py
[ WARN:0] global /tmp/pip-req-build-eirhwqtr/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video1): can't open camera by index
[ WARN:0] global /tmp/pip-req-build-eirhwqtr/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video2): can't open camera by index
[ WARN:0] global /tmp/pip-req-build-eirhwqtr/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video3): can't open camera by index
[ WARN:0] global /tmp/pip-req-build-eirhwqtr/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video4): can't open camera by index
[ WARN:0] global /tmp/pip-req-build-eirhwqtr/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video5): can't open camera by index
[ WARN:0] global /tmp/pip-req-build-eirhwqtr/opencv/modules/videoio/src/cap_v4l.cpp (890) open VIDEOIO(V4L2:/dev/video6): can't open camera by index
QObject::moveToThread: Current thread (0x26bb940) is not the object's thread (0x2c8e580).
Cannot move to target thread (0x26bb940)

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/usr/local/lib/python3.8/dist-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl.

Abgebrochen

Hallo Michael,

Das ist ein standard-Problem mit Qt. Es lässt sich lösen, indem.du das Paket libxcb-xinerama0 installierst.

@thoschi Wie wärs, wenn du ein debian Paket baust? Dann kannst du da einfach alle Abhängigkeiten rein schreiben und aolche Probleme gibt es nicht mehr :slight_smile:

VG, Doria

hmm – scheinbar nicht?!?

apt install libxcb-xinerama0
libxcb-xinerama0 ist schon die neueste Version (1.14-2).
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

Hallo @dorian

Wenn das mal im Detail geklärt ist, kann ich das überlegen. Aber bei mir z.B. gab es das Problem gar nicht. Und auch bei uns an der Schule hat es gereicht, die Pakete aus den requirements zu installieren (wie beschrieben) - also waren auch da offenbar die PyQT-Sachen standardmäßig installiert. Ein wenig hängt es ja auch noch von der verwendeten Version ab - ob ich mir das geben will, da verschiedene Pakete zu pflegen :wink: Aber ich bin erst einmal gespannt, woran es bei Michael liegt.
Viele Grüße
Thomas

Hallo @Michael,
Du kannst mal versuchen, es neu zu installieren (hat wohl anderswo geholfen): sudo apt-get install --reinstall libxcb-xinerama0.
Viele Grüße
Thomas

Hallo Alois,

das Problem hier ist etwas, dass die Auflösung bei größeren Zoom-Stufen tatsächlich so schlecht ist, dass die Erkennunsleistung ziemlich nachlässt.

Aber ich werde testen, ob bei entsprechendem Zoom evtl. wegen der sich verschiebenden Ränder der falsche Bildschirminhalt kopiert wird - das kann sein und ließe sich leicht beheben.

Wenn ich 1:1-Zoom nutze, ist bei mir der gesamte Bildschirminhalt im Fenster. Wenn das bei Dir (wegen der Bildschirmauflösung, s.o.) nicht so ist, würde der Fehler mit dem falsch gewählten Ausschnitt hier natürlich auch passieren. Ich melde mich, sobald ich das verifiziert und korrigiert habe.

Viele Grüße
Thomas

Hallo Thomas,

vielleicht liegts am Format des Bildschirms? Ich benutze einen Dell Latitude E 6230 Maximale Auflösung 1366 x 768 Pixel.

Viele Grüße

Alois

Hallo Alois,
ich habe es schon rekonstruieren können. Sobald gezoomt wird (und das wird es wegen Deiner Auflösung bzw. Seitenverhältnis und vermutlich recht hoher Kameraauflösung zwangsweise), wird nicht der markierte Bildrahmen kopiert. Das ist leicht zu beheben - vielleicht heute Abend noch. Danke jedenfalls - der Fehler wäre mir vermutlich nie begegnet.
Viele Grüße
Thomas

Hallo zusammen,
die neue Version korrigiert das von Alois beschriebene Verhalten - es sollte jetzt der richtige Bereich an Tesseract weitergegeben werden.
Zudem ändert sich jetzt der Mauszeiger, wenn ein Rahmen gezogen werden kann/muss - das macht die Bedienung vielleicht etwas nachvollziehbarer (und erzeugt eine neue potentielle Fehlerquelle :wink: ).
Viele Grüße und gute Nacht
Thomas

Hallo Thomas,

man kann jetzt erkennen dass der Richtige Bereich eingelesen wird, da das eine oder andere Wort passt. Die Trefferquote ist aber so gering, dass ich meine man sollte auf die Funktion verzichten.

Gruß

Alois