FROM ubuntu:18.04 ENV LC_ALL=C.UTF-8 LANG=C.UTF-8 ENV PIP_DEFAULT_TIMEOUT=120 ENV OCRD_OLENA_VERSION 1.2.0 ENV TESSDATA_BEST_VERSION 4.0.0 ENV TESSDATA_PREFIX /usr/local/share/tessdata RUN echo "APT::Acquire::Retries \"3\";" > /etc/apt/apt.conf.d/80-retries && \ apt-get update && \ apt-get install -y \ curl xz-utils \ python3-pip \ git \ software-properties-common \ # For clstm on Ubuntu 19.04: swig libeigen3-dev libpng-dev libprotobuf-dev \ # For cv2: libsm6 libxrender1 \ # For ocrd_olena: imagemagick \ # XML utils libxml2-utils \ xmlstarlet \ && \ apt-get clean && rm -rf /var/lib/apt/lists/* # Install Leptonica and Tesseract. RUN add-apt-repository ppa:alex-p/tesseract-ocr && \ apt-get update && \ apt-get install -y \ tesseract-ocr \ libtesseract-dev \ && \ apt-get clean && rm -rf /var/lib/apt/lists/* # Set up OCR-D logging COPY ocrd_logging.py /etc/ # Build ocrd_olena # XXX .deb needs an update RUN curl -sSL --retry 3 -O https://qurator-data.de/~mike.gerber/olena_2.1-0+ocrd-git/olena-bin_2.1-0+ocrd-git_amd64.deb && \ dpkg -i --force-depends olena-bin_2.1-0+ocrd-git_amd64.deb && \ rm -f olena-bin_2.1-0+ocrd-git_amd64.deb && \ apt-get update && \ apt-get -f install -y && \ apt-get clean && rm -rf /var/lib/apt/lists/* RUN pip3 install --no-cache-dir --upgrade pip && \ curl -sSL --retry 3 -o ocrd_olena.tar.gz https://github.com/OCR-D/ocrd_olena/archive/v${OCRD_OLENA_VERSION}.tar.gz && \ mkdir ocrd_olena && \ tar xvz -C ocrd_olena --strip-components=1 -f ocrd_olena.tar.gz && \ cd ocrd_olena && \ sed -i 's/^install: deps$/install:/' Makefile && \ pip3 install --no-cache-dir --use-feature=2020-resolver ocrd && \ make install PREFIX=/usr/local && \ cd .. && rm -rf ocrd_olena ocrd_olena.tar.gz # Copy OCR models RUN mkdir -p /var/lib/calamari-models COPY data/calamari-models/GT4HistOCR /var/lib/calamari-models/GT4HistOCR RUN mkdir -p $TESSDATA_PREFIX ADD data/mirror/github.com/tesseract-ocr/tessdata_best/archive/${TESSDATA_BEST_VERSION}-repacked.tar.gz $TESSDATA_PREFIX/ COPY data/tesseract-models/GT4HistOCR/GT4HistOCR_2000000.traineddata $TESSDATA_PREFIX/ COPY data/textline_detection /var/lib/textline_detection # Install requirements # Using pipdeptree here to get more info than from pip3 check COPY requirements.txt /tmp/ RUN pip3 install --no-cache-dir --upgrade pip && \ pip3 install --no-cache-dir --use-feature=2020-resolver -r /tmp/requirements.txt && \ pip3 install --no-cache-dir pipdeptree && \ pipdeptree -w fail COPY my_ocrd_workflow /usr/bin/ COPY xsd/* /usr/share/xml/ WORKDIR /data ENTRYPOINT ["/usr/bin/my_ocrd_workflow"]