1

我想将 OCR 功能添加到我在 Heroku 上运行的 Django 应用程序中。我怀疑最简单的方法是使用Tesseract。我注意到 Tesseract 的 API 有许多 python 包装器,但是在 Heroku 上安装和运行 Tesseract 的最佳方法是什么?也许通过像heroku-buildpack-tesseract这样的自定义构建包?

4

2 回答 2

1

我将尝试记录一些关于我到达这里的解决方案的笔记。

我的.buildpacks文件:

https://github.com/heroku/heroku-buildpack-python
https://github.com/clearideas/heroku-buildpack-ghostscript
https://github.com/marcolinux/heroku-buildpack-libraries

我的.buildpacks_bin_download文件:

tesseract-ocr https://s3.amazonaws.com/tesseract-ocr/heroku/tesseract-ocr-3.02.02.tar.gz 3.02 eng,spa

这是对pdf文件进行OCRing的关键python:

        # Additional processing
        document_path = Path(str(document.attachment_file))

        if document_path.ext == '.pdf':
            working_path = Path('temp', document.directory)
            working_path.mkdir(parents=True)

            input_path = Path(working_path, name)
            input_path.write_file(document.attachment_file.read(), 'w')

            rb = ReadBot()

            args = [
                'VBEZ',
                # '-sDEVICE=tiffg4',
                '-sDEVICE=pnggray',
                '-dNOPAUSE',
                '-r600x600',
                '-sOutputFile=' + str(working_path) + '/page-%00d.png',
                str(input_path)
            ]

            ghostscript.Ghostscript(*args)
            image_paths = working_path.listdir(pattern='*.png')
            txt = ''

            for image_path in image_paths:
                ocrtext = rb.interpret(str(image_path))
                txt = txt + ocrtext

            document.notes = txt
            document.save()
            working_path.rmtree()
于 2013-11-17T23:10:38.190 回答
0

Heroku、Django 和 tesseract

该文档将引导您在 Heroku 上设置 tesseract(我使用的是 django)

脚步

1) 使用以下命令添加 heroku-apt-buildpack:

这是稳定版。查看源存储库

$ heroku buildpacks:add --index 1 heroku-community/apt
2)将Aptfile添加到项目目录

`

$ touch Aptfile
3) 将以下内容添加到 Aptfile

tesseract-ocr-eng 是 tesseract 的英文文件。

tesseract-ocr
tesseract-ocr-eng
4) 获取tesseract-ocr-eng包下载的数据的路径

我们将使用此路径进行下一步

$ heroku run bash
$ find -iname tessdata # this will give us the path we need

您现在可以退出 heroku shellexit

5) 现在将一个名为 TESSDATA_PREFIX 的 heroku 配置变量设置为路径

find -iname tessdata将名为 TESSDATA_PREFIX 的 heroku 配置变量设置为从上面的 cmnd返回的路径

$ heroku config:set TESSDATA_PREFIX=./.apt/usr/share/tesseract-ocr/4.00/tessdata

现在设置 heroku 将一个名为 TESSDATA_PREFIX 的 heroku 配置变量设置为从 find -iname tessdata 返回的路径

6)将更改推送到heroku

将名为 TESSDATA_PREFIX 的 heroku 配置变量设置为从上面的 find -iname tessdata cmnd 返回的路径

$ git push heroku master

我希望这有帮助。请让我知道这对你有没有用。

于 2019-07-26T22:29:34.707 回答