diff --git a/tsvtools/cli.py b/tsvtools/cli.py index e50c734..c9cb71a 100644 --- a/tsvtools/cli.py +++ b/tsvtools/cli.py @@ -106,7 +106,15 @@ def page2tsv(page_xml_file, tsv_out_file, purpose, image_url, ner_rest_endpoint, for region_idx, region in enumerate(pcgts.get_Page().get_AllRegions(classes=['Text'], order='reading-order')): for text_line in region.get_TextLine(): - left, top, right, bottom = [int(scale_factor * x) for x in bbox_from_points(text_line.get_Coords().points)] + + points = [int(scale_factor * float(pos)) for coords in text_line.get_Coords() for p in + coords.attrib['points'].split(' ') for pos in p.split(',')] + + x_points, y_points = points[0::2], points[1::2] + + left, right, top, bottom = min(x_points), max(x_points), min(y_points), max(y_points) + + # left, top, right, bottom = [int(scale_factor * x) for x in bbox_from_points(text_line.get_Coords().points)] if min_confidence is not None and max_confidence is not None: conf = np.max([textequiv.conf for textequiv in text_line.get_TextEquiv()]) @@ -119,7 +127,15 @@ def page2tsv(page_xml_file, tsv_out_file, purpose, image_url, ner_rest_endpoint, for text_equiv in word.get_TextEquiv(): # transform OCR coordinates using `scale_factor` to derive # correct coordinates for the web presentation image - left, top, right, bottom = [int(scale_factor * x) for x in bbox_from_points(word.get_Coords().points)] + + points = [int(scale_factor * float(pos)) for coords in text_line.get_Coords() for p in + coords.attrib['points'].split(' ') for pos in p.split(',')] + + x_points, y_points = points[0::2], points[1::2] + + left, right, top, bottom = min(x_points), max(x_points), min(y_points), max(y_points) + + # left, top, right, bottom = [int(scale_factor * x) for x in bbox_from_points(word.get_Coords().points)] tsv.append((region_idx, len(line_info) - 1, left + (right - left) / 2.0, text_equiv.get_Unicode(), len(urls), left, right, top, bottom, text_line.id)) @@ -181,8 +197,10 @@ def page2tsv(page_xml_file, tsv_out_file, purpose, image_url, ner_rest_endpoint, except requests.HTTPError as e: print(e) + @click.command() -@click.option('--output-filename', '-o', help="Output filename. If omitted, PAGE-XML filename with .corrected.xml extension") +@click.option('--output-filename', '-o', help="Output filename. " + "If omitted, PAGE-XML filename with .corrected.xml extension") @click.option('--keep-words', '-k', is_flag=True, help="Keep (out-of-date) Words of TextLines") @click.argument('page-file') @click.argument('tsv-file')