1313
1414class MetadataExtraction (Benchmark ):
1515
16-
1716 def update_required (self ) -> bool :
1817 """ If an update of the ground truth is required before running the benchmark. """
1918
@@ -141,9 +140,9 @@ def score_benchmark(self, all_scores):
141140 return {"score" : "niy" }
142141
143142 def score_request_answer (self ,
144- image_name : str ,
145- response : dict ,
146- ground_truth : dict ) -> dict :
143+ image_name : str ,
144+ response : dict ,
145+ ground_truth : dict ) -> dict :
147146 """ Score the answer.
148147
149148 :param image_name: the name of the image
@@ -155,8 +154,10 @@ def score_request_answer(self,
155154 logging .debug (f"response: { response } " )
156155 logging .debug (f"ground_truth: { ground_truth } " )
157156
157+ data = self .prepare_scoring_data (response )
158+
158159 try :
159- raw_response_letter = response [ "response_text" ] ["metadata" ]
160+ raw_response_letter = data ["metadata" ]
160161 raw_response_letter ["document_number" ] = image_name
161162 response_letter = Letter (** raw_response_letter )
162163 except ValueError :
@@ -196,6 +197,39 @@ def score_request_answer(self,
196197 inferred_from_correspondence = False )
197198 return score
198199
200+ def create_request_render (self ,
201+ image_name : str ,
202+ result : dict ,
203+ score : dict ,
204+ ground_truth ) -> str :
205+
206+ data = self .prepare_scoring_data (result )
207+
208+ try :
209+ raw_response_letter = data ["metadata" ]
210+ raw_response_letter ["document_number" ] = image_name
211+ response_letter = Letter (** raw_response_letter )
212+ except ValueError :
213+ logging .error (f"Error parsing response for { image_name } " )
214+
215+ try :
216+ ground_truth ["document_number" ] = image_name
217+ ground_truth_letter = Letter (** ground_truth )
218+ except ValueError :
219+ logging .error (f"ValueError parsing ground_truth for { image_name } " )
220+ except TypeError :
221+ logging .error (f"TypeError parsing ground_truth for { image_name } " )
222+
223+ try :
224+ persons = json .load (open (os .path .join (self .benchmark_dir , "ground_truths" , "persons.json" )))
225+ except FileNotFoundError :
226+ logging .error ("Persons ground truth not found." )
227+
228+ logging .info (f"prediction: { response_letter } " )
229+ logging .info (f"gt: { ground_truth_letter } " )
230+
231+ return ""
232+
199233 @staticmethod
200234 def score_send_date (ground_truth_letter : Letter ,
201235 predicted_letter : Letter ) -> dict [str , int ]:
0 commit comments