From 6df8ab698fa1814ffdca32daf5298c7201175a04 Mon Sep 17 00:00:00 2001 From: Robert Sachunsky Date: Sat, 21 May 2022 17:46:01 +0200 Subject: [PATCH 1/2] include all region types in order (but only if actually in ReadingOrder) --- ocrd_browser/model/page_xml_renderer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ocrd_browser/model/page_xml_renderer.py b/ocrd_browser/model/page_xml_renderer.py index 887c72a..125819e 100644 --- a/ocrd_browser/model/page_xml_renderer.py +++ b/ocrd_browser/model/page_xml_renderer.py @@ -521,7 +521,7 @@ def render_all(self, pc_gts: PcGtsType) -> None: if self.features & Feature.ORDER: last_point: Optional[Point] = None - for region_ds in page.get_AllRegions(classes=['Text'], order='reading-order'): + for region_ds in page.get_AllRegions(order='reading-order-only'): region = self.region_factory.create(region_ds) new_point = region.poly.representative_point() if last_point: From 6c8fe597145e06c80730bcb8b42746e0fed7f632 Mon Sep 17 00:00:00 2001 From: Robert Sachunsky Date: Sat, 21 May 2022 17:46:48 +0200 Subject: [PATCH 2/2] prioritize sep > text > other regions for rendering --- ocrd_browser/model/page_xml_renderer.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/ocrd_browser/model/page_xml_renderer.py b/ocrd_browser/model/page_xml_renderer.py index 125819e..b32337f 100644 --- a/ocrd_browser/model/page_xml_renderer.py +++ b/ocrd_browser/model/page_xml_renderer.py @@ -15,7 +15,7 @@ from PIL import ImageDraw, Image, ImageFont -from ocrd_models.ocrd_page import PcGtsType, PageType, BorderType, PrintSpaceType, RegionType, TextRegionType, TextLineType, WordType, GlyphType, GraphemeType, ChartRegionType, GraphicRegionType +from ocrd_models.ocrd_page import PcGtsType, PageType, BorderType, PrintSpaceType, RegionType, TextRegionType, TextLineType, WordType, GlyphType, GraphemeType, ChartRegionType, GraphicRegionType, SeparatorRegionType, TableRegionType from ocrd_utils import coordinates_of_segment, getLogger, polygon_from_points, transform_coordinates from shapely.geometry import Polygon, Point, LineString @@ -516,7 +516,21 @@ def render_all(self, pc_gts: PcGtsType) -> None: page: PageType = pc_gts.get_Page() self.render_type(page.get_PrintSpace()) self.render_type(page.get_Border()) - for region_ds in page.get_AllRegions(order='reading-order'): + def region_priority(region): + # often, regions overlap; since we don't alpha-composite, + # we should provide a useful default priority of what is + # rendered last (and thus unoccluded); document order is + # not helpful, because it depends on the workflow or geometry + # instead of visibility concerns; thus, ensure that: + # - SeparatorRegion is top-most + # - TextRegion is next + # - all others are next + if isinstance(region, SeparatorRegionType): + return 0 + if isinstance(region, TextRegionType): + return -1 + return -2 + for region_ds in sorted(page.get_AllRegions(), key=region_priority): self.render_type(region_ds) if self.features & Feature.ORDER: