如何将tesseract ocr与为Azure函数构建的无服务器Java应用程序捆绑在一起



我正在将用于从文档和图像中提取文本的Apache Tika(使用TikaOcr(添加到基于AppService的Azure功能中现有的服务中。现在,Apache Tika要求在本地机器中安装tesseract。为了克服这一点,我使用apt-get(通过ssh-ing(在服务器中进行设置,但(据我所知(设置是在基本的AppService层上执行的。因此,调用并发OCR命令确实会减慢我的功能。由于没有Tesseract的官方二进制文件,我想知道以下任何一个是否可能:

  1. 使用我的函数应用程序捆绑Tesseract
  2. 使用Tesseract构建docker图像
  3. 使用tesseract运行时映像构建一个多容器docker应用程序(tesseract shadow/tesseract ocr re(

我曾尝试用下面的dockerfile用tesseract构建docker镜像(按照这里的说明(,但Apache Tika无法用它执行OCR。

ARG JAVA_VERSION=11
# This image additionally contains function core tools – useful when using custom extensions
#FROM mcr.microsoft.com/azure-functions/java:3.0-java$JAVA_VERSION-core-tools AS installer-env
FROM mcr.microsoft.com/azure-functions/java:3.0-java$JAVA_VERSION-build AS installer-env
RUN apt-get update && apt-get install -y tesseract-ocr
COPY . /src/functions-tika-extraction
RUN cd /src/functions-tika-extraction && 
mkdir -p /home/site/wwwroot && 
mvn clean package && 
cd ./target/azure-functions/ && 
cd $(ls -d */|head -n 1) && 
cp -a . /home/site/wwwroot
# This image is ssh enabled
FROM mcr.microsoft.com/azure-functions/java:3.0-java$JAVA_VERSION-appservice
# This image isn't ssh enabled
#FROM mcr.microsoft.com/azure-functions/java:3.0-java$JAVA_VERSION
ENV AzureWebJobsScriptRoot=/home/site/wwwroot 
AzureFunctionsJobHost__Logging__Console__IsEnabled=true
COPY --from=installer-env ["/home/site/wwwroot", "/home/site/wwwroot"]

我是Docker和Azure平台的新手,所以我可能在这里遗漏了一些东西,但我如何使用Docker或任何其他方法让我的Azure函数与Tesseract一起工作?

在阅读了docker文档并了解了docker的一些基础知识后,我终于发现tesseract实际上是安装在Azure AppService层下方的,该层不知何故不允许容器访问它。如果Tesseract安装在最上层,则可以将其包含在Dockerfile的底部,从而使其可用于Azure功能,如下所示:

ARG JAVA_VERSION=11
FROM mcr.microsoft.com/azure-functions/java:3.0-java$JAVA_VERSION-build AS installer-env
# remove this line
# RUN apt-get update && apt-get install -y tesseract-ocr
COPY . /src/functions-tika-extraction
RUN cd /src/functions-tika-extraction && 
mkdir -p /home/site/wwwroot && 
mvn clean package && 
cd ./target/azure-functions/ && 
cd $(ls -d */|head -n 1) && 
cp -a . /home/site/wwwroot
# This image is ssh enabled
FROM mcr.microsoft.com/azure-functions/java:3.0-java$JAVA_VERSION-appservice
# add the line here
RUN apt-get update && apt-get install -y tesseract-ocr
ENV AzureWebJobsScriptRoot=/home/site/wwwroot 
AzureFunctionsJobHost__Logging__Console__IsEnabled=true
COPY --from=installer-env ["/home/site/wwwroot", "/home/site/wwwroot"]

虽然它确实满足了我将tesseract ocr与Azure Functions Java应用程序捆绑在一起的要求,但不幸的是,调用仍然非常缓慢。

最新更新