Merge pull request #65 from bertsky/setup-init

init from constructor not during process
fix/readme-no-checkpoint
Mike Gerber 3 years ago committed by GitHub
commit b4c3b026db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -39,9 +39,14 @@ class CalamariRecognize(Processor):
kwargs['ocrd_tool'] = OCRD_TOOL['tools'][TOOL]
kwargs['version'] = '%s (calamari %s, tensorflow %s)' % (OCRD_TOOL['version'], calamari_version, tensorflow_version)
super(CalamariRecognize, self).__init__(*args, **kwargs)
if hasattr(self, 'output_file_grp'):
# processing context
self.setup()
def _init_calamari(self):
def setup(self):
"""
Set up the model prior to processing.
"""
if not self.parameter.get('checkpoint', None) and self.parameter.get('checkpoint_dir', None):
resolved = self.resolve_resource(self.parameter['checkpoint_dir'])
self.parameter['checkpoint'] = '%s/*.ckpt.json' % resolved
@ -62,15 +67,37 @@ class CalamariRecognize(Processor):
def process(self):
"""
Performs the recognition.
Perform text recognition with Calamari on the workspace.
For each page of the input file group, open and deserialize input PAGE-XML
and its respective images. Then iterate over the element hierarchy down to
the line level.
For each textline, retrieve a segment image according to the layout annotation
(from an existing ``AlternativeImage``, or by cropping into the higher-level
images, and deskewing when applicable).
If the line element contained any previous text results or word segmentation,
delete it.
Convert the line image to a Numpy array and pass it to the recognizer. Aggregate
character results on the line level, stripping leading and trailing white space,
and selecting the best hypothesis for each position. Annotate the resulting
TextEquiv string and (average) confidence on the line segment.
If ``texequiv_level`` is ``word`` or ``glyph``, then additionally create word
level segments by splitting at white space characters, using the vertical
line coordinates and horizontal white space boundaries. In the case of ``glyph``,
create glyph level segments as well, adding all alternative character hypotheses
down to ``glyph_conf_cutoff`` confidence threshold.
Produce a new PAGE output file by serialising the resulting hierarchy.
"""
log = getLogger('processor.CalamariRecognize')
assert_file_grp_cardinality(self.input_file_grp, 1)
assert_file_grp_cardinality(self.output_file_grp, 1)
self._init_calamari()
for (n, input_file) in enumerate(self.input_files):
page_id = input_file.pageId or input_file.ID
log.info("INPUT FILE %i / %s", n, page_id)

Loading…
Cancel
Save