在 pythonanywhere 中为非英语语言使用 pytesseract ocr

Using pytesseract ocr in pythonanywhere for non english languages

我正在 python 任何地方创建一个网站 OCR.In 此用户可以上传文本图像并以可编辑格式下载。对于英语,它工作得很好,但是当我尝试包含一些其他语言(南印度语)时,它显示了一些错误消息。

我将额外的训练数据放在文件夹“/home/wiltomalayalamocr/mysite/langfiles”中,它包含“mal.traineddata”文件

在我的代码中

        pytesseract.pytesseract.tesseract_cmd = r"/usr/bin/tesseract"
        custom_oem_psm_config = '-l {} --psm {} --tessdata-dir "/home/wiltomalayalamocr/mysite/langfiles"'.format(lang,6)
        text = pytesseract.image_to_string(Image.open(filename) , config=custom_oem_psm_config)

其中 lang="mal" 但我收到错误

pytesseract.pytesseract.TesseractError: (1, 'Tesseract Open Source OCR Engine v3.04.01 with Leptonica Error opening data file /usr/share/tesseract-ocr/tessdata/mal.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory. Failed loading language \'mal\' Tesseract couldn\'t load any languages! Could not initialize tesseract.')

我正在使用 python-Flask 框架

任何人都可以帮助我....

经过 2 天的搜索和尝试,我找到了解决方案

像下面这样在 bash 控制台中设置环境变量是不够的

$export TESSDATA_PREFIX = /home/wiltomalayalamocr/mysite/langfiles

它不会对我们的应用程序产生影响,所以我们需要做的是在加载应用程序时设置环境变量。所以我所做的与下面的相同 link 告诉

https://help.pythonanywhere.com/pages/environment-variables-for-web-apps/

我的项目目录是/home/wiltomalayalamocr/mysite 我的 .env 文件包含 export TESSDATA_PREFIX=/home/wiltomalayalamocr/mysite/langfiles
在 WSGI 配置文件中,我添加了以下代码行

import os
from dotenv import load_dotenv
project_folder = os.path.expanduser('/home/wiltomalayalamocr/mysite')  # adjust as appropriate
load_dotenv(os.path.join(project_folder, '.env'))