@@ -77,57 +77,59 @@ def _draw_doc_reading_order(
7777 continue
7878 if len (elem .prov ) == 0 :
7979 continue # Skip elements without provenances
80- prov = elem .prov [0 ]
81- page_no = prov .page_no
82- image = my_images .get (page_no )
83-
84- if image is None or prev_page is None or page_no > prev_page :
85- # new page begins
86- prev_page = page_no
87- x0 = y0 = None
88-
89- if image is None :
90- page_image = doc .pages [page_no ].image
91- if page_image is None or (pil_img := page_image .pil_image ) is None :
92- raise RuntimeError ("Cannot visualize document without images" )
93- else :
94- image = deepcopy (pil_img )
95- my_images [page_no ] = image
96- draw = ImageDraw .Draw (image )
97-
98- # if prov.page_no not in true_doc.pages or prov.page_no != 1:
99- # logging.error(f"{prov.page_no} not in true_doc.pages -> skipping! ")
100- # continue
101-
102- tlo_bbox = prov .bbox .to_top_left_origin (
103- page_height = doc .pages [prov .page_no ].size .height
104- )
105- ro_bbox = tlo_bbox .normalized (doc .pages [prov .page_no ].size )
106- ro_bbox .l = round (ro_bbox .l * image .width ) # noqa: E741
107- ro_bbox .r = round (ro_bbox .r * image .width )
108- ro_bbox .t = round (ro_bbox .t * image .height )
109- ro_bbox .b = round (ro_bbox .b * image .height )
110-
111- if ro_bbox .b > ro_bbox .t :
112- ro_bbox .b , ro_bbox .t = ro_bbox .t , ro_bbox .b
113-
114- if x0 is None and y0 is None :
115- x0 = (ro_bbox .l + ro_bbox .r ) / 2.0
116- y0 = (ro_bbox .b + ro_bbox .t ) / 2.0
117- else :
118- assert x0 is not None
119- assert y0 is not None
120-
121- x1 = (ro_bbox .l + ro_bbox .r ) / 2.0
122- y1 = (ro_bbox .b + ro_bbox .t ) / 2.0
123-
124- draw = self ._draw_arrow (
125- draw = draw ,
126- arrow_coords = (x0 , y0 , x1 , y1 ),
127- line_width = 2 ,
128- color = "red" ,
80+
81+ for prov in elem .prov :
82+ page_no = prov .page_no
83+ image = my_images .get (page_no )
84+
85+ if image is None or prev_page is None or page_no > prev_page :
86+ # new page begins
87+ prev_page = page_no
88+ x0 = y0 = None
89+
90+ if image is None :
91+ page_image = doc .pages [page_no ].image
92+ if (
93+ page_image is None
94+ or (pil_img := page_image .pil_image ) is None
95+ ):
96+ raise RuntimeError (
97+ "Cannot visualize document without images"
98+ )
99+ else :
100+ image = deepcopy (pil_img )
101+ my_images [page_no ] = image
102+ draw = ImageDraw .Draw (image )
103+
104+ tlo_bbox = prov .bbox .to_top_left_origin (
105+ page_height = doc .pages [prov .page_no ].size .height
129106 )
130- x0 , y0 = x1 , y1
107+ ro_bbox = tlo_bbox .normalized (doc .pages [prov .page_no ].size )
108+ ro_bbox .l = round (ro_bbox .l * image .width ) # noqa: E741
109+ ro_bbox .r = round (ro_bbox .r * image .width )
110+ ro_bbox .t = round (ro_bbox .t * image .height )
111+ ro_bbox .b = round (ro_bbox .b * image .height )
112+
113+ if ro_bbox .b > ro_bbox .t :
114+ ro_bbox .b , ro_bbox .t = ro_bbox .t , ro_bbox .b
115+
116+ if x0 is None and y0 is None :
117+ x0 = (ro_bbox .l + ro_bbox .r ) / 2.0
118+ y0 = (ro_bbox .b + ro_bbox .t ) / 2.0
119+ else :
120+ assert x0 is not None
121+ assert y0 is not None
122+
123+ x1 = (ro_bbox .l + ro_bbox .r ) / 2.0
124+ y1 = (ro_bbox .b + ro_bbox .t ) / 2.0
125+
126+ draw = self ._draw_arrow (
127+ draw = draw ,
128+ arrow_coords = (x0 , y0 , x1 , y1 ),
129+ line_width = 2 ,
130+ color = "red" ,
131+ )
132+ x0 , y0 = x1 , y1
131133 return my_images
132134
133135 @override
0 commit comments