提问人:elshev 提问时间:11/17/2023 最后编辑:marc_selshev 更新时间:11/17/2023 访问量:41
如何在 Microsoft ASP.NET Core 5.2 Linux Docker 容器中运行 .NET Tesseract 6?
How to run .NET Tesseract 5.2 in Microsoft ASP.NET Core 6 Linux Docker container?
问:
我的目标是在 Microsoft ASP.NET Core 6 Docker 容器中运行 .NET Tesseract 5.2:。mcr.microsoft.com/dotnet/aspnet:6.0
但是我在尝试初始化 Tesseract 引擎时出现错误:
找不到平台 x64 的库“libleptonica-1.82.0.so”
GitHub(Ex.1、Ex.2)或 Stackoverflow 中有许多线程,但它们存在一些问题:
- 问题(和答案)是关于 Tesseract 4.x 的
- 要采取一些额外的耗时步骤:编译 leptonica 和 tesseract。安装依赖项。
apt-get install libleptonica-dev libtesseract-dev
导致在mcr.microsoft.com/dotnet/aspnet:6.0
- 即使我编译或部署文件,也会发生另一个错误
.so
liblibdl: cannot open shared object file: No such file or directory
问题:有没有更简单的方法可以在 Microsoft ASP.NET Core 6 Linux Docker 容器中运行 Tesseract 5?
答:
2赞
elshev
11/17/2023
#1
我找到了一个需要权衡的解决方案。docker 文件的重要部分是下一个:
FROM mcr.microsoft.com/dotnet/aspnet:6.0-bookworm-slim AS base
WORKDIR /app
RUN apt-get update \
&& apt-get install -y --allow-unauthenticated \
libleptonica-dev \
libtesseract-dev \
&& rm -rf /var/lib/apt/lists/*
RUN ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2 /usr/lib/x86_64-linux-gnu/libdl.so
WORKDIR /app/x64
RUN ln -s /usr/lib/x86_64-linux-gnu/liblept.so.5 /app/x64/libleptonica-1.82.0.so
RUN ln -s /usr/lib/x86_64-linux-gnu/libtesseract.so.5 /app/x64/libtesseract50.so
WORKDIR /app
EXPOSE 80
# Other lines are not important and can be the same as those generated by Visual Studio.
...
关键时刻:
- 基本映像是 - 它包含比默认映像更新的 Debian 版本。如果这是您的问题,那么唯一的方法是编译您的 Linux 版本。
mcr.microsoft.com/dotnet/aspnet:6.0-bookworm-slim
aspnet:6.0
leptonica
tesseract
- 软链接解决了 Tesseract.NET 尝试导入库但找不到它时的问题。这是可能的,因为 Tesseract.NET 只使用了 4 个函数,这些函数也存在于 中。
ln -s /usr/lib/x86_64-linux-gnu/libdl.so.2 /usr/lib/x86_64-linux-gnu/libdl.so
libdl
libdl
libdl.so.2
- 在编译过程中,容器中的整个文件夹将替换为新编译的文件夹。因此,为创建并将删除的两个软链接。最好将这两行放在 Dockerfile 的末尾附近。但是,在调试模式下运行时,这将不起作用。由于 Visual Studio 速度优化,在调试中仅执行 Dockerfile 的第一部分。解决方法是,在第一次运行后(您应该会收到异常),在容器中手动运行这两行。它将在文件夹中创建两个文件。然后,每次运行后都会复制这 2 个链接文件。
/app
/app/x64/libleptonica-1.82.0.so
/app/x64/libtesseract50.so
ln -s ...
ln -s ...
LNK
[YourProject]/x64
- 作为一种选择,您可以在容器内使用命令行工具,而不是 。它将图像大小增加大约 20Mb。
apt-get install -y libleptonica-dev libtesseract-dev
apt-get install -y tesseract-ocr
评论