下面的代码是我用来从passport读取mrz数据的代码,当我在本地计算机上运行它时,它工作得非常好,但当我试图在我的服务器(Windows AWS服务器)上执行它时,它抛出了一个错误。您能帮助一下这个错误是什么以及如何解决它吗?
from PIL import Image
import sys
from passporteye import read_mrz
import pytesseract
mrz = read_mrz("C:/docs/IMG/PASSPORT/abc.png")错误:
Traceback (most recent call last):
File "C:/qfc_apps/edocs/PY/PASSPORT/passport.py", line 64, in <module>
passport()
File "C:/qfc_apps/edocs/PY/PASSPORT/passport.py", line 19, in passport
mrz = read_mrz("C:/docs/IMG/PASSPORT/abc.png")
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\passporteye\mrz\image.py", line 337, in read_mrz
mrz = p.result
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\passporteye\mrz\image.py", line 325, in result
return self['mrz_final']
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\passporteye\util\pipeline.py", line 102, in __getitem__
self._compute(key)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\passporteye\util\pipeline.py", line 109, in _compute
self._compute(d)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\passporteye\util\pipeline.py", line 109, in _compute
self._compute(d)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\passporteye\util\pipeline.py", line 109, in _compute
self._compute(d)
[Previous line repeated 1 more times]
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\passporteye\util\pipeline.py", line 111, in _compute
results = self.components[cname](*inputs)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\passporteye\mrz\image.py", line 52, in __call__
return self._imread(self.file)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\passporteye\mrz\image.py", line 37, in _imread
img = skimage_io.imread(file, as_gray=self.as_gray, plugin='imageio')
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\skimage\io\_io.py", line 61, in imread
img = call_plugin('imread', fname, plugin=plugin, **plugin_args)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\skimage\io\manage_plugins.py", line 210, in call_plugin
return func(*args, **kwargs)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\imageio\core\functions.py", line 221, in imread
reader = read(uri, format, "i", **kwargs)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\imageio\core\functions.py", line 139, in get_reader
"Could not find a format to read the specified file " "in mode %r" % mode
ValueError: Could not find a format to read the specified file in mode 'i'发布于 2019-06-06 13:28:05
经过几个小时的研究,找到了解决方案,所以把我的解决方案发布给其他可能面临类似解决方案的人。
我仍然不知道上面的代码出了什么问题,但我设法找到了解决的办法。
文档中提到,我们要么传递图像的路径,要么传递包含图像数据的字节流。由于路径对我不起作用,所以我选择了第二种方法。
使用下面的代码解决了我们的问题:
image = cv2.imread("path of image")
import PIL.Image as Image
import io
pil_im = Image.fromarray(image)
b = io.BytesIO()
pil_im.save(b, 'jpeg')
im_bytes = b.getvalue()
mrz = read_mrz(im_bytes)https://stackoverflow.com/questions/56442327
复制相似问题