gpt4 book ai didi

python - 使用 Tesseract 4 - 来自 uwsgi-nginx-flask-docker 的 Docker 容器

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:04 41 4
gpt4 key购买 nike

我让我的 python 项目在本地运行,它可以正常工作。我将来自 python 的 tesseract 与 subprocess 包一起使用。

然后我部署了我的项目,因为我使用 Flask,所以我安装了 tiangolo-uwsgi-flask-nginx-docker但是,那里没有安装 Tesseract。这就是为什么我的项目不再工作,因为它找不到 tesseract。而且它无法识别安装在我的 AWS 实例上的 tesseract,因为 tesseract 未安装在 docker 容器中。

这就是为什么我也想使用 tesseract 4 Docker其中安装了 Tesseract。

我有两个 Dockers:

c82b61361992        tesseractshadow/tesseract4re:latest   "/bin/bash"            6 seconds ago       Up 5 seconds                                      t4re
e122633ef81c my_project:latest "/entrypoint.sh /sta 35 minutes ago Up 35 minutes 0.0.0.0:80->80/tcp, 443/tcp modest_perlman

但我不知道如何告诉 my_project 它必须从 Tesseract Container 中获取 Tesseract。

我读了this post关于连接两个 Docker 容器,但我更加迷茫了。 :)

我看到 Tesseract Docker 应该以这种方式工作:

#!/bin/bash
docker ps -f name=t4re
TASK_TMP_DIR=TASK_$$_$(date +"%N")
echo "====== TASK $TASK_TMP_DIR started ======"
docker exec -it t4re mkdir \-p ./$TASK_TMP_DIR/
docker cp ./ocr-files/phototest.tif t4re:/home/work/$TASK_TMP_DIR/
docker exec -it t4re /bin/bash -c "mkdir -p ./$TASK_TMP_DIR/out/; cd ./$TASK_TMP_DIR/out/; tesseract ../phototest.tif phototest -l eng --psm 1 --oem 2 txt pdf hocr"
mkdir -p ./ocr-files/output/$TASK_TMP_DIR/
docker cp t4re:/home/work/$TASK_TMP_DIR/out/ ./ocr-files/output/$TASK_TMP_DIR/
docker exec -it t4re rm \-r ./$TASK_TMP_DIR/
docker exec -it t4re ls
echo "====== Result files was copied to ./ocr-files/output/$TASK_TMP_DIR/ ======"

但我不知道如何在我的 python 脚本和其他容器中实现它。

我的 python-tesseract 脚本看起来与 pytesseract.py 非常相似我只是更改了几行并删除了一些我不需要的东西。

也许有人知道如何做到这一点,或者可以提出另一种更好的方法来将 tesseract 与 tiangolo-docker

一起使用

最佳答案

编辑(见下面的编辑)

我找到了答案。因为它适用于每两个 docker 容器,所以我将编写一个可以始终使用的通用解决方案。

我在同一个实例中同时拥有 docker 镜像和容器:

CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                    NAMES
14524d364cff (image) "java -jar ..." 40 hours ago Up 40 hours 0.0.0.0:5000->5000/tcp api-1
3392994ae3ac (image) "java -jar ..." 40 hours ago Up 40 hours 0.0.0.0:5002->5002/tcp api-2

到这里为止很简单。

然后,我写了一个docker-compose.yml

version: '2'
services:
api-1:
image: _name-of-image_
container_name: api-1
ports:
- "5000:5000"
depends_on:
- api-2

api-2:
image: _name-of-image_
container_name: api-2
ports:
- "5002:5002"

然后,在 api-1 的 docker 文件中,例如。

...
ENV API-2HOST api-2
...

就是这样。

在我的特殊情况下,我有一个 api-1.conf:

accounts = {
http = {
host = "localhost"
host = ${?API-2HOST}
port = 5002
poolBufferSize = 100
routes = {
authentication = "/authentication"
login = "/login/"
logout = "/logout"
refreshTokens = "/refreshTokens"
}
}
}

然后我可以轻松地在那里发出请求,所以两个 docker 容器都可以通信。

希望对大家有所帮助。

编辑

由于它可能很复杂,我创建了一个只有一个 dockerfile 的 git 项目,您可以在其中使用 flask、nginx、uwsgi 和 tesseract。所以没有必要同时使用这两个容器。

docker-flask-nginx-uwsgi-tesseract

关于python - 使用 Tesseract 4 - 来自 uwsgi-nginx-flask-docker 的 Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48520750/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com