OSX-为Tesseract 4.0编译培训工具-未找到pango库

时间:2019-03-26 15:56:04

标签: macos homebrew tesseract

我无法获取配置脚本来识别通过Homebrew安装的pango库,这些库是培训工具的依赖项。到目前为止,我已经执行了此处详细介绍的所有步骤:

https://github.com/tesseract-ocr/tesseract/issues/1453

在这里:

https://github.com/tesseract-ocr/tesseract/wiki/Compiling#macos

运行配置脚本后,我继续在输出中得到以下警告:

  

正在检查pango> = 1.22.0 ...否

     

配置:警告:需要pango 1.22.0或更高版本,但不是必需的   找到。

     

配置:警告:将不会构建培训工具。

     

配置:警告:尝试安装libpango1.0-dev软件包。

     

正在检查开罗...否

     

配置:警告:由于以下原因,将无法构建培训工具   缺少开罗图书馆。

     

配置:警告:尝试安装libcairo-dev?包。

库位于/usr/local/Cellar/pango/1.42.4_1

我已尝试按照上述说明运行配置脚本:

./configure CPPFLAGS=-I/usr/local/opt/icu4c/include LDFLAGS=-L/usr/local/opt/icu4c/lib

,以及尝试将路径添加到链接标志:

./configure LDFLAGS="-L/usr/local/opt/icu4c/lib -L/usr/local/Cellar/pango/1.42.4_1/lib" CPPFLAGS="-I/usr/local/opt/icu4c/include"

我仍然无法获取脚本来查看库。

预先感谢您提供有关如何解决此问题的建议。

4 个答案:

答案 0 :(得分:2)

它看起来像 pango 和/或 cairo ,也许其他库依赖于 libffi libffi 在Homebrew中被称为仅桶装。即使已安装libffi,也不会通过符号链接进行链接。当 pkg-config 尝试查找库时,它还会检查其依赖项。由于无法找到 libffi ,因此 pkg-config 表示 cairo 不可用。因此,需要致电

brew link libffi --force

这应该可以解决问题,而无需付出任何额外的努力。至少它对我的情况有用。

答案 1 :(得分:1)

我通过在libffi和icu4c下复制pkgconfig文件来解决此问题
(通过在终端中输入brew brew libffi icu4c查找路径)
并将它们粘贴到/ usr / local / lib / pkgconfig,然后设置

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

答案 2 :(得分:0)

这是我发现的问题的最优雅的解决方案:

Loggers.general().debug(LOG, "### getOKTAToken()...");
String OKTAresponse = "";
OKTAResponse oktaReply = new OKTAResponse();
HttpClient httpClient = HttpClientBuilder.create().build();
Loggers.general().debug(LOG, "### ipsum");
//pass webservice URL
Loggers.general().debug(LOG, "URL:{}",Constants.URL);
HttpPost httpPost = new HttpPost(Constants.URL);        
ArrayList<NameValuePair> postParameters;

//required keys for OKTA call
Loggers.general().debug(LOG, "Setting Body");
postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("client_id", 
Constants.clientID));
postParameters.add(new BasicNameValuePair("client_secret", 
Constants.clientSecret));
postParameters.add(new BasicNameValuePair("grant_type", 
Constants.grantType));

try 
{
Loggers.general().debug(LOG, "Setting entity...");
httpPost.setEntity(new UrlEncodedFormEntity(postParameters,"UTF-8"));
HttpResponse response = httpClient.execute(httpPost);

https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract-4.00#on-macos-mojave-with-homebrew

答案 3 :(得分:0)

这是鲍里斯(Boris)提供的答案的修改版本[鲍里斯(Boris:请说出这个词,我会删除它)。

在macOS 10.13.6 High Sierra上进行了测试。

以前没有答案对我有用-我必须在鲍里斯(Boris)给出的冲泡要求中明确添加libpng

brew install cairo pango icu4c autoconf libffi libarchive libpng
export PKG_CONFIG_PATH=\
$(brew --prefix)/lib/pkgconfig:\
$(brew --prefix)/opt/libarchive/lib/pkgconfig:\
$(brew --prefix)/opt/icu4c/lib/pkgconfig:\
$(brew --prefix)/opt/libffi/lib/pkgconfig:\
$(brew --prefix)/opt/libpng/lib/pkgconfig
./configure

注意:如果您已经具备以上条件,则可能希望运行brew reinstall来代替brew install,否则会损坏其他项目。

我不需要向configure提供任何标志。

当然,目标是要编译培训工具,以便可以使用combine_tessdatawordlist2dawgdawg2wordlist等(我在任何地方都没有找到适用于这些的macOS二进制文件)

完整说明如下:

git clone git@github.com:tesseract-ocr/tesseract.git
git checkout tags/4.1.0

cd tesseract
./autogen.sh

brew install cairo pango icu4c autoconf libffi libarchive libpng
export PKG_CONFIG_PATH=\
$(brew --prefix)/lib/pkgconfig:\
$(brew --prefix)/opt/libarchive/lib/pkgconfig:\
$(brew --prefix)/opt/icu4c/lib/pkgconfig:\
$(brew --prefix)/opt/libffi/lib/pkgconfig:\
$(brew --prefix)/opt/libpng/lib/pkgconfig
./configure

make -j
sudo make install

# -> You should now have access to tesseract

make training
sudo make training-install

# -> You should now have access to the training tools: combine_tessdata, wordlist2dawg, dawg2wordlist, etc.

# If not, check /usr/local/bin/ is on your PATH, i.e.
export PATH=/usr/local/bin/:$PATH


脚注:我如何诊断libpng问题:

如上所述和here所引发的错误不是很有帮助:

make training
Need to reconfigure project, so there are no errors

深入研究configure会引起以下警告:

configure: WARNING: pango 1.22.0 or higher is required, but was not found.
configure: WARNING: Training tools WILL NOT be built.
configure: WARNING: Try to install libpango1.0-dev package.
checking for cairo... no
configure: WARNING: Training tools WILL NOT be built because of missing cairo library.
configure: WARNING: Try to install libcairo-dev?? package.
checking that generated files are newer than configure... done

我也有一个cairo

因此,您必须在调试模式下运行configure

./configure --enable-debug

然后通过config.log检查grep(例如)来检查pango

$PKG_CONFIG --exists --print-errors "pango >= 1.22.0"

这是在执行configure时引发警告的行。

您现在可以手动执行最后一行:

pkg-config --exists --print-errors pango
dyld: Symbol not found: __cg_png_create_info_struct
  Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
  Expected in: /usr/local/lib/libPng.dylib
 in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
Abort trap: 6

这就是我追查libpng原因的方式。 (在我的情况下,我不得不reinstall /重新link libpng,因为与gnuplot / octave / aquaterm相关的各种长期冲突等。

有人吗