What's Changed
- The python-native BiDi implementation of
python-bidiused by the recognition container classes was highly outdated and breaks on some modern text, in addition to not implementing the 6.3 paired bracket feature that reduces issues with bracket mirroring at directional boundaries. The library has been replaced by an internal implementation following Unicode 17. - Recognition models now extract lines in the data model they have been trained on from XML files, i.e., bounding box lines for bbox models and baselines for baseline models. The default can be overridden with the
--linetypeoption. During recognition training the same option can be used to select the data model to train with when training either from XML files directly (ketos train -f xml --linetype [bbox|baselines] ...) or with compiled datasets (ketos compile -f xml --linetype [bbox|baselines] ...). - When setting a Unicode normalization in
ketos testboth the prediction and ground truth are now normalized. In previous versions the transformations was only applied to the ground truth. ketos trainnow works with DDP
Bug fixes
- GroupNorm was computed with padding, changing recognition results when changing the batch size. The layer strips padding before now, making recognition (mostly) invariant of batch size. The default recognition architecture doesn't use GroupNorm so the erroneous behavior was limited to custom VGSL specs.
- A bug in the 7.0 CoreML loader broke loading of pre-1.0 models that did not contain a
kraken_metafield. - TensorBoard logging in training is now functional again
- The
imagenameattribute inSegmentationcontainer objects is now set by the legacy bbox segmenter. - Binary training datasets with bbox data have been fixed.
- Insertion and deletions were inversed in the
ketos testreport. - A regression in
ImageTransformscaused crashes on operating systems that default to multiprocessing withspawn. - Some small changes in
load_safetensorsthat allow deserialization of shared weights directly on cuda.