【问题标题】:Tesseract running error正方体运行错误
【发布时间】:2013-01-25 21:08:51
【问题描述】:

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

【问题讨论】:

    标签: ocr tesseract


    【解决方案1】:

    你可以抢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/
    

    【讨论】:

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

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

    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)的道路。

    【讨论】:

    • 这应该是公认的答案。手动修改包管理器后面的文件(假设您首先使用一个来安装 tesseract)是一个坏主意
    • 对于使用 MacPort 的 Mac 用户:sudo port install tesseract-eng​​span>
    • 您可以使用tesseract --list-langs 查看所有可用的语言。你也可以使用sudo apt-get install tesseract-ocr-*来安装它们
    • 对于arch,包被称为tesseract-data-eng
    • 不幸的是,这个答案在 Docker 容器中不起作用,尽管它在它之外工作。
    【解决方案3】:

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

    我的解决方案。

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

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

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

    结果将是 系统环境变量:TESSDATA_PREFIX=D:/Java/OCR OCR 文件夹有 tessdata 和语言文件。

    这是目录截图:

    【讨论】:

    • 是的,每个人都在谈论 linux。请大家不要忘记市场上还有一种更流行的操作系统。
    【解决方案4】:

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

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

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

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

    【讨论】:

    • 我感觉到你了!我现在就在那里。不同的是,更糟糕的是,我试图让它从命令行运行。
    【解决方案5】:
    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​​li>

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

    最后,

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

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

    【讨论】:

      【解决方案6】:

      您可以从 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 来加载图片)

      【讨论】:

      • @DarkSkull,是的,这是在 Debian GNU/Linux 中测试的 C++ 代码。如您所见,Russel Crowe 的函数 TessAPI::Init(NULL, "rus") 存在问题。检查 Tesseract 源代码(TessAPI 类方法)是有意义的。
      【解决方案7】:

      我使用的是 Windows 操作系统,我尝试了上述所有解决方案,但都没有奏效。

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

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

      【讨论】:

        【解决方案8】:

        对于 Windows 用户:

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

        【讨论】:

          【解决方案9】:

          对于 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】:

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

            最初我使用的是:

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

            当我把它改成:

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

            成功了

            【讨论】:

            • 那行不通。您需要在您的网址中将master 更改为main
            【解决方案11】:

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

            【讨论】:

              【解决方案12】:

              在此处使用 Windows 的 C# 开发人员。对我有用的只是从以下 URL 下载文件 eng.traineddata

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

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

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

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

              【讨论】:

                【解决方案13】:
                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)
                

                【讨论】:

                • 这不是答案。请解释这里发生了什么,以便其他人在阅读您的回复时获得有用的见解。
                【解决方案14】:

                将此添加到您的代码中:

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

                【讨论】:

                  【解决方案15】:

                  我是如何在 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”时出现了这个消息:“You must install one of tesseract-data-* packages or whole tesseract-data group”

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

                  sudo pacman -S tesseract-data-eng​​p>

                  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'”时才有效

                  【讨论】:

                    【解决方案16】:

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

                    【讨论】:

                    • @innovationism 默认情况下,文件在 Ubuntu 20.04 上的 /usr/share/tesseract-ocr/4.00/tessdata/ 此处存在。正方体是 4.1.1 版。并在此处放置 tessdata_best 文件时,tesseract 会引发错误。如果您遇到此问题,您是如何解决的?
                    【解决方案17】:

                    我在 macOS 上使用 DEU 语言时遇到了同样的问题。我可以通过安装所有其他语言来解决它:

                    brew install tesseract-lang
                    

                    https://formulae.brew.sh/formula/tesseract建议的那样

                    【讨论】:

                      【解决方案18】:

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

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

                      就是这样……

                      【讨论】:

                        【解决方案19】:

                        在 Google Colab 中,我以这种方式解决了这个问题:

                        !sudo apt-get install tesseract-ocr-*
                        

                        因为如果您使用此命令!sudo apt install tesseract-ocr,那么它会导入 2 种语言,但是当您打算使用非英语语言时,前一个命令可以工作。 之后,使用这个命令!pip install pytesseract 也可以通过这种方式查看语言!tesseract --list-langs

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2017-02-06
                          相关资源
                          最近更新 更多