Tesseract运行错误

Rus*_*owe 65 ocr tesseract

我在linux上运行tesseract-ocr引擎时遇到问题.我已经下载了RUS语言数据并将其放到tessdata目录(/ usr/local/share/tessdata).当我尝试使用命令运行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.
Run Code Online (Sandbox Code Playgroud)

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

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

AAA*_*lub 70

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

wget https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata
Run Code Online (Sandbox Code Playgroud)

或Github(原始):

# 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/
Run Code Online (Sandbox Code Playgroud)

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

当您抓取文件时,将它们移动到该/usr/local/share/tessdata文件夹.警告:一些Linux发行版(例如openSUSE和Ubuntu)可能会期待它/usr/share/tessdata.

wget https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata
Run Code Online (Sandbox Code Playgroud)

  • 编辑:出于某种原因,除非 eng.traineddate 存在,否则 tesseract 不会运行 - 即使不需要它。所以AAAfarmclub的回答没问题。 (3认同)
  • 警告:其他linux安装(ubuntu生动)在不同的目录中工作:/ usr/share/tesseract-ocr/tessdata (3认同)
  • Arch Linux:/usr/share/tessdata/ *.traineddata 可以通过 pacman 方式安装。我只是还没有找到路径,但现在已经可以了。 (3认同)
  • 如果我错了,请纠正我..但不是关于包含新语言(rus)而不是提供(错误的)错误消息指向的语言的问题? (2认同)
  • 在Ubuntu-Gnome 16.04:它是`/ usr/share/tesseract-ocr/tessdata /` (2认同)

Mih*_*Zam 41

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

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)
Run Code Online (Sandbox Code Playgroud)

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

  • 这应该是公认的答案。手动修改包管理器后面的文件(假设您首先使用一个来安装 tesseract)是一个坏主意 (3认同)
  • 您可以使用tesseract --list-langs查看所有可用语言。您也可以使用sudo apt-get install tesseract-ocr- *安装它们 (3认同)
  • 对于使用MacPort的Mac用户:sudo port install tesseract-eng (2认同)
  • 对于 arch,这些包被称为“tesseract-data-eng”等。 (2认同)

Yan*_*ski 20

我在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.

这是目录的屏幕截图:

在此输入图像描述

  • 是的,每个人都在谈论Linux。拜托,别忘了市场上还有一种更流行的操作系统。 (2认同)

J.H*_*tas 7

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

最初我使用的是:

wget https://github.com/tesseract-ocr/tessdata_best/blob/master/eng.traineddata
Run Code Online (Sandbox Code Playgroud)

当我将其更改为:

wget https://github.com/tesseract-ocr/tessdata_best/raw/master/eng.traineddata
Run Code Online (Sandbox Code Playgroud)

有效


m3n*_*nda 5

以前的解决方案对我来说不起作用。

我已经通过apt-get手动下载 tessdata 进行安装,四处移动/usr等等,即使我导出变量数千次,也没有人工作。

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

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


exp*_*rer 5

tesseract  --tessdata-dir <tessdata-folder> <image-path> stdout --oem 2 -l <lng>
Run Code Online (Sandbox Code Playgroud)

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

  • 我克隆了 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. 我使用下载了 eng.traindata 文件wget
  2. 复制到某个目录
  3. --tessdata-dir与目录名一起使用

对我来说,重要的是充分学习该工具并使用它,而不是依赖包管理器安装和目录


Ama*_*mar 5

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

命令:

export TESSDATA_PREFIX=Path_of_your_tessdata_folder
Run Code Online (Sandbox Code Playgroud)

命令示例:

export TESSDATA_PREFIX=/home/amar/Desktop/OCR/tesseract-4.1.1/tessdata
Run Code Online (Sandbox Code Playgroud)

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


Ale*_*gin 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();
Run Code Online (Sandbox Code Playgroud)

并构建此代码:

g++ -g -I. -I/usr/local/include -o _test test.cpp -ltesseract_api -lfreeimageplus
Run Code Online (Sandbox Code Playgroud)

(我需要 FreeImage 来加载图片)