Tesseract运行错误

时间:2013-02-10 17:53:15

标签: ocr tesseract

我在linux上运行tesseract-ocr引擎时遇到问题。我已经下载了RUS语言数据并将其放到tessdata目录(/ usr / local / share / tessdata)。当我尝试使用命令tesseract blob.jpg out -l rus运行tesseract时,它会显示错误:

Error opening data file /usr/local/share/tessdata/eng.traineddata

Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.

Failed loading language eng
Tesseract couldn't load any languages!

Could not initialize tesseract.

根据compiling guide,我使用export TESSDATA_PREFIX='/usr/local/share/' 指向我的tessdata目录。 也许我应该编辑任何配置文件? Tesseract尝试加载'eng'数据文件而不是'rus'。

截图: http://i.stack.imgur.com/I0Guc.png

17 个答案:

答案 0 :(得分:61)

您可以从Google抓取eng.traineddata(已压缩):

wget https://tesseract-ocr.googlecode.com/files/eng.traineddata.gz

或Github(原始):

wget https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata

检查https://github.com/tesseract-ocr/tessdata以获取经过培训的语言数据的完整列表。

抓取文件后,将其移至/usr/local/share/tessdata文件夹。警告:某些Linux发行版(例如openSUSE和Ubuntu)可能会在/usr/share/tessdata中期待它。

# If you got the data from Google, unzip it first!
gunzip eng.traineddata.gz 
# Move the data
sudo mv -v eng.traineddata /usr/local/share/tessdata/

答案 1 :(得分:33)

最简单的方法是安装所需的软件包:

sudo apt-get install tesseract-ocr-eng  #for english
sudo apt-get install tesseract-ocr-tam  #for tamil
sudo apt-get install tesseract-ocr-deu  #for deutsch (German)

正如您所注意到的,它打开了通往其他语言的道路(即tesseract-ocr-fra)。

答案 2 :(得分:17)

我在Windows机器上也遇到了这个错误。

我的解决方案。

1)从中下载语言文件 https://github.com/tesseract-ocr/tessdata/tree/3.04.00

例如,对于eng,我下载了所有带有eng前缀的文件。

2)将它们放入某个文件夹内的 tessdata 目录中。将此文件夹添加到系统路径变量中 TESSDATA_PREFIX

结果将是 系统env var:TESSDATA_PREFIX = D:/ Java / OCR OCR文件夹的 tessdata 包含语言文件。

这是目录的屏幕截图:

enter image description here

答案 3 :(得分:4)

之前没有解决方案适合我。

我已经安装了apt-get并手动下载了tessdata,移动了/usr等等,即使我导出变量千次,也没有人工作。

最后,在开始哭之前的最后一次尝试中,我试图将路径直接传递给Tesseract()的实例。

在Python中:tr = Tesseract("/usr/local/share/tesseract-ocr/")现在可行了。为了澄清,我正在使用tesserwrap模块。

答案 4 :(得分:2)

您可以从C代码中调用tesseract API函数:

#include <tesseract/baseapi.h>
#include <tesseract/ocrclass.h>; // ETEXT_DESC

using namespace tesseract;

class TessAPI : public TessBaseAPI {
    public:
    void PrintRects(int len);
};

...
TessAPI *api = new TessAPI();
int res = api->Init(NULL, "rus");
api->SetAccuracyVSpeed(AVS_MOST_ACCURATE);
api->SetImage(data, w0, h0, bpp, stride);
api->SetRectangle(x0,y0,w0,h0);

char *text;
ETEXT_DESC monitor;
api->RecognizeForChopTest(&monitor);
text = api->GetUTF8Text();
printf("text: %s\n", text);
printf("m.count: %s\n", monitor.count);
printf("m.progress: %s\n", monitor.progress);

api->RecognizeForChopTest(&monitor);
text = api->GetUTF8Text();
printf("text: %s\n", text);
...
api->End();

构建此代码:

g++ -g -I. -I/usr/local/include -o _test test.cpp -ltesseract_api -lfreeimageplus

(我需要FreeImage来加载图片)

答案 5 :(得分:1)

我正在使用Visual Studio 2017社区版。
我通过在项目的Debug目录中创建一个名为 tessdata 的目录来解决这个问题。然后我将 eng.traineddata 文件放入所述目录。

答案 6 :(得分:1)

在Windows上工作的C#开发人员。对我有用的是,只需从以下URL下载文件 eng.traineddata

https://github.com/tesseract-ocr/tessdata/blob/master/eng.traineddata

并将其复制到我的控制台应用程序项目中的以下目录:

[项目目录] \ bin \ Debug \ tessdata

我确实手动创建了上面的 tessdata 文件夹。

答案 7 :(得分:0)

对我来说,问题在于我如何下载火车数据文件。确保您获得原始链接。

最初我使用的是:

