Go to file
2021-03-18 10:32:55 +01:00
wrapper Cleanup and make use of globbing for input files for binarization and ocr 2021-03-15 12:45:05 +01:00
.gitlab-ci.yml Change intermediate image name in order to fix issues with building multiple branches/tags at the same time 2021-03-15 14:11:23 +01:00
Dockerfile Add back german language models 2021-03-17 14:26:24 +01:00
hocrtotei Use more descriptive argument names then i and o (now: input and output) 2021-03-18 10:32:55 +01:00
ocr Update the hocrtotei script 2021-03-17 16:58:13 +01:00
README.md Cleanup and make use of globbing for input files for binarization and ocr 2021-03-15 12:45:05 +01:00

OCR - Optical Character Recognition

This software implements a heavily parallelized pipeline to recognize text in PDF files. It is used for nopaque's OCR service but you can also use it standalone, for that purpose a convenient wrapper script is provided.

Software used in this pipeline implementation

Use this image

  1. Create input and output directories for the pipeline.
mkdir -p /<my_data_location>/input /<my_data_location>/output
  1. Place your PDF files inside /<my_data_location>/input. Files should all contain text of the same language.

  2. Start the pipeline process. Check the Pipeline arguments section for more details.

# Option one: Use the wrapper script
## Install the wrapper script (only on first run). Get it from https://gitlab.ub.uni-bielefeld.de/sfb1288inf/ocr/-/raw/development/wrapper/ocr, make it executeable and add it to your ${PATH}
cd /<my_data_location>
ocr -i input -l <language_code> -o output <optional_pipeline_arguments>

# Option two: Classic Docker style
docker run \
    --rm \
    -it \
    -u $(id -u $USER):$(id -g $USER) \
    -v /<my_data_location>/input:/input \
    -v /<my_data_location>/output:/output \
    gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/ocr:development \
        -i /ocr_pipeline/input \
        -l <language_code> \
        -o /ocr_pipeline/output \
        <optional_pipeline_arguments>
  1. Check your results in the /<my_data_location>/output directory.

Pipeline arguments

Mandatory arguments

-i, --input-dir INPUT_DIR

  • Input directory

-o, --output-dir OUTPUT_DIR

  • Output directory

-l, --language {spa,fra,dan,deu,eng,frm,chi_tra,ara,enm,ita,ell,frk,rus,por}

  • Language of the input (3-character ISO 639-2 language codes)

Optional arguments

--binarize

  • Add binarization as a preprocessing step

--log-dir

  • Logging directory

--mem-mb

  • Amount of system memory to be used (Default: min(--n-cores * 2048, available system memory))

--n-cores

  • Number of CPU threads to be used (Default: min(4, available CPU cores))

-v, --version

  • Returns the current version of the OCR pipeline
# Example with all arguments used
docker run \
    --rm \
    -it \
    -u $(id -u $USER):$(id -g $USER) \
    -v /<my_data_location>/input:/ocr_pipeline/input \
    -v /<my_data_location>/output:/ocr_pipeline/output \
    -v /<my_data_location>/logs:/ocr_pipeline/logs \
    gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/ocr:development \
        -i /ocr_pipeline/input \
        -l eng \
        -o /ocr_pipeline/output \
        --binarize \
        --log-dir /ocr_pipeline/logs \
        --n-cores 8 \