2016-07-01 79 views
3

我在Cygwin上构建了Tesseract 3.04.01。它可以识别.bmp文件,但它.png文件失败:Tesseract运行时错误:pixReadMemPng中的错误:函数不存在

$ tesseract.exe testing/phototest.png output 
Tesseract Open Source OCR Engine v3.04.01 with Leptonica 
Error in pixReadMemPng: function not present 
Error in pixReadMem: png: no pix returned 
Error during processing.

我认为leptopnica增加了对PNG支持?

回答

2

经过一番更深入的研究,结果发现leptonica更像是libpng和libtiff这样的标准库的包装,如果找不到它的lib,会默认禁用支持

有人给我这个运行./configure时:

checking for png_read_png in -lpng... no

所以我不得不下载和建立的libpng。之后,它仍然没有工作,因为libpng安装在/usr/local/lib,显然这不是cygwin的默认库路径。所以我不得不使用使用LDFLAGS添加:

LDFLAGS=-L/usr/local/lib ./configure 

,它最终与PNG支持建立后,给这个消息:

checking for png_read_png in -lpng... yes 

出于某种原因,在Makefile中混入了链接顺序 - -lpng -lz,造成连接liblept.la失败,:

png.c:(.text+0x13ab): undefined reference to `crc32' 

的唯一途径,我可以解决这个问题是通过运行make V=1(详细模式)送ee值的实际命令,这是:

make[2]: Entering directory '/home/sasho/leptonica-1.73/src' 
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -no-undefined -version-info 5:0:0 -Wl,--as-needed -L/usr/local/lib -o liblept.la -rpath /usr/local/lib adaptmap.lo affine.lo affinecompose.lo arrayaccess.lo bardecode.lo baseline.lo bbuffer.lo bilateral.lo bilinear.lo binarize.lo binexpand.lo binreduce.lo blend.lo bmf.lo bmpio.lo bmpiostub.lo bootnumgen1.lo bootnumgen2.lo boxbasic.lo boxfunc1.lo boxfunc2.lo boxfunc3.lo boxfunc4.lo bytearray.lo ccbord.lo ccthin.lo classapp.lo colorcontent.lo coloring.lo colormap.lo colormorph.lo colorquant1.lo colorquant2.lo colorseg.lo colorspace.lo compare.lo conncomp.lo convertfiles.lo convolve.lo correlscore.lo dewarp1.lo dewarp2.lo dewarp3.lo dewarp4.lo dnabasic.lo dwacomb.2.lo dwacomblow.2.lo edge.lo encoding.lo enhance.lo fhmtauto.lo fhmtgen.1.lo fhmtgenlow.1.lo finditalic.lo flipdetect.lo fliphmtgen.lo fmorphauto.lo fmorphgen.1.lo fmorphgenlow.1.lo fpix1.lo fpix2.lo gifio.lo gifiostub.lo gplot.lo graphics.lo graymorph.lo grayquant.lo grayquantlow.lo heap.lo jbclass.lo jp2kheader.lo jp2kheaderstub.lo jp2kio.lo jp2kiostub.lo jpegio.lo jpegiostub.lo kernel.lo leptwin.lo libversions.lo list.lo map.lo maze.lo morph.lo morphapp.lo morphdwa.lo morphseq.lo numabasic.lo numafunc1.lo numafunc2.lo pageseg.lo paintcmap.lo parseprotos.lo partition.lo pdfio1.lo pdfio1stub.lo pdfio2.lo pdfio2stub.lo pix1.lo pix2.lo pix3.lo pix4.lo pix5.lo pixabasic.lo pixacc.lo pixafunc1.lo pixafunc2.lo pixalloc.lo pixarith.lo pixcomp.lo pixconv.lo pixlabel.lo pixtiling.lo pngio.lo pngiostub.lo pnmio.lo pnmiostub.lo projective.lo psio1.lo psio1stub.lo psio2.lo psio2stub.lo ptabasic.lo ptafunc1.lo ptra.lo quadtree.lo queue.lo rank.lo rbtree.lo readbarcode.lo readfile.lo recogbasic.lo recogdid.lo recogident.lo recogtrain.lo regutils.lo rop.lo ropiplow.lo roplow.lo rotate.lo rotateam.lo rotateamlow.lo rotateorth.lo rotateshear.lo runlength.lo sarray.lo scale.lo scalelow.lo seedfill.lo seedfilllow.lo sel1.lo sel2.lo selgen.lo shear.lo skew.lo spixio.lo stack.lo stringcode.lo sudoku.lo textops.lo tiffio.lo tiffiostub.lo utils.lo viewfiles.lo warper.lo watershed.lo webpio.lo webpiostub.lo writefile.lo zlibmem.lo zlibmemstub.lo -lz -lpng  

我然后执行相同的命令(从./src作为当前目录或它不会工作),但我所附另一个-lz在端部,这导致它成功。之后,我刚刚重新制作,并继续构建图书馆的其余部分。

cd src 
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -no-undefined -version-info 5:0:0 -Wl,--as-needed -L/usr/local/lib -o liblept.la -rpath /usr/local/lib adaptmap.lo affine.lo affinecompose.lo arrayaccess.lo bardecode.lo baseline.lo bbuffer.lo bilateral.lo bilinear.lo binarize.lo binexpand.lo binreduce.lo blend.lo bmf.lo bmpio.lo bmpiostub.lo bootnumgen1.lo bootnumgen2.lo boxbasic.lo boxfunc1.lo boxfunc2.lo boxfunc3.lo boxfunc4.lo bytearray.lo ccbord.lo ccthin.lo classapp.lo colorcontent.lo coloring.lo colormap.lo colormorph.lo colorquant1.lo colorquant2.lo colorseg.lo colorspace.lo compare.lo conncomp.lo convertfiles.lo convolve.lo correlscore.lo dewarp1.lo dewarp2.lo dewarp3.lo dewarp4.lo dnabasic.lo dwacomb.2.lo dwacomblow.2.lo edge.lo encoding.lo enhance.lo fhmtauto.lo fhmtgen.1.lo fhmtgenlow.1.lo finditalic.lo flipdetect.lo fliphmtgen.lo fmorphauto.lo fmorphgen.1.lo fmorphgenlow.1.lo fpix1.lo fpix2.lo gifio.lo gifiostub.lo gplot.lo graphics.lo graymorph.lo grayquant.lo grayquantlow.lo heap.lo jbclass.lo jp2kheader.lo jp2kheaderstub.lo jp2kio.lo jp2kiostub.lo jpegio.lo jpegiostub.lo kernel.lo leptwin.lo libversions.lo list.lo map.lo maze.lo morph.lo morphapp.lo morphdwa.lo morphseq.lo numabasic.lo numafunc1.lo numafunc2.lo pageseg.lo paintcmap.lo parseprotos.lo partition.lo pdfio1.lo pdfio1stub.lo pdfio2.lo pdfio2stub.lo pix1.lo pix2.lo pix3.lo pix4.lo pix5.lo pixabasic.lo pixacc.lo pixafunc1.lo pixafunc2.lo pixalloc.lo pixarith.lo pixcomp.lo pixconv.lo pixlabel.lo pixtiling.lo pngio.lo pngiostub.lo pnmio.lo pnmiostub.lo projective.lo psio1.lo psio1stub.lo psio2.lo psio2stub.lo ptabasic.lo ptafunc1.lo ptra.lo quadtree.lo queue.lo rank.lo rbtree.lo readbarcode.lo readfile.lo recogbasic.lo recogdid.lo recogident.lo recogtrain.lo regutils.lo rop.lo ropiplow.lo roplow.lo rotate.lo rotateam.lo rotateamlow.lo rotateorth.lo rotateshear.lo runlength.lo sarray.lo scale.lo scalelow.lo seedfill.lo seedfilllow.lo sel1.lo sel2.lo selgen.lo shear.lo skew.lo spixio.lo stack.lo stringcode.lo sudoku.lo textops.lo tiffio.lo tiffiostub.lo utils.lo viewfiles.lo warper.lo watershed.lo webpio.lo webpiostub.lo writefile.lo zlibmem.lo zlibmemstub.lo -lz -lpng -lz  
cd - 
make 
+1

为什么你不使用标准的'libpng16-devel'软件包进行编译而不是自己编译它? PS:cygwin也有一个tesseract 3.04.01包。 – matzeri

+0

@matzeri因为我不知道从哪里得到它。我不知道输入什么命令才能得到它。没有'apt-get'。 – sashoalm

+0

标准工具:使用安装程序'https:// cygwin.com/cygwin-ug-net/setup-net.html#setup-packages' – matzeri