wget https://github.com/tesseract-ocr/tessdata_best/blob/master/eng.traineddata

当我把它改成:

wget https://github.com/tesseract-ocr/tessdata_best/raw/master/eng.traineddata

成功了

答案 8 :(得分:0)

截至 2021 年,我对 Ubuntu 的解决方案是从 https://github.com/tesseract-ocr/tessdata_best/releases/tag/4.1.0 下载 zip 文件,将必要的 .traineddata 文件提取并复制到 /usr/local/share/tessdata 中。这是tesseract 4.1.1 搜索训练数据的默认文件夹。

答案 9 :(得分:0)

对于 Ubuntu,只需运行以下命令,环境变量错误就会消失。

命令:

export TESSDATA_PREFIX=Path_of_your_tessdata_folder

命令示例:

export TESSDATA_PREFIX=/home/amar/Desktop/OCR/tesseract-4.1.1/tessdata

此命令会将 tessdata 文件夹的路径设置为名为 TESSDATA_PREFIX 的环境变量,并解决上述错误。

答案 10 :(得分:0)

我是如何在 Manjaro Xfce 中解决这个问题的:

消息“TesseractError: (1, 'Error opening data file /home/julio/snap/tesseract/common/eng.traineddata 请确保将 TESSDATA_PREFIX 环境变量设置为您的“tessdata”目录。加载语言失败'eng ' Tesseract 无法加载任何语言!无法初始化 tesseract。')”

然后,在我的 Manjaro 中,我输入:sudo pacman -S tesseract 然后系统安装了“tesseract”和包名“leptonica”

在这一步之后,我认为一切正常,并尝试运行我的简单脚本。然而,错误信息变成了这样的东西(它将之前的“/home”位置更改为其他类似“/usr”的位置): ““请确保将 TESSDATA_PREFIX 环境变量设置为您的“tessdata”目录。加载语言失败 'eng' Tesseract 无法加载任何语言!无法初始化 tesseract。')”

然后我意识到当我用 pacman 安装“tesseract”时出现了这样的消息:“你必须安装一个 tesseract-data-* 包或整个 tesseract-data 组”

所以,我尝试了命令:“sudo pacman -S tesseract-data”,系统向我提供了很多语言选项。所以我选择了一些语言,安装如下,模块开始工作起来很迷人:

sudo pacman -S tesseract-data-eng

sudo pacman -S tesseract-data-por

sudo pacman -S tesseract-data-fra

sudo pacman -S tesseract-data-spa

我尝试了一些葡萄牙语特殊字符(如“ão”),只有当我在 pytesseract.image_to_string(img,lang='por') 中使用参数“lang='por'”时才有效

答案 11 :(得分:0)

将此添加到您的代码中:

instance.setDatapath("C:\\somepath\\tessdata");

instance.setLanguage("eng");

答案 12 :(得分:0)

tessdata_dir_config = r'--tessdata-dir "/usr/local/Cellar/tesseract/4.1.1/share/tessdata"'
pytesseract.image_to_string(imgCrop,lang='eng',config=tessdata_dir_config)

答案 13 :(得分:0)

对于Windows用户:

在“环境变量”中,在名称为“ TESSDATA_PREFIX”的系统变量中添加一个新变量,其值为“ C:\ Program Files(x86)\ Tesseract-OCR \ tessdata”

答案 14 :(得分:0)

我使用的是Windows操作系统,我尝试了上面所有的解决方案,但没有一个起作用。

最后,我将Tesseract-OCR安装在D驱动器(运行python脚本的位置)而不是C驱动器上。

因此,如果您使用的是Windows,请在与Tesseract-OCR相同的驱动器中运行python脚本。

答案 15 :(得分:0)

tesseract  --tessdata-dir <tessdata-folder> <image-path> stdout --oem 2 -l <lng>

就我而言,我所犯的错误或尝试并没有成功。

  • 我克隆了github存储库并将文件从那里复制到
    • / usr / local / share / tessdata /
    • / usr / share / tesseract-ocr / tessdata /
    • / usr / share / tessdata /
  • TESSDATA_PREFIX与上述路径一起使用
  • sudo apt-get install tesseract-ocr-eng

前两次尝试均无效,因为git clone中的文件由于我不知道的原因而无效。我不确定为什么#3尝试对我有用。

最后,

  1. 我使用wget下载了eng.traindata文件
  2. 将其复制到某个文件夹
  3. --tessdata-dir与文件夹名称一起使用

对我而言,要实用的是很好地学习和使用该工具,而不是依靠软件包管理器的安装和文件夹

答案 16 :(得分:-1)

C:\ Users \ pankaj.neupaney \ AppData \ Local \ Continuum \ anaconda3 \ envs \ ocrtextrecog \ Lib \ site-packages \ tesserocr

在此处添加您的tesssdata