【问题标题】:Import tesseract error导入正方体错误
【发布时间】:2014-01-10 21:34:41
【问题描述】:

我正在尝试使用 Mac Maverick 在 Python 中导入 tesseract,但出现以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "tesseract.py", line 26, in <module>
    _tesseract = swig_import_helper()
  File "tesseract.py", line 18, in swig_import_helper
    import _tesseract
ImportError: No module named _tesseract

我按照以下步骤安装 tesseract: https://code.google.com/p/python-tesseract/wiki/HowToCompilePythonTesseractForMacMountainLion

我应该怎么做才能解决这个问题?

更新:

python setup.py build 的回溯

os=darwin
Current Version : tesseract
~~~cv_pc~~~
{'extra_link_args': ['not', 'found', 'sh:', 'command', 'pkg-config:']}
['extra_link_args']
Traceback (most recent call last):
  File "setup.py", line 160, in <module>
    libname="open"+item.split("libopen")[1].split(".")[0]
IndexError: list index out of range

更新 2 homwbrew 版本:

python setup.py install --user 的消息

os=达尔文 当前版本:正方体 ~~~cv_pc~~~ {'extra_link_args': ['No', 'Perhaps', 'variable', 'in', 'containing', 'to', 'not', 'should', 'environment', 'opencv', 'add', 'you', "`opencv.pc'", 'Package', 'PKG_CONFIG_PATH', 'search', 'package', 'was', "'opencv'", 'directory', 'found', 'the', '路径。', 'pkg-config']} ['extra_link_args'] 回溯(最近一次通话最后): 文件“setup.py”,第 160 行,在 libname="open"+item.split("libopen")[1].split(".")[0]

IndexError: 列表索引超出范围

更新 3:从步骤 1-3 都很好。 但在第 4 步,我被困在 python setup.py clean

打印此消息:

os=darwin
Current Version : tesseract
~~~cv_pc~~~
{'extra_link_args': ['/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_features2d.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_objdetect.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_video.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_imgproc.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_ocl.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_contrib.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_superres.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_nonfree.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_flann.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_legacy.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_core.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_gpu.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_ts.a', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_videostab.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_highgui.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_ml.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_stitching.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_calib3d.dylib', '/usr/local/Cellar/opencv/2.4.7.1/lib/libopencv_photo.dylib'], 'include_dirs': ['/usr/local/Cellar/opencv/2.4.7.1/include/opencv', '/usr/local/Cellar/opencv/2.4.7.1/include']}
['extra_link_args', 'include_dirs']
add lib: opencv_features2d
add lib: opencv_objdetect
add lib: opencv_video
add lib: opencv_imgproc
add lib: opencv_ocl
add lib: opencv_contrib
add lib: opencv_superres
add lib: opencv_nonfree
add lib: opencv_flann
add lib: opencv_legacy
add lib: opencv_core
add lib: opencv_gpu
add lib: opencv_ts
add lib: opencv_videostab
add lib: opencv_highgui
add lib: opencv_ml
add lib: opencv_stitching
add lib: opencv_calib3d
add lib: opencv_photo
===========['stdc++', 'tesseract', 'lept', 'opencv_features2d', 'opencv_objdetect', 'opencv_video', 'opencv_imgproc', 'opencv_ocl', 'opencv_contrib', 'opencv_superres', 'opencv_nonfree', 'opencv_flann', 'opencv_legacy', 'opencv_core', 'opencv_gpu', 'opencv_ts', 'opencv_videostab', 'opencv_highgui', 'opencv_ml', 'opencv_stitching', 'opencv_calib3d', 'opencv_photo']===========
['.', '/usr/local/include/opencv2', '/usr/local/include/opencv']
Traceback (most recent call last):
  File "setup.py", line 251, in <module>
    swig_opts=["-c++", "-I"+inclpath('tesseract'),
TypeError: cannot concatenate 'str' and 'NoneType' objects

【问题讨论】:

  • 如何安装 tesseract?
  • 以下划线开头的模块是按照约定编译的 (C) 模块。 Swig 是一个自动包装器,可以从 C 库中生成这样的模块。拥有 setup.py 构建的日志会很有趣,因为该模块似乎没有正确编译。
  • 这些文档显示了完成最后(也是最重要的)步骤的两种方法:解压缩预构建的二进制文件,或使用setup.py 正常构建。你做了哪一个?
  • 另外,除了 OS X (/usr/bin/python) 附带的版本之外,您是否安装了任何其他版本的 Python 2.7,例如 MacPorts 版本 (/opt/local/bin/python)还是 python.org 版本 (/usr/local/bin/python)?
  • 从您的更新...如果python setup.py build 失败,那么您实际上还没有安装它。在这种情况下,我不确定您的sys.path 上的tesseract.py 是如何结束的;也许您的 tesseract 源目录用完了?但这并不重要;在您真正安装之前,您不能使用它。

标签: python tesseract


【解决方案1】:

无法成功导入的原因是你从未安装成功。

setup.py 的输出表明:它因异常而失败。

那么,为什么您能够import tesseract 并获得足够远的距离以使tesseract.py 中的代码失败,而不是甚至无法找到它?我的猜测是,您在 tesseract 源代码树的中间使用当前工作目录启动了 Python,因此找到了 tesseract.py 的源代码副本,即使没有安装任何内容。但也有可能您的安装不完整、损坏,尤其是因为您在尝试通过setup.py 安装之前尝试为错误版本的 OS X 解压缩二进制副本。

不管怎样,你想知道的是如何修复它,而不是为什么它不起作用,对吧?

嗯,就在instructions you linked 的最顶端,上面写着:

现在已经过时了!!使用自制版本请为 HomeBrew 编译

事实上,您所遵循的说明并未针对 Mavericks 进行更新,并且链接到专门为 10.8 制作的二进制包(也可能针对较旧的 MacPorts 代码),这是一个很好的迹象,表明他们在他们说“过时”,两个感叹号等等。

在您按照 Homebrew 说明进行操作之前,除非您对 MacPorts 有其他需求,否则我建议您完全卸载 MacPorts。您通常可以只使用sudo rm -rf /opt/local 执行此操作,然后编辑您的~/.bash_profile 以删除对/opt/local 的所有引用,但您可能需要先查看MacPorts 站点上的最新说明。如果您害怕这样做,您可以随时只使用sudo mv /opt/local /opt/local-bak,这会将其留在原处,但不会妨碍您。

另外,不要使用您现有的源代码签出。它有一个损坏的、不完整的构建,谁知道这将如何影响任何重新构建它的尝试。只需完全删除该目录,当您执行说明的svn checkout 步骤时,您将获得一个全新的、干净的副本。

然后,从How to compile python-tesseract for Homebrew(Mac Mountain Lion/Maverick) 页面的顶部开始。

当您进入第 4 步时,不要同时执行两个步骤,只需执行其中一个步骤即可。我建议第一个版本,从源代码构建,因为如果出现任何问题,它可能会更明显,并且更容易从中恢复。但是如果你做第二个版本,安装二进制文件,这次一定要获得 10.9 版本,而不是 10.8。

【讨论】:

  • 感谢您的回答。我删除了 macports,并再次按照所有步骤操作,但仍然无法正常工作。
  • @FilipeFerminiano:你的意思是你再次遵循所有过时的 MacPorts 步骤并得到同样的错误?在那种情况下,我并不感到惊讶。如果您的意思是您遵循了所有新的 Homebrew 步骤,那么我们需要您为新尝试提供的详细信息与您为旧尝试提供的相同 - 您尝试了哪些变体、出了什么问题、在哪里、使用日志等。
  • 我用自制试用版的回复更新了我的问题
  • 从步骤 1-3 开始,一切正常。但在第 4 步,我被困在 setup.py clean
【解决方案2】:

我遇到了这个问题。唯一的问题是我必须运行:

sudo ldconfig

从命令行运行 tesseract -v 确认这是否是一个问题。

【讨论】:

    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多