FAQ Old - kana112233/tesseract GitHub Wiki

此页面存档截至2018年5月1日的Tesseract 2.0x,3.0x和4.00.00alpha的FAQ页面.

FAQ页面将更新为仅包含有关Tesseract 4.0.0的信息.


经常问的问题

常见问题和答案的集合,或指向它们的指针. 如果您有问题,请将其发布到论坛.

Table of Contents

##规则和建议

如果您认为在Tesseract中发现了错误,请创建一个问题. 应在用户邮件列表中提出问题.

报告GitHub中的问题或在论坛中提问之前,您必须阅读贡献指南.

##我可以提高OCR的速度吗?

If you are processing several images, you can run tesseract in parallel with GNU Parallel. E.g. instead of:

find . -maxdepth 1 -name "*.tif" -print0 | while IFS= read -r -d '' n; do 
    tesseract "$n" "$n" -l eng hocr
    hocr2pdf -i "$n" -n -o "$n.pdf" < "$n.html"
done 

你可以运行:

parallel "tesseract {} {} -l eng hocr; hocr2pdf -i {} -n -o {}.pdf < {}.html" ::: *.tif

Tesseract 4在处理页面时也使用多达四个CPU线程,因此对于单个页面,它将比Tesseract 3更快. 如果您的计算机只有两个CPU内核,那么运行四个线程会显着减慢速度,最好使用单个线程或最多两个线程! 使用单个线程消除了多线程的计算开销,并且也是通过为每个CPU核心运行一个Tesseract进程来处理大量图像的最佳解决方案. 使用环境变量“OMP_THREAD_LIMIT”设置最大线程数. 要禁用多线程,请使用“OMP_THREAD_LIMIT = 1”.

Windows:tesseract在启动后立即自动关闭

Tesseract可以生成哪些输出格式?

  • 文本

  • pdf

  • hocr

  • tsv

*仅限文本图层的pdf

Tesseract可以生成纯文本,PDF和HTML输出. Tesseract的标准输出是一个普通的txt文件(utf-8编码,'\ n'为行尾标记).

