• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Gelöst OCRmyPDF ungültiger Maschinenbefehl pipe

Hallo,

da ich mein Büro auf weitgehend papierlos umstellen will, habe ich mich durch die Tiefen des Internets gewühlt. Dabei fand ich folgende Webseite. Linux: OCR-Texterkennung für PDF-Dateien und Bilder

Das klang richtig gut. Per Skript ganze Ordner von PDF`s indexieren zu lassen.

Die älteren Versionen von anderen Maintainern lassen sich zwar teilweise installieren, ein Probelauf scheiterte aber bei allen verfügbaren Varianten wegen fehlender Bibliotheken. Also alles wieder deinstalliert.

Auf Opensuse ist aber das Paket in der aktuellen Version für Leap nicht zu finden, aber für Tumbleweed. OCRmyPDF Opensuse aktuell Hier steht ganz unten als Kommentar, man könnte über Pipe (pipex) das auch installieren man müsste nur folgende Pakete installieren. pluggy img2pdf reportlab pdfminer.six coloredlogs tqdm. Dies habe ich auch alle installiert. Danach könnte man über Pipe installieren.
Code:
zypper se pluggy img2pdf reportlab pdfminer.six coloredlogs tqdm
Loading repository data...
Reading installed packages...

S  | Name                        | Summary                                                              | Type
---+-----------------------------+----------------------------------------------------------------------+-----------
   | python-coloredlogs          | Colored terminal output for Python's logging module                  | srcpackage
   | python-pluggy               | A minimalist production ready plugin system                          | srcpackage
   | python-reportlab            | The Reportlab Toolkit                                                | srcpackage
   | python-tqdm                 | An extensible progress meter                                         | srcpackage
   | python-tqdm-bash-completion | Bash completion for python-tqdm                                      | package
i+ | python3-coloredlogs         | Colored terminal output for Python's logging module                  | package
i  | python3-img2pdf             | Python module for converting images to PDF via direct JPEG inclusion | package
i  | python3-pdfminer.six        | PDF parser and analyzer                                              | package
i  | python3-pluggy              | Plugin registration and hook calling mechanisms for Python           | package
i  | python3-reportlab           | The Reportlab Toolkit                                                | package
i  | python3-tqdm                | An extensible progress meter                                         | package
   | python311-coloredlogs       | Colored terminal output for Python's logging module                  | package
   | python311-pluggy            | A minimalist production ready plugin system                          | package
   | python311-tqdm              | An extensible progress meter                                         | package

Ich habe dann einen Artikel von Heise aus dem Jahr 2019 gefunden, wie man es installieren kann: OCR über Pipe installieren

im Github stand dann auch wie man es ohne Pakete installieren kann. Anleitung Github

Code:
pip install git+https://github.com/ocrmypdf/OCRmyPDF.git
Collecting git+https://github.com/ocrmypdf/OCRmyPDF.git
  Cloning https://github.com/ocrmypdf/OCRmyPDF.git to /tmp/pip-req-build-qwewf0xr
  Running command git clone --filter=blob:none --quiet https://github.com/ocrmypdf/OCRmyPDF.git /tmp/pip-req-build-qwewf0xr
  Resolved https://github.com/ocrmypdf/OCRmyPDF.git to commit 08e89e2dbe7c67db1eb629e66ab035717b548913
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: deprecation>=2.1.0 in /usr/lib/python3.11/site-packages (from ocrmypdf==16.2.1.dev1+g08e89e2) (2.1.0)
Requirement already satisfied: img2pdf>=0.5 in /usr/lib/python3.11/site-packages (from ocrmypdf==16.2.1.dev1+g08e89e2) (0.5.1)
Requirement already satisfied: packaging>=20 in /usr/lib/python3.11/site-packages (from ocrmypdf==16.2.1.dev1+g08e89e2) (24.0)
Requirement already satisfied: pdfminer.six>=20220319 in /usr/lib/python3.11/site-packages (from ocrmypdf==16.2.1.dev1+g08e89e2) (20231228)
Requirement already satisfied: pi-heif in /usr/lib64/python3.11/site-packages (from ocrmypdf==16.2.1.dev1+g08e89e2) (0.16.0)
Requirement already satisfied: pikepdf>=8.10.1 in /usr/lib64/python3.11/site-packages (from ocrmypdf==16.2.1.dev1+g08e89e2) (8.15.1)
Requirement already satisfied: Pillow>=10.0.1 in /usr/lib64/python3.11/site-packages (from ocrmypdf==16.2.1.dev1+g08e89e2) (10.3.0)
Requirement already satisfied: pluggy>=1 in /usr/lib/python3.11/site-packages (from ocrmypdf==16.2.1.dev1+g08e89e2) (1.5.0)
Requirement already satisfied: rich>=13 in /usr/lib/python3.11/site-packages (from ocrmypdf==16.2.1.dev1+g08e89e2) (13.7.1)
Requirement already satisfied: charset-normalizer>=2.0.0 in /usr/lib64/python3.11/site-packages (from pdfminer.six>=20220319->ocrmypdf==16.2.1.dev1+g08e89e2) (3.3.2)
Requirement already satisfied: cryptography>=36.0.0 in /usr/lib64/python3.11/site-packages (from pdfminer.six>=20220319->ocrmypdf==16.2.1.dev1+g08e89e2) (42.0.5)
Requirement already satisfied: Deprecated in /usr/lib/python3.11/site-packages (from pikepdf>=8.10.1->ocrmypdf==16.2.1.dev1+g08e89e2) (1.2.14)
Requirement already satisfied: lxml>=4.8 in /usr/lib64/python3.11/site-packages (from pikepdf>=8.10.1->ocrmypdf==16.2.1.dev1+g08e89e2) (5.2.1)
Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/lib/python3.11/site-packages (from rich>=13->ocrmypdf==16.2.1.dev1+g08e89e2) (3.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/lib/python3.11/site-packages (from rich>=13->ocrmypdf==16.2.1.dev1+g08e89e2) (2.17.2)
Requirement already satisfied: cffi>=1.12 in /usr/lib64/python3.11/site-packages (from cryptography>=36.0.0->pdfminer.six>=20220319->ocrmypdf==16.2.1.dev1+g08e89e2) (1.16.0)
Requirement already satisfied: mdurl~=0.1 in /usr/lib/python3.11/site-packages (from markdown-it-py>=2.2.0->rich>=13->ocrmypdf==16.2.1.dev1+g08e89e2) (0.1.2)
Requirement already satisfied: wrapt<2,>=1.10 in /usr/lib64/python3.11/site-packages (from Deprecated->pikepdf>=8.10.1->ocrmypdf==16.2.1.dev1+g08e89e2) (1.16.0)
Requirement already satisfied: pycparser in /usr/lib/python3.11/site-packages (from cffi>=1.12->cryptography>=36.0.0->pdfminer.six>=20220319->ocrmypdf==16.2.1.dev1+g08e89e2) (2.22)

Alle Pakete sind richtig installiert und es gibt nicht fehlende Abhängigkeiten

Code:
zypper ve
Loading repository data...
Reading installed packages...
Dependencies of all installed packages are satisfied.

Jetzt kommt beim Aufruf von
Code:
ocrmypdf --help
Ungültiger Maschinenbefehl (Speicherabzug geschrieben)


Woran es hängt, kann ich nicht finden. Wer kann mir einen Tip geben?
 

abgdf

Guru
Wenn es aus den rpms nicht läuft, könnte man versuchen, aus den Quellen selbst zu kompilieren.
Also so viele rpms wie geht aus der eigenen (!) Distribution installieren, und den Rest dann aus den Quellen dazukompilieren.

Vieles ist ja in Python, also ich kenne ja das Installieren von externen Python-Modulen und -Skripten ganz gut, aber wer das nicht kennt, müßte sich damit wohl ein bißchen beschäftigen.
 
Wenn es aus den rpms nicht läuft, könnte man versuchen, aus den Quellen selbst zu kompilieren.
Also so viele rpms wie geht aus der eigenen (!) Distribution installieren, und den Rest dann aus den Quellen dazukompilieren.

Vieles ist ja in Python, also ich kenne ja das Installieren von externen Python-Modulen und -Skripten ganz gut, aber wer das nicht kennt, müßte sich damit wohl ein bißchen beschäftigen.
Ich habe jetzt mich über Yast durchgewühlt und alles, was ich noch an Paketen fand, die ocrmypdf verlangt in Yast angeklickt und installiert. Jetzt startet OCRmyPDF. Wenn ich aber eine Datei umwandeln will bekomme ich eine Fehlermeldung
Code:
The program 'tesseract' could not be executed or was not found on your                                                                                                                                                                                                       
system PATH.                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                              __init__.py:263
On systems with the aptitude package manager (Debian, Ubuntu), try these                                                                                                                                                                                                     
commands:                                                                                                                                                                                                                                                                   
    sudo apt update                                                                                                                                                                                                                                                         
    sudo apt install tesseract-ocr                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                            
On RPM-based systems (Red Hat, Fedora), try this command:                                                                                                                                                                                                                   
    sudo dnf install tesseract-ocr                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                            
The program 'tesseract' did not report its version. Message was:                                                                                                                                                                                               __main__.py:69
ATTENTION: default value of option mesa_glthread overridden by environment.                                                                                                                                                                                                 
ATTENTION: default value of option mesa_glthread overridden by environment.                                                                                                                                                                                                 
tesseract 5.3.4                                                                                                                                                                                                                                                             
 leptonica-1.82.0                                                                                                                                                                                                                                                           
  libgif 5.2.1 : libjpeg 8d (libjpeg-turbo 2.1.1) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.13 : libwebp 1.0.3 : libopenjp2 2.3.0                                                                                                                                           
 OpenCL info:                                                                                                                                                                                                                                                               
  Found 1 platform(s).                                                                                                                                                                                                                                                       
  Platform 1 name: Clover.                                                                                                                                                                                                                                                   
  Version: OpenCL 1.1 Mesa 22.3.5.                                                                                                                                                                                                                                           
  Found 1 device(s).                                                                                                                                                                                                                                                         
    Device 1 name: OLAND (, LLVM 15.0.7, DRM 2.50, 5.14.21-150500.55.52-default).                                                                                                                                                                                           
 Found OpenMP 201511                                                                                                                                                                                                                                                         
 Found libarchive 3.5.1 zlib/1.2.11 liblzma/5.2.3 bz2lib/1.0.8 liblz4/1.9.3 libzstd/1.5.0                                                                                                                                                                                   
 Found libcurl/8.0.1 OpenSSL/1.1.1l-fips zlib/1.2.13 brotli/1.0.7 zstd/1.5.0 libidn2/2.2.0 libpsl/0.20.1 (+libidn2/2.2.0) libssh/0.9.8/openssl/zlib nghttp2/1.40.0

Tesseract-ocr ist aber installiert

Code:
zypper install tesseract-ocr
Loading repository data...
Reading installed packages...
'tesseract-ocr' is already installed.
No update candidate for 'tesseract-ocr-5.3.4-bp155.3.6.1.x86_64'. The highest available version is already installed.
Resolving package dependencies...
Nothing to do.

abgdf: Hast Du hier auch ein Tip für mich?
 

abgdf

Guru
Dann würde ich mal versuchen, erstmal tesseract ohne OCRMyPDF zu verwenden, und dann zu sehen, wo es hakt.
 
So ich habe es gelöst, aber das waren ein paar Klimmzüge für sich.

tesseract braucht imagemagick, imagemagic hat in der /etc/ImageMagick-7/policy.xml PDF standardmäßig gesperrt. Das habe ich nur durch eine Suche mit DuckDuckgo gefunden. In der policy muss mit root Rechten z.Bsp. mit Kate folgendes geändert werden:

<policy domain="coder" rights="none" pattern="PDF" />
# to :
<policy domain="coder" rights="read|write" pattern="PDF" />

außerdem ist ghostscript in Leap 15.5 auch nur auf Version 9.52 hier wird aber mindestens 9.54 erwartet. Also muss man auch hier ein extra Paket installieren.

Wenn das gemacht wurde, bekommt man aber ein beeindruckendes Ergebnis.

Die Dateigröße wird auch nicht viel größer, aber die PDF.Datei ist plötzlich kpl durchsuchbar und bis auf Kleinigkeiten alles richtig. Hier kommt es echt auf den Scanner an, wie dieser eingestellt ist. (300 DPI sehr empfehlenswert) Auch der Scanner macht viel aus. Ich habe mit Absicht eine schwere Datei genommen, auch in dieser wurde gut der Text erkannt.
 

abgdf

Guru
Glückwunsch! Bei solchen Aktionen lernt man immer was. Und es ist ein schöner Erfolg, wenn am Ende das funktioniert, was man sich vorgenommen hat.

Daß für ImageMagick die PDF-policy geändert werden muß, hätte ich sogar gewußt - ach ja, hatte ich sogar auch auf eine meiner Seiten geschrieben. Ich sammele solche Informationen, dann kann man sie später wieder nachschlagen, wenn man sie z.B. bei der nächsten Neu-Installation wieder braucht.
 
Oben