Hallo, schön dich zu treffen, gute Nacht. Es tut mir Leid.
Die in diesem Artikel verfügbaren Informationen sind:
Installieren Sie Tesseract-OCR separat (Lehrer! Ich denke, dies ist die Hauptursache!)
Schreiben Sie * .py mit dem entsprechenden Pyocr
pyinstaller hoge.py
Wenn Sie foo.exe mit dist ausspucken, wird das folgende Protokoll ausgegeben ...
Running from container, but no tessdata (C:\Users\{user}\AppData\Local\Temp\_MEI{tempnumber}\data) found !
Running from container, but no tessdata (C:\Users\{user}\AppData\Local\Temp\_MEI{tempnumber}\data) found !
Selbst wenn dies passiert, kann es ausgeführt werden, wenn Tesseract-OCR separat auf dem Ziel-PC installiert ist. Es gibt also nicht viele Menschen, die grundsätzlich in Schwierigkeiten sind ...
Da es jedoch schmutzig ist, werde ich es löschen.
Ein kurzer Blick auf pyocr zeigt tesseract.py in der Nähe von Zeile: 120.
Das ist die Ursache.
if getattr(sys, 'frozen', False): # pragma: no cover
# Pyinstaller support
path = os.environ["PATH"]
if sys._MEIPASS in path:
# already changed
return
tesspath = os.path.join(sys._MEIPASS, "tesseract")
tessprefix = os.path.join(sys._MEIPASS, "data")
logger.info("Running in packaged environment")
if not os.path.exists(os.path.join(tessprefix, "tessdata")):
logger.warning(
"Running from container, but no tessdata ({}) found !".format(
tessprefix
)
)
else:
logger.info("TESSDATA_PREFIX set to [{}]".format(tessprefix))
os.environ['TESSDATA_PREFIX'] = tessprefix
if not os.path.exists(tesspath):
logger.warning(
"Running from container, but no tesseract ({}) found !".format(
tesspath
)
)
else:
logger.info("[{}] added to PATH".format(tesspath))
os.environ['PATH'] = (
tesspath + os.pathsep + os.environ['PATH']
)
Es scheint, dass sie verschiedene Dinge tun, aber der Benutzer weiß das nicht (Weinen)
Anscheinend wäre es schön, wenn sys._MEIPASS Tesseract und Daten hätte.
Dann können Sie sys._MEIPASS Tesseract und Daten hinzufügen! Lösung! Begeisterung! Kampfbereit!
Fügen Sie Folgendes zu * .spec hinzu
Tree('{Tesseract-OCR-Pfad}',prefix='tesseract'),
Tree('{Tesseract-OCR-Pfad}',prefix='data'),
Running from container, but no tessdata (C:\Users\{user}\AppData\Local\Temp\_MEI{tempnumber}\data) found !
Running from container, but no tessdata (C:\Users\{user}\AppData\Local\Temp\_MEI{tempnumber}\data) found !
Es scheint, dass die Kampfkraft immer noch unzureichend ist.
Schließlich wurde es so.
Ich verstehe die Bedeutung nicht, weil die Daten mehr Tessdaten enthalten müssen und der Inhalt dupliziert wird. (Vielleicht gibt es eine bessere Lösung ...)
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['{main}.py'],
pathex=['{src_dir}'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
Tree('{data}',prefix='data'),
Tree('{tesseract}',prefix='tesseract'),
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='{appname}',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True , icon='icon.ico')
Hier ändert sich nichts.
{main}.py {} .py Keine spezielle Beschreibung erforderlich
pyinstaller! Jetzt wo du bereit bist
$> pyinstaller --onefile --clean --icon={icon}.ico -n {appname} {main}.py
Und machen Sie {appname} .spec wie oben
$> pyinstaller {appname}.spec
Und verteilen Sie {appname} .exe unter dist und los geht's!
Dies ist nur eine Windows-Umgebungsmethode, aber Sie müssen Tesseract-OCR natürlich nicht separat auf dem Ziel-PC installieren.
Wenn es einen besseren Weg gibt, würde ich mich freuen, wenn Sie mich in den Kommentaren auf Twitter oder hier unterrichten könnten!
Dann Otonoshi
Recommended Posts