使用configfile“hocr”,tesseract将生成符合hOCR规范的XHTML输出(输入图像名称必须为ASCII,如果 操作系统对文件名使用utf-8编码以外的内容 - 请参阅[issue 809](https://web.archive.org/web/*/http://code.google.com/p/tesseract-ocr/问题/细节?id = 809)一些细节).

使用configfile'pdf'tesseract将生成可搜索的PDF,其中包含具有隐藏的可搜索文本图层的页面图像.

##如何解释hOCR基线输出?

The hOCR output for the first line of eurotext.tif contains the following information:

<span class='ocr_line' id='line_1_1' title="bbox 105 66 823 113; baseline 0.015 -18; …

bbox is the bounding box of the line in image coordinates (blue). The two numbers for the baseline are the slope (1st number) and constant term (2nd number) of a linear equation describing the baseline relative to the bottom left corner of the bounding box (red). The baseline crosses the y-axis at -18 and its slope angle is arctan(0.015) = 0.86°. In general, the baseline is described by a polynomial of order n with the coefficients pn … p0 with n = 1 for a linear (i.e. straight) line (see hOCR spec). hOCR baseline

libtesseract.so.3:无法打开共享对象文件

'sudo make install'后运行'sudo ldconfig'. 见问题621.

Tesseract不起作用

请确保只安装一个tesseract,例如 如果tesseract 3.01和3.02安装在同一台计算机上,则报告存在问题(在共享构建的情况下). 参见例如 issue 793

##如何卸载Tesseract

In the tesseract-ocr directory, run:

sudo make uninstall 

If you installed training tools, also run:

sudo make training-uninstall

##如何比较不同版本的Tesseract

如果你想要几个版本的tesseract(例如你想比较OCR结果)我建议你从源代码编译它们(例如在/usr/src中)而不是安装它们. 如果要测试特定版本,可以这样运行:

/usr/src/tesseract-3.03/api/tesseract eurotext.tif eurotext
/usr/src/tesseract-ocr.3.02/api/tesseract eurotext.tif eurotext

/usr/src/tesseract-3.03/api/tesseract是shell包装器脚本,它将使用正确的共享库(无需安装...).

pixReadStream中的错误:

如果您看到此错误,则表明您的leptonica安装存在问题 - 例如 缺少对图像格式的支持. 通常这意味着在leptonica构建期间没有正确安装相关的图像库,或者在leptonica中存在一些配置问题.

请检查问题

340,[391](https:/ /web.archive.org/web/*/http://code.google.com/p/tesseract-ocr/issues/detail?id=391)和[443](https://web.archive.org/网络/*/HTTP://code.google.com/p/tesseract-ocr/issues/detail ID = 443)

##无法打开eng.unicharset?

您没有安装语言培训数据. 阅读自述文件维基页面.

leptonica库缺失

如果在运行./configure时出现此错误消息并且您的leptonica头文件位于/usr/local/include(例如,您将leptonica安装到/usr/local)而不是运行:

LIBLEPT_HEADERSDIR=/usr/local/include ./configure

要么:

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

##无法读取压缩的TIFF文件

I get this error message:

read_tif_image:Error:Illegal image format:Compression

Windows(Visual C ++):

可以使用以下内容在VC ++ 6或VC ++ Express中添加Libtiff支持:

Go to the Windows download for libtiff and follow these steps:

Download and run the setup program.
Add the paths for include and library files in tools/options/directories
Add HAVE_LIBTIFF to the preprocessor definitions.
Add libtiff.lib to the list of libraries.
Rebuild.
Put libtiff3.dll be in your path somewhere.
This is done by control panel/system/advanced/environment variables and adding c:/program files/gnuwin32/bin to PATH.
Keep your fingers crossed...

Non-Windows (and Cygwin): Install libtiff-dev. Procedure differs from OS to OS, but on many something like

sudo apt-get install libtiff-dev

or some variant thereof should do the trick, before running configure.

##没有带彩色图像的输出

已经有几个带有彩色图像的空白或垃圾输出的错误报告,包括有和没有libtiff. 以下是最新信息(最新更新2008年9月23日):

没有libtiff,Tesseract只读取未压缩的tiff文件. 即便如此,它也不会正确读取32位tiff文件. 将在2.04修复. (这意味着它将使用libtiff正确处理大多数图像深度(16位除外).

使用libtiff,Tesseract读取压缩的tiff文件,但无法处理任何**颜色:24或32位. 它只能读取1位二进制图像或8位灰度. (没有彩色地图!)在2.04中修复.

API(TessBaseAPI)应该可以使用1,8,24或32位图像.

##它是否支持多页TIFF文件?

是的,对于所有版本的2.03及更高版本,只要您安装了libtiff. 请参阅上面的压缩TIFF.

##为什么viewer/svutil.cpp没有编译?

此文件是可移植性问题的最大原因,因为它是在外部进程中运行的查看器的接口. 如果您可以在系统上编译它,请报告一个问题,记录您必须更改的内容,但请仅针对当前版本. 如果您无法编译它,您可以在编译器中定义GRAPHICS \ _DISABLED(对于所有源代码),它将注释掉所有难以编译的代码并禁用查看器功能,大多数人不会 反正使用.

在类Unix系统上,可以指示configure脚本禁用这样的图形:

configure --disable-graphics

Ubuntu 14.04的培训工具在哪里?

由于疏忽,培训工具不随Ubuntu 14.04一起提供.

要么等待下一个Ubuntu版本,要么使用这些命令.

sudo apt-get build-dep tesseract-ocr
sudo apt-get install devscripts
dget http://http.debian.net/debian/pool/main/t/tesseract/tesseract_3.03.03-1.dsc
tar xvzf tesseract_3.03.03.orig.tar.gz
cd tesseract-3.03
zcat ../tesseract_3.03.03-1.diff.gz | patch -p1
debuild -us -uc
cd ..
sudo dpkg -i *.deb

##如何编辑培训中使用的Box文件?

有各种各样的程序可以帮助解决这个问题,请参阅AddOns页面.

Utf8缓冲区太大,size = xx(训练期间出错)

每个可识别单元(字符/字形/字形)的utf-8表示的上限为30个字节. 它不容易增加. 检查你的盒子文件是否有奇怪的长字符串.

##如何只识别数字?

Tesseract 3

Use the digits config file like this:

tesseract imagename outputbase digits

Tesseract 2.03

Use

TessBaseAPI::SetVariable("tessedit_char_whitelist", "0123456789");

BEFORE calling an Init function or put this in a text file called tessdata/configs/digits:

tessedit_char_whitelist 0123456789

and then your command line becomes:

tesseract image.tif outputbase nobatch digits

**警告:在版本2.03/2.04(但不是版本3.00及更高版本)中,你必须digits之前放置nobatch.

##如何在我最喜欢的语言中添加一个字符或一种字体,而无需从头开始重新训练?

不能只添加一个字符或字体. 你需要从头开始重新训练. 请参阅TrainingTesseract wiki.

##如何生成可搜索的PDF输出?

可搜索的PDF输出是Tesseract 3.03版的标准功能. 像这样使用pdf配置文件:

tesseract phototest.tif phototest pdf

##可搜索的PDF似乎只包含单词字母之间的空格或空格

PDF本身可能没有任何问题,但PDF阅读器可能无法理解其隐藏的可搜索文本层. 例如,Mac OS X中的Preview.app以出现这样的问题而闻名,并且可能只“看到”空格而没有文本. 请尝试使用Adobe Acrobat Reader.

##如何进行流式传输

假设你有一个惊人的但很慢的多页扫描设备. 这将是

在扫描期间很好的OCR. 在此示例中,扫描程序正在发送

将Tesseract生成的图像文件名. Tesseract流a

可搜索的PDF到标准输出. 此功能需要Tesseract v3.04或更高版本.

scanimage --batch --batch-print | tesseract -c stream_filelist=true - - pdf > output.pdf

##是否有最小文字大小? (它不会读取屏幕文字!)

文本大小最小,合理的准确性. 你必须考虑分辨率和点大小. 精度降至10pt x 300dpi以下,迅速低于8pt x 300dpi. 快速检查是计算角色x高度的像素. (X高度是小写字母x的高度.)在10pt x 300dpi时,x高度通常约为20像素,尽管这可能因字体而异. 在10个像素的x高度以下,您获得准确结果的可能性很小,而在大约8个像素以下,大部分文本将被“去除噪声”.

##为什么输出空或质量差?

阅读ImproveQuality维基页面.

##如何生成语言数据文件?

阅读TrainingTesseract维基页面.

##如何解压缩或更改现有语言数据文件?

使用combine \ _tessdata命令. 有关其用法的详细信息,请参阅combine \ _tessdata手册页.

##如何提供自己的字典?

Tesseract 3

要添加额外的单词列表,请按照[tesseract(1)]中的说明创建.user-words文件(https://github.com/tesseract-ocr/tesseract/blob/master/doc/tesseract.1.asc# 配置 - 文件 - 和 - 增强 - 与用户数据).

如果要替换整个字典,则需要解压缩.traineddata文件,创建新的word-dawg文件,然后将文件打包回.traineddata文件. 有关详细信息,请参阅TrainingTesseract.

Tesseract 2

简单:用您自己的单词列表替换tessdata/eng.user-words,格式相同 - UTF8文本,每行一个单词.

更难,但对于大型字典更好:将tessdata/eng.word-dawg替换为使用wordlist2dawg从您自己的单词列表创建的字典. 有关详细信息,请参阅TrainingTesseract维基页面.

wordlist2dawg不起作用!

2.03 wordlist2dawg存在内存问题. 如果你没有超过1GB的内存,那么你的系统会停止运行并且运行速度非常慢.

在training/wordlist2dawg.cpp的39-40行减少max \ _num \ _edges和reserved \ _edges,并减少10倍.重建.

If you successfully create a new dawg, and then it doesn't load, due to the error:

Error: trying to read a DAWG '%s' that contains %d edges while the maximum is %d.

Then try changing the value of MAX_NUM_EDGES_IN_SQUISHED_DAWG_FILE in dawg.h.

##如何增加字典的信任度?

对于tesseract-ocr <3.01,请尝试将dict/permute.cpp中的NON \ _WERD和GARBAGE \ _STRING提升到3或甚至5.

对于tesseract-ocr> = 3.01,尝试在配置文件中增加变量language \ _model \ _penalty \ _non \ _freq \ _dict \ _word和language \ _model \ _penalty \ _non \ _dict \ _word. 默认情况下,它们分别为0.1和0.15.

对于tesseract-ocr 2.0x:如果您识别的文本字体与训练数据明显不同,并且您不介意放慢速度,您还可以尝试将classify/intmatcher.cpp中的ClassPrunerThreshold从229降低到大约200 这些措施都应该提高字典的力量来解决非单词中的单词.

当然,任何提高词典功能的变化也会增加幻觉词典单词的能力. 如果这是一个问题,请在字典中保留简短的单词,并且如果用更频繁的单词增加歧义的数量,则不要添加很少使用的单词列表.

要以相反的方式关闭字典,您可以使用combine \ _tessdata从训练的数据文件中删除相应的dawg,或者将相应的load \ _type \ _dawg参数设置为false,但必须使用 配置文件和采用configs参数的Init版本. 它不能由SetVariable完成,因为参数控制初始化. type可以是punc,system,number,bigram,freq,unambig之一.

##什么是配置,我怎么能有更多?

Config是tesseract中的一个重载词. 一个含义是用于调试或修改其行为的控制参数文件,例如tessdata/configs/segdemo.

另一个含义用于训练和分类器:

配置表示来自不同字体的(可能)不同形状的字符. MAX \ _NUM \ _CONFIGS限制适用于包含任何一个字符样本的mftraining命令行上的不同文件数,因为假定每个文件代表不同的字体. 目前(2.03)限制为32个配置. 如果并非所有文件都包含所有字符,则可以在mftraining命令行中使用超过32个文件.

解决问题的其他方法:

如果文件包含非常相似的样本,那么您可以将它们组合在一起以生成单个文件以减少文件总数. 如果两个文件中的字符看起来非常不同,请不要这样做.

增加MAX \ _NUM \ _CONFIGS(在intproto.h)会有后果. 您将使用不同的MAX \ _NUM \ _CONFIGS值生成的inttemp文件不可读. 我们正在努力克服3.0版本的这个弱点. 虽然不会在2.04. 此外,分类将更慢并使用更多内存.

##当使用相同的TessBaseAPI对象解码多个图像时,tesseract的结果不一致

Try to clear the adaptive data with ClearAdaptiveClassifier() or turn off the adaptive classifier with config variables:

classify_enable_learning 0
classify_enable_adaptive_matcher 0

另见[tesseract论坛]上的讨论(https://groups.google.com/d/topic/tesseract-ocr/ByGJhocI9qQ)

Diacritics上面和下面的字形被忽略/导致垃圾输出

尝试将textord \ _min \ _linesize的默认值(1.25)增加到更高的值. 一些用户报告了2.5的良好结果.

##文档在哪里?

你在看它. 如果事情不明确,请搜索Tesseract Google Group或在那里问我们. 如果您想帮助我们写更多内容,请将其发布到论坛!

##如何试用下一个版本?

定期稳定版本转到下载页面. 在发布之间,特别是在新发布之前,最新的代码可以从git获得. 你可以在这里找到源代码:https://github.com/tesseract-ocr/tesseract.git你可以通过命令行查看它,或者通过使用各种客户端程序和插件的howto链接.

actual \ _tessdata \ _num \ _entries _ <= TESSDATA \ _NUM \ _ENTRIES:错误:断言失败:在文件中.. \ ccutil \ tessdatamanager.cpp,第55_行

如果您在运行** tesseract **时遇到错误,请检查您是否使用了正确版本的训练数据(例如3.00和3.01). 你不能使用3.01受训数据与tesseract 3.00.

last \ _char =='\ n':错误:断言失败:在文件.. \ ccutil \ tessdatamanager.cpp中,第95行

如果在运行期间出现错误** combine \ _tessdata **:

这表示您的lang.unicharambigs在文件末尾缺少一个空行.

##错误:非法的最小或最大规格

This can happen if number format ("locale" on linux or "Regional and Language Options" in Windows) is different than English format. Solution is to set your locale (in code) of LC_NUMERIC to "C" before calling tesseract. In some cases you need to include locale.h:

#include <locale.h>
setlocale (LC_NUMERIC, "C");

其他选项是调整用户区域设置/区域设置.

另见问题中的信息250和[228] ](https://web.archive.org/web/20151128085645/http://code.google.com/p/tesseract-ocr/issues/detail?id=228)

##错误:inttemp中的X类,而unicharset包含Y个unichars.

(Y!= X)

有两种可能性:

X~ = Y,通常X <Y:通常由训练过程失败引起. 从tr文件生成过程中查找FATALITY消息. 看起来训练过程未能获取某些字符的一些样本,并且它们没有进入inttemp文件(在mftraining中),因为tr文件中没有条目. applybox存在一些问题,这对许多人来说都是一个问题. 字符样本需要间隔开.

X是一个狂野的数字(非常大的+或 - ),Y是一个介于100和几千之间的理智数字,具体取决于语言:腐败的inttemp文件,或者(如果你没有自己训练过)你的硬件很有趣 未自动检测到的endian体系结构. Big-endian或Little-endian 32和64位应该工作,但混合端(0x12345678 --> 0x56 0x78 0x12 0x13或类似)将**不工作. 获得合理的硬件架构,或自行重新培训. 然后你的inttemp将匹配硬件.

##错误:unicharset的大小大于MAX \ _NUM \ _ _ CASASSES

只需为您的构建增加MAX \ _NUM \ _ _ CASASS(在dict/matchdefs.h中). 查看问题670和[743](https ://web.archive.org/web/*/https://code.google.com/p/tesseract-ocr/issues/detail ID = 743)?

##如何将错误消息发送到tesseract.log而不是stderr?

要恢复写入tesseract.log而不是写入控制台窗口的旧行为,您需要一个包含以下内容的文本文件:

debug \ _file tesseract.log

调用文件'logfile'并将其放入tessdata/configs/ 然后将logfile添加到命令行的末尾.

##如何抑制tesseract信息行?

See issue 579. On linux you can redirect stderr and stdout output to /dev/null. E.g.:

tesseract phototest.tif phototest 1>/dev/null 2>&1

With tesseract 3.02 you can use config "quiet". E.g.:

tesseract phototest.tif phototest quiet

**警告:**如果有错误消息,这两个选项都会导致您看不到错误消息.

##如何获得每个单词的坐标和置信度?

有两种选择. 如果您不想进入编程,可以使用Tesseract的hOCR输出格式(请参阅Tesseract手册页 )详情). 如果您习惯编程,请使用Tesseract API.

##如何计算置信度?

  • 角色 - 计算训练样本中角色0到1之间的距离度量:   

  • 确定性 = -20 *距离   

  • 评级 =距离*轮廓长度

  • 字:   

  • 确定性 =最小字符确定性.   

  • 评级 =字符评级的总和.

##我可以使用Tesseract进行手写识别吗?

你可以,但它不会很好,因为Tesseract是专为印刷文字设计的. 请看一下Lipi Toolkit项目.

##我可以使用tesseract进行条形码识别吗?

Tesseract用于文本识别.

##旧版tesseract的问题

(来自问题跟踪器的信息,状态:看这里寻求帮助.)

###如何将Tesseract引擎移植到vb6项目中?

请参阅问题42中的建议.

Delphi包装tessdll.dll

查看Addon Wiki或查看[问题88]中的评论(https://web.archive.org/web/*/http://code.google.com/p/tesseract-ocr /问题/细节?ID = 88).

OCR结果不完整

请参阅问题44中的建议.

###错误LNK2001:未解析的外部符号“public:static char ** cdecl TessBaseAPI :: TesseractRect(unsigned char const **,int,int,int,int,int,int)”(?TesseractRect @TessBaseAPI @@ SAPADPBEHHHHHH @ Z)

如果您使用的是版本2.04和VC ++ 6,则在包含baseapi.h之前添加#define TESSDLL \ _IMPORTS. (见问题297

box在训练时重叠多行中的blob或blob错误

If you get this error try to use pagesegmenation value 5 or 6. E.g.:

tesseract input_image output -psm 6 batch.nochop makebox

Or have a look at other suggestions in issue 471

###训练失败,错误消息“mf.cpp:78:FEATURE \ _SET \ _STRUCT \ * ExtractMicros ...”

在[问题488]中查看有关如何改进输入图像的建议(https://web.archive.org/web/*/http://code.google.com/p/tesseract-ocr/issues/detail?id = 488).

###错误消息:样本0上的字体id = -1/0,类id = 1/105

这意味着字体名称不在font \ __properties中,或者font \ _properties不符合要求

#我的问题不在这里!

尝试搜索论坛:http://groups.google.com/group/tesseract-ocr,因为您的问题可能在之前出现,即使此处未列出.

⚠️ **GitHub.com Fallback** ⚠️