使用自制程序在 M1 Mac 上安装 tesseocr 时缺少 leptonica/allheaders.h

问题描述 投票:0回答:4

我试图安装normcap来读取图像的OCR,但我遇到了错误并且不明白如何解决它。

PC - Macbook M1 芯片组
Homebrew 3.1.7已安装并且工作正常。
CommandLinetools 12.5 已安装(Apple)。
Leptonica 1.80.0 已安装。
已安装 Tesseract 4.1.1

asura@Asuras-MBP ~ % pip3 install tesserocr
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Defaulting to user installation because normal site-packages is not writeable
Collecting tesserocr
  Using cached tesserocr-2.5.1.tar.gz (54 kB)
Building wheels for collected packages: tesserocr
  Building wheel for tesserocr (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /Library/Developer/CommandLineTools/usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-install-44_kap26/tesserocr_10c3c6f9825d4363b69446dbd439cf21/setup.py'"'"'; __file__='"'"'/private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-install-44_kap26/tesserocr_10c3c6f9825d4363b69446dbd439cf21/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-wheel-vmhekyq6
       cwd: /private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-install-44_kap26/tesserocr_10c3c6f9825d4363b69446dbd439cf21/
  Complete output (16 lines):
  /private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-install-44_kap26/tesserocr_10c3c6f9825d4363b69446dbd439cf21/setup.py:72: SyntaxWarning: "is not" with a literal. Did you mean "!="?
    if subversion is not None and subversion is not "":
  Supporting tesseract v4.1.1
  Building with configs: {'libraries': ['tesseract', 'lept'], 'cython_compile_time_env': {'TESSERACT_VERSION': 67174656}}
  running bdist_wheel
  running build
  running build_ext
  building 'tesserocr' extension
  creating build
  creating build/temp.macosx-10.14.6-arm64-3.8
  clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -iwithsysroot/System/Library/Frameworks/System.framework/PrivateHeaders -iwithsysroot/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/Headers -arch arm64 -arch x86_64 -Werror=implicit-function-declaration -I/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/include/python3.8 -c tesserocr.cpp -o build/temp.macosx-10.14.6-arm64-3.8/tesserocr.o -std=c++11 -DUSE_STD_NAMESPACE
  tesserocr.cpp:663:10: fatal error: 'leptonica/allheaders.h' file not found
  #include "leptonica/allheaders.h"
           ^~~~~~~~~~~~~~~~~~~~~~~~
  1 error generated.
  error: command 'clang' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for tesserocr
  Running setup.py clean for tesserocr
Failed to build tesserocr
Installing collected packages: tesserocr
    Running setup.py install for tesserocr ... error
    ERROR: Command errored out with exit status 1:
     command: /Library/Developer/CommandLineTools/usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-install-44_kap26/tesserocr_10c3c6f9825d4363b69446dbd439cf21/setup.py'"'"'; __file__='"'"'/private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-install-44_kap26/tesserocr_10c3c6f9825d4363b69446dbd439cf21/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-record-qagqxk6s/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /Users/asura/Library/Python/3.8/include/python3.8/tesserocr
         cwd: /private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-install-44_kap26/tesserocr_10c3c6f9825d4363b69446dbd439cf21/
    Complete output (16 lines):
    /private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-install-44_kap26/tesserocr_10c3c6f9825d4363b69446dbd439cf21/setup.py:72: SyntaxWarning: "is not" with a literal. Did you mean "!="?
      if subversion is not None and subversion is not "":
    Supporting tesseract v4.1.1
    Building with configs: {'libraries': ['tesseract', 'lept'], 'cython_compile_time_env': {'TESSERACT_VERSION': 67174656}}
    running install
    running build
    running build_ext
    building 'tesserocr' extension
    creating build
    creating build/temp.macosx-10.14.6-arm64-3.8
    clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -iwithsysroot/System/Library/Frameworks/System.framework/PrivateHeaders -iwithsysroot/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/Headers -arch arm64 -arch x86_64 -Werror=implicit-function-declaration -I/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/include/python3.8 -c tesserocr.cpp -o build/temp.macosx-10.14.6-arm64-3.8/tesserocr.o -std=c++11 -DUSE_STD_NAMESPACE
    tesserocr.cpp:663:10: fatal error: 'leptonica/allheaders.h' file not found
    #include "leptonica/allheaders.h"
             ^~~~~~~~~~~~~~~~~~~~~~~~
    1 error generated.
    error: command 'clang' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /Library/Developer/CommandLineTools/usr/bin/python3 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-install-44_kap26/tesserocr_10c3c6f9825d4363b69446dbd439cf21/setup.py'"'"'; __file__='"'"'/private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-install-44_kap26/tesserocr_10c3c6f9825d4363b69446dbd439cf21/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/w4/n1pwmphn6j13trrwzlzjbpzh0000gn/T/pip-record-qagqxk6s/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /Users/asura/Library/Python/3.8/include/python3.8/tesserocr Check the logs for full command output.

据我所知,我提供了所需的所有信息,如果缺少某些信息,请告诉我。
我是自制程序新手,但使用过 Linux 操作系统一段时间

还有一种方法我可以从 Github 或任何存储库直接在自制程序上安装,就像如果在 git 存储库文件中进行了一些更改,我想直接安装它们,否则需要等待 tar.gz 或 .dmg 文件的 realese

python-3.x macos pip python-tesseract leptonica
4个回答
3
投票

无法从 pip 安装 tesserocr。事实上,构建状态被标记为failing,正如您在 PyPI 链接here上看到的那样。

因此要安装它,您需要使用以下行进行 conda 安装:

conda install -c conda-forge tesserocr

此外,您需要使用 Homebrew 安装 tesseract,如下所示:

brew install tesseract

现在,如果您尝试运行脚本,可能会出现新错误,表明未找到某些 dylib

为了解决这个新问题,您需要创建符号链接(即符号链接)。就我而言,我需要创建那些:

注意:在执行以下几行之前,请检查 /usr/local 中是否有名为 lib 的文件夹,如果没有则创建它

ln -s /opt/homebrew/Cellar/libarchive/3.6.2_1/lib/libarchive.13.dylib /usr/local/lib/libarchive.19.dylib
ln -s /opt/homebrew/Cellar/leptonica/1.82.0_1/lib/liblept.5.dylib /usr/local/lib
ln -s /opt/homebrew/Cellar/tesseract/5.3.0_1/lib/libtesseract.5.dylib /usr/local/lib
ln -s /opt/homebrew/Cellar/libtiff/4.4.0_1/lib/libtiff.5.dylib /usr/local/lib

现在通常您可以运行脚本了。


1
投票

包含地址应为:

/opt/homebrew/Cellar/leptonica/1.82.0/include
而不是
/opt/homebrew/Cellar/leptonica/1.82.0/include/leptonica
。如果您可以将第一个路径添加到 PATH 变量中,它可能会起作用。

我在运行 C++ 代码时遇到了同样的问题,我包含了正确的路径,并且程序找到了

leptonics/allheader.h
文件。


0
投票

首先

brew install tesseract
。然后
pip install tesserocr
。显然 pip 安装取决于brew 安装的内容。

在 pip 23.1.1、Python 3.10.11 上。另外,我使用的是较旧的 MacBook,而不是 M1,但我遇到了与 OP 相同的错误。


0
投票

我在这里找到了一个修复程序,它适用于 golang,但也可能适用于 python。 https://github.com/otiai10/gosseract/issues/234

使用

brew install tesseract

安装
export LIBRARY_PATH="/opt/homebrew/lib"

export CPATH="/opt/homebrew/include"
© www.soinside.com 2019 - 2024. All rights reserved.