我在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'。
答案 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 包含语言文件。
这是目录的屏幕截图:
答案 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-engp>
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>
就我而言,我所犯的错误或尝试并没有成功。
TESSDATA_PREFIX
与上述路径一起使用前两次尝试均无效,因为git clone
中的文件由于我不知道的原因而无效。我不确定为什么#3尝试对我有用。
最后,
wget
下载了eng.traindata文件--tessdata-dir
与文件夹名称一起使用对我而言,要实用的是很好地学习和使用该工具,而不是依靠软件包管理器的安装和文件夹
答案 16 :(得分:-1)
C:\ Users \ pankaj.neupaney \ AppData \ Local \ Continuum \ anaconda3 \ envs \ ocrtextrecog \ Lib \ site-packages \ tesserocr
在此处添加您的tesssdata