如何在 PyQt5 OSX 应用程序上运行外部进程,而不会使应用程序崩溃



我目前正在构建一个使用 OCR 的应用程序,使用 PYQT5 从 PDF 文件中提取数据,我需要在运行 OCR 之前使用终端将 pdf 转换为 jpeg;但是,当我在编译后运行这个子进程时,它会崩溃,但如果我不编译程序,它会完美运行。

在我看来,问题出在子进程调用中。我已经尝试了许多不同的方法,但我不知道为什么我的应用程序在编译并运行转换后不断崩溃。

注意:对于PDF到JPEG,我使用的是ImageMagick

当前用于编译:

py2applet --make-setup main.py
python3 setup.py py2app

Converter.py:

from subprocess import call
from PIL import Image
import pytesseract 
from PyQt5 import QtWidgets
from ocrgui import Ui_MainWindow
class ImageConverter(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.sbmt_btn_convert.clicked.connect(self.convert_image)
    def convert_image(self): #Converts image into jpeg
        text = str(self.input_convert.text())
        output = str(self.output_convert.text())
        convert = 'converted.jpeg'
        call('convert -density 300 ' + text + ' ' + convert, shell=True)
        im = Image.open(convert)
        text = pytesseract.image_to_string(im, lang = 'eng')
        file = open(output,'w')
        file.write(text)
        file.close()
        call('rm converted.jpeg', shell=True)
        print('Succesfully created')

Main.py:

import sys
from PyQt5.QtWidgets import QApplication
from calculator import CalculatorWindow
app = QApplication(sys.argv)
calculator = CalculatorWindow()
sys.exit(app.exec()) 

我认为下一个模块中的问题:

pathPython\Lib\site-packages\PIL\ImageQt.py

尝试将 # 放在下一行:

...
try:
    from PyQt5.QtGui import QImage, qRgba, QPixmap
    from PyQt5.QtCore import QBuffer, QIODevice
    qt_version = '5'
except (ImportError, RuntimeError):
    print("except (ImportError, RuntimeError):!!!!!!!!!!!!")
    #try:
    #    from PyQt4.QtGui import QImage, qRgba, QPixmap
    #    from PyQt4.QtCore import QBuffer, QIODevice
    #    qt_version = '4'
    #except (ImportError, RuntimeError):
    #    try:
    #        from PySide.QtGui import QImage, qRgba, QPixmap
    #        from PySide.QtCore import QBuffer, QIODevice
    #        qt_version = 'side'
    #    except ImportError:
    #        qt_is_installed = False
...

相关内容

最新更新