mirror of
https://github.com/qurator-spk/sbb_binarization.git
synced 2025-06-08 11:50:03 +02:00
Merge pull request #70 from bertsky/add-docker
add Docker and GHA CD via Dockerhub
This commit is contained in:
commit
5385162726
9 changed files with 154 additions and 42 deletions
|
@ -19,6 +19,7 @@ jobs:
|
||||||
paths:
|
paths:
|
||||||
ocrd-resources
|
ocrd-resources
|
||||||
- run: make test
|
- run: make test
|
||||||
|
resource_class: large
|
||||||
|
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
|
@ -27,5 +28,5 @@ workflows:
|
||||||
- build-python:
|
- build-python:
|
||||||
matrix:
|
matrix:
|
||||||
parameters:
|
parameters:
|
||||||
python-version: ['3.7', '3.8', '3.9', '3.10']
|
python-version: ['3.8', '3.9', '3.10', '3.11']
|
||||||
|
|
||||||
|
|
47
.github/workflows/docker-image.yml
vendored
Normal file
47
.github/workflows/docker-image.yml
vendored
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
name: Docker Image CD
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master" ]
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
docker-tagname:
|
||||||
|
description: Tag name of the Docker image
|
||||||
|
default: 'ocrd/sbb_binarization'
|
||||||
|
|
||||||
|
env:
|
||||||
|
DOCKER_TAGNAME: ${{ github.evenv.inputs.docker-tagname || 'ocrd/sbb_binarization' }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
packages: write
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- # Activate cache export feature to reduce build time of image
|
||||||
|
name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
- name: Build the Docker image
|
||||||
|
run: make docker DOCKER_TAG=${{ env.DOCKER_TAGNAME }}
|
||||||
|
- name: Login to Dockerhub
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_PASSWORD }}
|
||||||
|
- name: Push image to Dockerhub
|
||||||
|
run: docker push ${{ env.DOCKER_TAGNAME }}
|
||||||
|
- name: Alias the Docker image for GHCR
|
||||||
|
run: docker tag ${{ env.DOCKER_TAGNAME }} ghcr.io/${{ github.repository }}
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Push image to Github Container Registry
|
||||||
|
run: docker push ghcr.io/${{ github.repository }}
|
7
.github/workflows/test.yml
vendored
7
.github/workflows/test.yml
vendored
|
@ -3,7 +3,10 @@
|
||||||
|
|
||||||
name: CLI Tests
|
name: CLI Tests
|
||||||
|
|
||||||
on: [push, pull_request]
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
@ -11,7 +14,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
python-version: ['3.7', '3.8', '3.9', '3.10']
|
python-version: ['3.8', '3.9', '3.10']
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
|
|
22
Dockerfile
Normal file
22
Dockerfile
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
ARG DOCKER_BASE_IMAGE
|
||||||
|
FROM $DOCKER_BASE_IMAGE
|
||||||
|
ARG VCS_REF
|
||||||
|
ARG BUILD_DATE
|
||||||
|
LABEL \
|
||||||
|
maintainer="https://ocr-d.de/kontakt" \
|
||||||
|
org.label-schema.vcs-ref=$VCS_REF \
|
||||||
|
org.label-schema.vcs-url="https://github.com/qurator-spk/sbb_binarization" \
|
||||||
|
org.label-schema.build-date=$BUILD_DATE
|
||||||
|
|
||||||
|
WORKDIR /build/sbb_binarization
|
||||||
|
COPY pyproject.toml .
|
||||||
|
COPY ocrd-tool.json .
|
||||||
|
COPY sbb_binarize ./sbb_binarize
|
||||||
|
COPY requirements.txt .
|
||||||
|
COPY README.md .
|
||||||
|
COPY Makefile .
|
||||||
|
RUN make install
|
||||||
|
RUN rm -rf /build/sbb_binarization
|
||||||
|
|
||||||
|
WORKDIR /data
|
||||||
|
VOLUME ["/data"]
|
18
Makefile
18
Makefile
|
@ -1,5 +1,9 @@
|
||||||
# BEGIN-EVAL makefile-parser --make-help Makefile
|
# BEGIN-EVAL makefile-parser --make-help Makefile
|
||||||
|
|
||||||
|
# should really be core-cuda-tf2, but not as long as we must restrict TF2 minor version
|
||||||
|
DOCKER_BASE_IMAGE = docker.io/ocrd/core-cuda:v2.69.0
|
||||||
|
DOCKER_TAG = ocrd/sbb_binarization
|
||||||
|
|
||||||
.PHONY: help install
|
.PHONY: help install
|
||||||
help:
|
help:
|
||||||
@echo ""
|
@echo ""
|
||||||
|
@ -10,13 +14,18 @@ help:
|
||||||
@echo " test Run tests"
|
@echo " test Run tests"
|
||||||
@echo " clean Remove copies/results in test/assets"
|
@echo " clean Remove copies/results in test/assets"
|
||||||
@echo ""
|
@echo ""
|
||||||
|
@echo " docker Build a Docker image $(DOCKER_TAG) from $(DOCKER_BASE_IMAGE)"
|
||||||
|
@echo ""
|
||||||
@echo " Variables"
|
@echo " Variables"
|
||||||
@echo ""
|
@echo ""
|
||||||
|
@echo " PYTHON"
|
||||||
|
@echo " DOCKER_TAG Docker image tag of result for the docker target"
|
||||||
|
|
||||||
# END-EVAL
|
# END-EVAL
|
||||||
|
|
||||||
# Install with pip
|
# Install with pip
|
||||||
install:
|
install:
|
||||||
|
pip install -U setuptools pip
|
||||||
pip install .
|
pip install .
|
||||||
|
|
||||||
# Downloads the pre-trained models from qurator-data.de
|
# Downloads the pre-trained models from qurator-data.de
|
||||||
|
@ -40,6 +49,15 @@ test: test/assets models
|
||||||
ocrd-sbb-binarize -m test/assets/kant_aufklaerung_1784-page-region/data/mets.xml -g phys_0001 -I OCR-D-GT-SEG-REGION -O BIN -P model default -P operation_level region
|
ocrd-sbb-binarize -m test/assets/kant_aufklaerung_1784-page-region/data/mets.xml -g phys_0001 -I OCR-D-GT-SEG-REGION -O BIN -P model default -P operation_level region
|
||||||
ocrd-sbb-binarize -m test/assets/kant_aufklaerung_1784-page-region/data/mets.xml -g phys_0001 -I OCR-D-GT-SEG-REGION -O BIN2 -P model default-2021-03-09 -P operation_level region
|
ocrd-sbb-binarize -m test/assets/kant_aufklaerung_1784-page-region/data/mets.xml -g phys_0001 -I OCR-D-GT-SEG-REGION -O BIN2 -P model default-2021-03-09 -P operation_level region
|
||||||
|
|
||||||
|
.PHONY: docker
|
||||||
|
docker:
|
||||||
|
docker build \
|
||||||
|
--build-arg DOCKER_BASE_IMAGE=$(DOCKER_BASE_IMAGE) \
|
||||||
|
--build-arg VCS_REF=$$(git rev-parse --short HEAD) \
|
||||||
|
--build-arg BUILD_DATE=$$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
|
||||||
|
-t $(DOCKER_TAG) .
|
||||||
|
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
-$(RM) -fr test/assets
|
-$(RM) -fr test/assets
|
||||||
|
|
14
README.md
14
README.md
|
@ -3,7 +3,8 @@
|
||||||
> Document Image Binarization
|
> Document Image Binarization
|
||||||
|
|
||||||
[](https://pypi.org/project/sbb-binarization/)
|
[](https://pypi.org/project/sbb-binarization/)
|
||||||
[](https://github.com/qurator-spk/sbb_binarization/actions/workflows/test.yml)
|
[](https://github.com/qurator-spk/sbb_binarization/actions/workflows/test.yml)
|
||||||
|
[](https://github.com/qurator-spk/sbb_binarization/actions/workflows/docker-image.yml)
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/952378/63592437-e433e400-c5b1-11e9-9c2d-889c6e93d748.jpg" width="180"><img src="https://user-images.githubusercontent.com/952378/63592435-e433e400-c5b1-11e9-88e4-3e441b61fa67.jpg" width="180"><img src="https://user-images.githubusercontent.com/952378/63592440-e4cc7a80-c5b1-11e9-8964-2cd1b22c87be.jpg" width="220"><img src="https://user-images.githubusercontent.com/952378/63592438-e4cc7a80-c5b1-11e9-86dc-a9e9f8555422.jpg" width="220">
|
<img src="https://user-images.githubusercontent.com/952378/63592437-e433e400-c5b1-11e9-9c2d-889c6e93d748.jpg" width="180"><img src="https://user-images.githubusercontent.com/952378/63592435-e433e400-c5b1-11e9-88e4-3e441b61fa67.jpg" width="180"><img src="https://user-images.githubusercontent.com/952378/63592440-e4cc7a80-c5b1-11e9-8964-2cd1b22c87be.jpg" width="220"><img src="https://user-images.githubusercontent.com/952378/63592438-e4cc7a80-c5b1-11e9-86dc-a9e9f8555422.jpg" width="220">
|
||||||
|
|
||||||
|
@ -13,16 +14,19 @@ Python `3.7-3.10` with Tensorflow `<=2.11.1` are currently supported. While newe
|
||||||
|
|
||||||
You can either install from PyPI via
|
You can either install from PyPI via
|
||||||
|
|
||||||
```
|
|
||||||
pip install sbb-binarization
|
pip install sbb-binarization
|
||||||
```
|
|
||||||
|
|
||||||
or clone the repository, enter it and install (editable) with
|
or clone the repository, enter it and install (editable) with
|
||||||
|
|
||||||
```
|
|
||||||
git clone git@github.com:qurator-spk/sbb_binarization.git
|
git clone git@github.com:qurator-spk/sbb_binarization.git
|
||||||
cd sbb_binarization; pip install -e .
|
cd sbb_binarization; pip install -e .
|
||||||
```
|
|
||||||
|
|
||||||
|
Alternatively, download the prebuilt image from Dockerhub:
|
||||||
|
|
||||||
|
docker pull ocrd/sbb_binarization
|
||||||
|
|
||||||
|
|
||||||
### Models
|
### Models
|
||||||
|
|
||||||
|
|
47
pyproject.toml
Normal file
47
pyproject.toml
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[build-system]
|
||||||
|
requires = ["setuptools>=61.0", "wheel", "setuptools-ocrd"]
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "sbb_binarization"
|
||||||
|
authors = [
|
||||||
|
{name = "Vahid Rezanezhad"},
|
||||||
|
{name = "Staatsbibliothek zu Berlin - Preußischer Kulturbesitz"},
|
||||||
|
]
|
||||||
|
description = "Pixelwise binarization with selectional auto-encoders in Keras"
|
||||||
|
readme = "README.md"
|
||||||
|
license.file = "LICENSE"
|
||||||
|
requires-python = ">=3.8"
|
||||||
|
|
||||||
|
dynamic = ["dependencies", "version"]
|
||||||
|
|
||||||
|
classifiers = [
|
||||||
|
"Development Status :: 4 - Beta",
|
||||||
|
"Environment :: Console",
|
||||||
|
"Intended Audience :: Science/Research",
|
||||||
|
"License :: OSI Approved :: Apache Software License",
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
"Programming Language :: Python :: 3 :: Only",
|
||||||
|
"Topic :: Scientific/Engineering :: Image Processing",
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
sbb_binarize = "sbb_binarize.cli:main"
|
||||||
|
ocrd-sbb-binarize = "sbb_binarize.ocrd_cli:cli"
|
||||||
|
|
||||||
|
[project.urls]
|
||||||
|
Homepage = "https://github.com/qurator-spk/sbb_binarization"
|
||||||
|
Repository = "https://github.com/qurator-spk/sbb_binarization.git"
|
||||||
|
|
||||||
|
[tool.setuptools.dynamic]
|
||||||
|
dependencies = {file = ["requirements.txt"]}
|
||||||
|
|
||||||
|
[tool.setuptools.packages.find]
|
||||||
|
where = ["."]
|
||||||
|
include = ["sbb_binarize"]
|
||||||
|
namespaces = false
|
||||||
|
|
||||||
|
[tool.setuptools]
|
||||||
|
include-package-data = true
|
||||||
|
|
||||||
|
[tool.setuptools.package-data]
|
||||||
|
"*" = ["*.json"]
|
|
@ -2,4 +2,4 @@ numpy
|
||||||
setuptools >= 41
|
setuptools >= 41
|
||||||
opencv-python-headless
|
opencv-python-headless
|
||||||
ocrd >= 2.38.0
|
ocrd >= 2.38.0
|
||||||
tensorflow <= 2.11.1
|
tensorflow < 2.13
|
||||||
|
|
30
setup.py
30
setup.py
|
@ -1,30 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
from json import load
|
|
||||||
from setuptools import setup, find_packages
|
|
||||||
|
|
||||||
with open('./ocrd-tool.json', 'r') as f:
|
|
||||||
version = load(f)['version']
|
|
||||||
|
|
||||||
install_requires = open('requirements.txt').read().split('\n')
|
|
||||||
|
|
||||||
setup(
|
|
||||||
name='sbb_binarization',
|
|
||||||
version=version,
|
|
||||||
description='Pixelwise binarization with selectional auto-encoders in Keras',
|
|
||||||
long_description=open('README.md').read(),
|
|
||||||
long_description_content_type='text/markdown',
|
|
||||||
author='Vahid Rezanezhad',
|
|
||||||
url='https://github.com/qurator-spk/sbb_binarization',
|
|
||||||
license='Apache License 2.0',
|
|
||||||
packages=find_packages(exclude=('test', 'repo')),
|
|
||||||
include_package_data=True,
|
|
||||||
package_data={'': ['*.json', '*.yml', '*.yaml']},
|
|
||||||
install_requires=install_requires,
|
|
||||||
entry_points={
|
|
||||||
'console_scripts': [
|
|
||||||
'sbb_binarize=sbb_binarize.cli:main',
|
|
||||||
'ocrd-sbb-binarize=sbb_binarize.ocrd_cli:cli',
|
|
||||||
]
|
|
||||||
},
|
|
||||||
)
|
|
Loading…
Add table
Add a link
Reference in a new issue