Passed
Pull Request — master (#536)
by Konstantin
01:40
created

ocrd_utils   A

Complexity

Total Complexity 0

Size/Duplication

Total Lines 143
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 0
eloc 67
dl 0
loc 143
rs 10
c 0
b 0
f 0
1
"""
2
Utility functions and constants usable in various circumstances.
3
4
* ``coordinates_of_segment``, ``coordinates_for_segment``
5
6
    These functions convert polygon outlines for PAGE elements on all hierarchy
7
    levels below page (i.e. region, line, word, glyph) between relative coordinates
8
    w.r.t. a corresponding image and absolute coordinates w.r.t. the top-level image.
9
    This includes rotation and offset correction, based on affine transformations.
10
    (Used by ``Workspace`` methods ``image_from_page`` and ``image_from_segment``)
11
12
* ``rotate_coordinates``, ``shift_coordinates``, ``transpose_coordinates``, ``transform_coordinates``
13
14
    These backend functions compose affine transformations for reflection, rotation
15
    and offset correction of coordinates, or apply them to a set of points. They can be
16
    used to pass down the coordinate system along with images (both invariably sharing
17
    the same operations context) when traversing the element hierarchy top to bottom.
18
    (Used by ``Workspace`` methods ``image_from_page`` and ``image_from_segment``).
19
20
* ``rotate_image``, ``crop_image``, ``transpose_image``
21
22
    These PIL.Image functions are safe replacements for the ``rotate``, ``crop``, and
23
    ``transpose`` methods.
24
25
* ``image_from_polygon``, ``polygon_mask``
26
27
    These functions apply polygon masks to PIL.Image objects.
28
29
* ``xywh_from_points``, ``points_from_xywh``, ``polygon_from_points`` etc.
30
31
   These functions have the syntax ``X_from_Y``, where ``X``/``Y`` can be
32
33
    * ``bbox`` is a 4-tuple of integers x0, y0, x1, y1 of the bounding box (rectangle)
34
35
      (used by PIL.Image)
36
    * ``points`` a string encoding a polygon: ``"0,0 100,0 100,100, 0,100"``
37
38
      (used by PAGE-XML)
39
    * ``polygon`` is a list of 2-lists of integers x, y of points forming an (implicitly closed) polygon path: ``[[0,0], [100,0], [100,100], [0,100]]``
40
41
      (used by opencv2 and higher-level coordinate functions in ocrd_utils)
42
    * ``xywh`` a dict with keys for x, y, width and height: ``{'x': 0, 'y': 0, 'w': 100, 'h': 100}``
43
44
      (produced by tesserocr and image/coordinate recursion methods in ocrd.workspace)
45
    * ``x0y0x1y1`` is a 4-list of strings ``x0``, ``y0``, ``x1``, ``y1`` of the bounding box (rectangle)
46
47
      (produced by tesserocr)
48
    * ``y0x0y1x1`` is the same as ``x0y0x1y1`` with positions of ``x`` and ``y`` in the list swapped
49
50
* ``is_local_filename``, ``safe_filename``, ``abspath``, ``get_local_filename``
51
52
    FS-related utilities
53
54
* ``is_string``, ``membername``, ``concat_padded``, ``nth_url_segment``, ``remove_non_path_from_url``, ``parse_json_string_with_comments``, ``parse_json_string_or_file``, ``set_json_key_value_overrides``, ``assert_file_grp_cardinality``, ``make_file_id``
55
56
    String and OOP utilities
57
58
* ``MIMETYPE_PAGE``, ``EXT_TO_MIME``, ``MIME_TO_EXT``, ``VERSION``
59
60
    Constants
61
62
* ``logging``, ``setOverrideLogLevel``, ``getLevelName``, ``getLogger``, ``initLogging``
63
64
    Exports of ocrd_utils.logging
65
66
* ``deprecated_alias``
67
68
    Decorator to mark a kwarg as deprecated
69
"""
70
71
from .constants import (
72
    VERSION,
73
    MIMETYPE_PAGE,
74
    EXT_TO_MIME,
75
    MIME_TO_EXT,
76
    PIL_TO_MIME,
77
    MIME_TO_PIL,
78
    REGEX_PREFIX,
79
    LOG_FORMAT,
80
    LOG_TIMEFMT)
81
82
from .deprecate import (
83
    deprecated_alias)
84
85
from .image import (
86
    adjust_canvas_to_rotation,
87
    adjust_canvas_to_transposition,
88
    bbox_from_points,
89
    bbox_from_polygon,
90
    bbox_from_xywh,
91
    coordinates_for_segment,
92
    coordinates_of_segment,
93
    crop_image,
94
    image_from_polygon,
95
    points_from_bbox,
96
    points_from_polygon,
97
    points_from_x0y0x1y1,
98
    points_from_xywh,
99
    points_from_y0x0y1x1,
100
    polygon_from_bbox,
101
    polygon_from_points,
102
    polygon_from_x0y0x1y1,
103
    polygon_from_xywh,
104
    polygon_mask,
105
    rotate_coordinates,
106
    rotate_image,
107
    shift_coordinates,
108
    transform_coordinates,
109
    transpose_coordinates,
110
    transpose_image,
111
    xywh_from_bbox,
112
    xywh_from_points,
113
    xywh_from_polygon)
114
115
from .introspect import (
116
    set_json_key_value_overrides,
117
    membername)
118
119
from .logging import (
120
    logging,
121
    getLogger,
122
    getLevelName,
123
    initLogging,
124
    setOverrideLogLevel)
125
126
from .os import (
127
    abspath,
128
    pushd_popd,
129
    unzip_file_to_dir)
130
131
from .str import (
132
    assert_file_grp_cardinality,
133
    concat_padded,
134
    get_local_filename,
135
    is_local_filename,
136
    is_string,
137
    make_file_id,
138
    nth_url_segment,
139
    parse_json_string_or_file,
140
    parse_json_string_with_comments,
141
    remove_non_path_from_url,
142
    safe_filename)
143