106

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

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.

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

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

4

18 回答 18

109

你可以抓取eng.traineddataGithub:

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/
于 2014-04-02T04:58:28.490 回答
76

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

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)。

于 2016-03-30T12:49:12.617 回答
38

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

我的解决方案。

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

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

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

结果将是 System env var: TESSDATA_PREFIX=D:/Java/OCR 并且 OCR 文件夹包含带有语言文件的tessdata 。

这是目录的截图:

在此处输入图像描述

于 2017-09-10T20:15:29.170 回答
4
tesseract  --tessdata-dir <tessdata-folder> <image-path> stdout --oem 2 -l <lng>

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

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

前 2 次尝试没有奏效,因为来自git clone我不知道的原因的文件没有奏效。我不确定为什么#3 尝试对我有用。

最后,

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

对我来说,要好好学习并利用它,而不是依赖包管理器安装和目录

于 2018-11-28T09:56:47.860 回答
4

以前没有解决方案对我有用。

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

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

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

于 2016-08-08T05:21:59.047 回答
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 来加载图片)

于 2013-02-13T12:32:47.220 回答
2

对于 Windows 用户:

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

于 2020-03-26T05:13:33.337 回答
2

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

最初我使用的是:

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

当我将其更改为:

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

有效

于 2021-07-29T15:18:44.513 回答
2

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

命令:

export TESSDATA_PREFIX=Path_of_your_tessdata_folder

命令示例:

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

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

于 2021-04-06T08:32:48.060 回答
2

我正在使用 Windows 操作系统,我尝试了上述所有解决方案,但都没有工作。

最后,我将 Tesseract-OCR 安装在 D 驱动器(我从其中运行我的 python 脚本)而不是 C 驱动器上,并且它可以工作。

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

于 2019-04-18T22:04:12.493 回答
1

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

于 2017-12-27T20:03:34.017 回答
1

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

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

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

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

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

于 2020-05-08T13:49:56.490 回答
0

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

于 2021-05-18T08:03:51.037 回答
0

将此添加到您的代码中:

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

instance.setLanguage("eng");
于 2021-01-17T20:56:48.623 回答
0

**如果您有 Windows 操作系统,请将您的 TesseractOCR 添加到系统变量中。例如..

  1. 在您的 C 驱动器中找到 Tesseract 的安装路径(在我的情况下为 r"C:\Program Files\Tesseract-OCR\tesseract.exe")** 2)确保您拥有所需的文件,即 tessdata,如果没有则为 tessdata从https://github.com/tesseract-ocr/tessdata https://github.com/tesseract-ocr/langdata下载它 (至少那些你想要转换的语言)
  2. 在我的情况下,将它传递到主目录 C:\Program Files\Tesseract-OCR 4) 将目录的路径添加到系统环境变量中,以便
    在开始栏中的搜索环境变量转到环境变量单击系统环境变量中的路径(不在用户环境变量中)经过 tesseractocr 的路径

就这样...

于 2022-01-04T11:02:40.473 回答
0

我在 macOS 上对 DEU 语言有同样的问题。我可以通过安装所有其他语言来解决它,如下所示:

brew install tesseract-lang

正如https://formulae.brew.sh/formula/tesseract上的建议

于 2021-09-11T22:38:01.980 回答
0

我如何在 Manjaro Xfce 中解决问题:

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

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

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

然后我意识到当我用 pacman 安装“tesseract”时出现了这个消息:“You must install one of tesseract-data-* packages or whole tesseract-data group”</p>

于是,我尝试了命令:“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'”时才有效

于 2021-03-19T21:25:54.127 回答
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)
于 2020-10-20T21:38:09.143 回答