eynollah/CHANGELOG.md

235 lines
7.6 KiB
Markdown
Raw Normal View History

2021-04-22 15:41:17 +02:00
Change Log
==========
Versioned according to [Semantic Versioning](http://semver.org/).
## Unreleased
2025-09-26 16:23:46 +02:00
## [0.5.0] - 2025-09-26
2025-04-15 11:14:26 +02:00
Fixed:
2025-09-26 16:19:04 +02:00
* restoring the contour in the original image caused an error due to an empty tuple, #154
2025-10-06 14:53:47 +02:00
* removed NumPy warnings (fixed issue #158)
* fixed issue #124
* Drop capitals are now handled separately from their corresponding textline
* Marginals are now divided into left and right. Their reading order is written first for left marginals, then for right marginals, and within each side from top to bottom
* Added a new page extraction model. Instead of bounding boxes, it outputs page contours in the XML file, improving results for skewed pages
* Improved reading order for cases where a textline is segmented into multiple smaller textlines
2025-09-26 16:19:04 +02:00
Added:
* `eynollah machine-based-reading-order` CLI to run reading order detection, #175
* `eynollah enhancement` CLI to run image enhancement, #175
* Improved models for page extraction and reading order detection, #175
2025-10-06 14:53:47 +02:00
* For the lightweight version (layout and textline detection), thresholds are now assigned to the artificial class. Users can apply these thresholds to improve detection of isolated textlines and regions. To counteract the drawback of thresholding, the skeleton of the artificial class is used to keep lines as thin as possible (resolved issues #163 and #161)
* Added and integrated trained CNN-RNN OCR models
* Added and integrated a trained TrOCR model
* Improved OCR detection to support vertical and curved textlines
* Introduced a new machine-based reading order model with rotation augmentation
* Optimized reading order speed by clustering text regions that belong to the same block, maintaining top-to-bottom order
* Implemented text merging across textlines based on hyphenation when a line ends with a hyphen
* Integrated image enhancement as a separate use case
* Added reading order functionality on the layout level as a separate use case
* CNN-RNN OCR models provide confidence scores for predictions
* Added OCR visualization: predicted OCR can be overlaid on an image of the same size as the input
* Introduced a threshold value for CNN-RNN OCR models, allowing users to filter out low-confidence textline predictions
* For OCR, users can specify a single model by name instead of always using the default model
* Under the OCR use case, if ground-truth XMLs and images are available, textline image and corresponding text extraction can now be performed
2025-04-15 11:14:26 +02:00
2025-04-07 16:48:57 +02:00
## [0.4.0] - 2025-04-07
2025-04-07 16:46:58 +02:00
Fixed:
* allow empty imports for optional dependencies
* avoid Numpy warnings (empty slices etc)
* remove deprecated Numpy types
* binarization CLI: make `dir_in` usable again
Added:
* Continuous Deployment via Dockerhub and GHCR
* CI: also test CLIs and OCR-D
* CI: measure code coverage, annotate+upload reports
* smoke-test: also check results
* smoke-test: also test sbb-binarize
* ocrd-test: analog for OCR-D CLI (segment and binarize)
* pytest: add asserts, extend coverage, use subtests for various options
* pytest: also add binarization
* pytest: add `dir_in` mode (segment and binarize)
* make install: control optional dependencies via `EXTRAS` variable
* OCR-D: expose and describe recently added parameters:
- `ignore_page_extraction`
- `allow_enhancement`
- `textline_light`
- `right_to_left`
* OCR-D: :fire: integrate ocrd-sbb-binarize
* add detection confidence in `TextRegion/Coords/@conf`
(but only in light version and not for marginalia)
Changed:
* Docker build: simplify, w/ `OCR`, conform to OCR-D spec
* OCR-D: :fire: migrate to core v3
- initialize+setup only once
- restrict number of parallel page workers to 1
(conflicts with existing multiprocessing; TF parts not mp-compatible)
- do query maximally annotated page image
(but filtering existing binarization/cropping/deskewing),
rebase (as new `@imageFilename`) if necessary
- add behavioural docstring
* :fire: refactor `Eynollah` API:
- no more data (kw)args at init,
but kwargs `dir_in` / `image_filename` for `run()`
- no more data attributes, but function kwargs
(`pcgts`, `image_filename`, `image_pil`, `dir_in`, `override_dpi`)
- remove redundant TF session/model loaders
(only load once during init)
- factor `run_single()` out of `run()` (loop body),
expose for independent calls (like OCR-D)
- expose `cache_images()`, add `dpi` kwarg, set `self._imgs`
- single-image mode writes PAGE file result
(just as directory mode does)
* CLI: assertions (instead of print+exit) for options checks
* light mode: fine-tune ratio to better detect a region as header
2024-08-27 14:54:59 +02:00
## [0.3.1] - 2024-08-27
2024-08-27 14:52:01 +02:00
Fixed:
* regression in OCR-D processor, #106
* Expected Ptrcv::UMat for argument 'contour', #110
* Memory usage explosion with very narrow images (e.g. book spine), #67
2023-05-13 12:44:45 +02:00
## [0.3.0] - 2023-05-13
Changed:
* Eynollah light integration, #86
* use PEP420 style qurator namespace, #97
* set_memory_growth to all GPU devices alike, #100
Fixed:
* PAGE-XML coordinates can have self-intersections, #20
* reading order representation (XML order vs index), #22
* allow cropping separately, #26
* Order of regions, #51
* error while running inference, #75
* Eynollah crashes while processing image, #77
* ValueError: bad marshal data, #87
* contour extraction: inhomogeneous shape, #92
* Confusing model dir variables, #93
* New release?, #96
2023-03-24 14:16:55 +01:00
## [0.2.0] - 2023-03-24
2023-03-24 14:16:10 +01:00
Changed:
* Convert default model from HDFS to TF SavedModel, #91
Added:
* parmeter `tables` to toggle table detectino, #91
* default model described in ocrd-tool.json, #91
2023-03-22 14:21:53 +01:00
## [0.1.0] - 2023-03-22
2023-03-22 14:18:57 +01:00
Fixed:
* Do not produce spurious `TextEquiv`, #68
* Less spammy logging, #64, #65, #71
Changed:
* Upgrade to tensorflow 2.4.0, #74
* Improved README
* CI: test for python 3.7+, #90
2022-02-02 12:05:06 +01:00
## [0.0.11] - 2022-02-02
Fixed:
* `models` parameter should have `content-type`, #61, OCR-D/core#777
2021-09-27 14:31:23 +02:00
## [0.0.10] - 2021-09-27
Fixed:
* call to `uild_pagexml_no_full_layout` for empty pages, #52
2021-08-16 17:36:37 +02:00
## [0.0.9] - 2021-08-16
Added:
* Table detection, #48
Fixed:
* Catch exception, #47
## [0.0.8] - 2021-07-27
2021-07-27 13:42:15 +02:00
Fixed:
* `pc:PcGts/@pcGtsId` was not set, #49
2021-07-01 15:16:22 +02:00
## [0.0.7] - 2021-07-01
Fixed:
* `slopes`/`slopes_h` retval/arguments mixed up, #45, #46
2021-06-22 13:31:22 +02:00
## [0.0.6] - 2021-06-22
Fixed:
* Cast arguments to opencv2 to python native types, #43, #44, opencv/opencv#20186
2021-05-19 11:42:45 +02:00
## [0.0.5] - 2021-05-19
Changed:
* Remove `allow_enhancement` parameter, #42
## [0.0.4] - 2021-05-18
2021-05-18 13:59:19 +02:00
* fix contour bug, #40
2021-05-11 13:15:25 +02:00
## [0.0.3] - 2021-05-11
* fix NaN bug, #38
2021-05-04 18:12:21 +02:00
## [0.0.2] - 2021-05-04
Fixed:
* prevent negative coordinates for textlines in marginals
2021-05-11 13:15:25 +02:00
* fix a bug in the contour logic, #38
2021-05-04 13:05:46 -04:00
* the binarization model is added into the models and now binarization of input can be done at the first stage of eynollah's pipline. This option can be turned on by -ib (-input_binary) argument. This is suggested for very dark or bright documents
2021-05-04 18:12:21 +02:00
2021-04-22 15:41:17 +02:00
## [0.0.1] - 2021-04-22
Initial release
<!-- link-labels -->
2025-09-26 16:23:46 +02:00
[0.5.0]: ../../compare/v0.5.0...v0.4.0
[0.4.0]: ../../compare/v0.4.0...v0.3.1
2024-08-27 14:54:59 +02:00
[0.3.1]: ../../compare/v0.3.1...v0.3.0
[0.3.0]: ../../compare/v0.3.0...v0.2.0
2023-03-24 14:16:55 +01:00
[0.2.0]: ../../compare/v0.2.0...v0.1.0
2023-03-22 14:21:53 +01:00
[0.1.0]: ../../compare/v0.1.0...v0.0.11
2022-02-02 12:05:06 +01:00
[0.0.11]: ../../compare/v0.0.11...v0.0.10
2021-09-27 14:31:23 +02:00
[0.0.10]: ../../compare/v0.0.10...v0.0.9
2021-08-16 17:36:37 +02:00
[0.0.9]: ../../compare/v0.0.9...v0.0.8
2021-07-27 13:42:15 +02:00
[0.0.8]: ../../compare/v0.0.8...v0.0.7
2021-07-01 15:16:22 +02:00
[0.0.7]: ../../compare/v0.0.7...v0.0.6
2021-06-22 13:31:22 +02:00
[0.0.6]: ../../compare/v0.0.6...v0.0.5
2021-05-19 11:42:45 +02:00
[0.0.5]: ../../compare/v0.0.5...v0.0.4
2021-05-18 13:59:19 +02:00
[0.0.4]: ../../compare/v0.0.4...v0.0.3
[0.0.3]: ../../compare/v0.0.3...v0.0.2
2021-05-11 13:15:25 +02:00
[0.0.2]: ../../compare/v0.0.2...v0.0.1
2021-04-22 15:41:17 +02:00
[0.0.1]: ../../compare/HEAD...v0.0.1