This commit is contained in:
Nguyễn Phước Thành
2025-09-08 14:42:22 +07:00
parent ebf66251d0
commit eb465155d1
22 changed files with 708 additions and 3479 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,79 @@
filename,deqa_score,label,decision_f1,decision_acc,decision_prec,decision_rec
image (9)_0.jpg,3.9,High,implement,implement,implement,implement
ITE55351156_Passeport_Completed_0.jpg,3.9,High,implement,implement,implement,implement
image (3)_0.jpg,3.8,High,implement,implement,reject,implement
image (18)_1.jpg,3.8,High,implement,implement,reject,implement
image (25)_0.jpg,3.8,High,implement,implement,reject,implement
image (2)_0.jpg,3.8,High,implement,implement,reject,implement
image (6)_6.jpg,3.7,High,implement,implement,reject,implement
ITE55354891_image_Completed_0.jpg,3.7,High,implement,implement,reject,implement
image (23)_0.jpg,3.7,High,implement,implement,reject,implement
image (21)_0.jpg,3.7,High,implement,implement,reject,implement
image (15)_0.jpg,3.7,High,implement,implement,reject,implement
ITE55354550_20250728_113359_Completed_0.jpg,3.7,High,implement,implement,reject,implement
image (6)_2.jpg,3.7,High,implement,implement,reject,implement
image (7)_1.jpg,3.7,High,implement,implement,reject,implement
ITE55348016_image_Completed_0.jpg,3.6,High,implement,implement,reject,implement
image (6)_0.jpg,3.6,High,implement,implement,reject,implement
ITE55343297_20250729_172626_Completed_0.jpg,3.6,High,implement,implement,reject,implement
image (29)_0.jpg,3.6,High,implement,implement,reject,implement
image (17)_0.jpg,3.6,High,implement,implement,reject,implement
ITE55340822_passeport_pascal_2028_Completed_0.jpg,3.5,High,implement,implement,reject,implement
image (27)_0.jpg,3.5,High,implement,implement,reject,implement
image (18)_0.jpg,3.5,High,implement,implement,reject,implement
image (24)_0.jpg,3.5,High,implement,implement,reject,implement
image (12)_0.jpg,3.5,High,implement,implement,reject,implement
image (6)_1.jpg,3.5,High,implement,implement,reject,implement
ITE55348904_cni_verso_0.jpg,3.4,High,implement,implement,reject,implement
image (7)_0.jpg,3.4,High,implement,implement,reject,implement
image (6)_3.jpg,3.4,Low,implement,implement,reject,implement
image (22)_2.jpg,3.4,High,implement,implement,reject,implement
ITE55352984_CNI_Completed_1.jpg,3.3,Low,implement,implement,reject,implement
image (30)_0.jpg,3.3,High,implement,implement,reject,implement
image (12)_1.jpg,3.3,High,implement,implement,reject,implement
ITE55341271_C_I_face_Completed_0.jpg,3.3,High,implement,implement,reject,implement
ITE55343716_CNI_Completed_0.jpg,3.3,High,implement,implement,reject,implement
image (17)_1.jpg,3.2,High,implement,implement,reject,implement
ITE55341677_2023_-_CNI_Recto-Verso_Hassina_0.jpg,3.2,High,implement,implement,reject,implement
image (22)_0.jpg,3.2,High,implement,implement,reject,implement
image (26)_0.jpg,3.1,High,implement,implement,reject,implement
image (16)_0.jpg,3.1,High,implement,implement,reject,implement
image (18)_2.jpg,3.1,High,implement,implement,reject,implement
image (18)_3.jpg,3.1,Low,implement,implement,reject,implement
image (19)_1.jpg,3.1,High,implement,implement,reject,implement
ITE55343716_CNI_Completed_1.jpg,3.1,High,implement,implement,reject,implement
ITE55352984_CNI_Completed_0.jpg,3.1,Low,implement,implement,reject,implement
ITE55347926_DHONDT_CNI_0.jpg,3.1,High,implement,implement,reject,implement
image (11)_1.jpg,3.0,Low,implement,implement,reject,implement
image (1)_0.jpg,3.0,High,implement,implement,reject,implement
image (22)_3.jpg,3.0,High,implement,implement,reject,implement
ITE55336627_PASSEPORT_Abasse_GUEYE__Completed_0.jpg,3.0,Low,implement,implement,reject,implement
image (28)_0.jpg,3.0,High,implement,implement,reject,implement
image (6)_4.jpg,2.9,High,implement,implement,reject,implement
image (22)_1.jpg,2.9,High,implement,implement,reject,implement
image (4)_0.jpg,2.9,High,implement,implement,reject,implement
image (28)_1.jpg,2.9,High,implement,implement,reject,implement
image (10)_1.jpg,2.9,Low,implement,implement,reject,implement
ITE55348464_IMG-20250721-WA0000_Completed_0.jpg,2.9,High,implement,implement,reject,implement
image (11)_0.jpg,2.9,Low,implement,implement,reject,implement
image (10)_0.jpg,2.9,Low,implement,implement,reject,implement
ITE55340318_ID_kat__1__Completed_0.jpg,2.9,Low,implement,implement,reject,implement
image (5)_0.jpg,2.8,Low,implement,implement,reject,implement
ITE55347865_Snapchat-715567440_Completed_0.jpg,2.8,Low,implement,implement,reject,implement
image (6)_5.jpg,2.8,High,implement,implement,reject,implement
image (13)_0.jpg,2.8,High,implement,implement,reject,implement
ITE55346966_17537774579547958575370370624241_Completed_0.jpg,2.8,Low,implement,implement,reject,implement
ITE55347866_Snapchat-1551171803_Completed_0.jpg,2.8,Low,implement,implement,reject,implement
ITE55350967_PLI_INCONNU_-_ADH_625302_42296806_DMS_0.jpg,2.7,High,implement,implement,reject,implement
image (8)_0.jpg,2.7,High,implement,implement,reject,implement
image (31)_0.jpg,2.7,High,implement,implement,reject,implement
ITE55348878_CNI_RECTO_0.jpg,2.7,Low,implement,implement,reject,implement
image (1)_1.jpg,2.7,High,implement,implement,reject,implement
image (13)_1.jpg,2.7,High,implement,implement,reject,implement
image (14)_0.jpg,2.7,High,implement,implement,reject,implement
ITE55349793_2_em_CNI_CHASTAING__0.jpg,2.6,High,implement,implement,reject,implement
image (19)_0.jpg,2.6,High,implement,implement,reject,implement
ITE55351087_PLI_INCONNU_-_ADH_625120_42296075_DMS_0.jpg,2.4,Low,reject,reject,reject,reject
ITE55352532_PLI_INCONNU_-_ADH_625374_42297046_DMS_0.jpg,2.2,Low,reject,reject,reject,reject
ITE55351128_PLI_INCONNU_-_ADH_625123_42296103_DMS_0.jpg,2.0,Low,reject,reject,reject,reject
ITE55351128_PLI_INCONNU_-_ADH_625123_42296103_DMS_1.jpg,1.9,Low,reject,reject,reject,reject
1 filename deqa_score label decision_f1 decision_acc decision_prec decision_rec
2 image (9)_0.jpg 3.9 High implement implement implement implement
3 ITE55351156_Passeport_Completed_0.jpg 3.9 High implement implement implement implement
4 image (3)_0.jpg 3.8 High implement implement reject implement
5 image (18)_1.jpg 3.8 High implement implement reject implement
6 image (25)_0.jpg 3.8 High implement implement reject implement
7 image (2)_0.jpg 3.8 High implement implement reject implement
8 image (6)_6.jpg 3.7 High implement implement reject implement
9 ITE55354891_image_Completed_0.jpg 3.7 High implement implement reject implement
10 image (23)_0.jpg 3.7 High implement implement reject implement
11 image (21)_0.jpg 3.7 High implement implement reject implement
12 image (15)_0.jpg 3.7 High implement implement reject implement
13 ITE55354550_20250728_113359_Completed_0.jpg 3.7 High implement implement reject implement
14 image (6)_2.jpg 3.7 High implement implement reject implement
15 image (7)_1.jpg 3.7 High implement implement reject implement
16 ITE55348016_image_Completed_0.jpg 3.6 High implement implement reject implement
17 image (6)_0.jpg 3.6 High implement implement reject implement
18 ITE55343297_20250729_172626_Completed_0.jpg 3.6 High implement implement reject implement
19 image (29)_0.jpg 3.6 High implement implement reject implement
20 image (17)_0.jpg 3.6 High implement implement reject implement
21 ITE55340822_passeport_pascal_2028_Completed_0.jpg 3.5 High implement implement reject implement
22 image (27)_0.jpg 3.5 High implement implement reject implement
23 image (18)_0.jpg 3.5 High implement implement reject implement
24 image (24)_0.jpg 3.5 High implement implement reject implement
25 image (12)_0.jpg 3.5 High implement implement reject implement
26 image (6)_1.jpg 3.5 High implement implement reject implement
27 ITE55348904_cni_verso_0.jpg 3.4 High implement implement reject implement
28 image (7)_0.jpg 3.4 High implement implement reject implement
29 image (6)_3.jpg 3.4 Low implement implement reject implement
30 image (22)_2.jpg 3.4 High implement implement reject implement
31 ITE55352984_CNI_Completed_1.jpg 3.3 Low implement implement reject implement
32 image (30)_0.jpg 3.3 High implement implement reject implement
33 image (12)_1.jpg 3.3 High implement implement reject implement
34 ITE55341271_C_I_face_Completed_0.jpg 3.3 High implement implement reject implement
35 ITE55343716_CNI_Completed_0.jpg 3.3 High implement implement reject implement
36 image (17)_1.jpg 3.2 High implement implement reject implement
37 ITE55341677_2023_-_CNI_Recto-Verso_Hassina_0.jpg 3.2 High implement implement reject implement
38 image (22)_0.jpg 3.2 High implement implement reject implement
39 image (26)_0.jpg 3.1 High implement implement reject implement
40 image (16)_0.jpg 3.1 High implement implement reject implement
41 image (18)_2.jpg 3.1 High implement implement reject implement
42 image (18)_3.jpg 3.1 Low implement implement reject implement
43 image (19)_1.jpg 3.1 High implement implement reject implement
44 ITE55343716_CNI_Completed_1.jpg 3.1 High implement implement reject implement
45 ITE55352984_CNI_Completed_0.jpg 3.1 Low implement implement reject implement
46 ITE55347926_DHONDT_CNI_0.jpg 3.1 High implement implement reject implement
47 image (11)_1.jpg 3.0 Low implement implement reject implement
48 image (1)_0.jpg 3.0 High implement implement reject implement
49 image (22)_3.jpg 3.0 High implement implement reject implement
50 ITE55336627_PASSEPORT_Abasse_GUEYE__Completed_0.jpg 3.0 Low implement implement reject implement
51 image (28)_0.jpg 3.0 High implement implement reject implement
52 image (6)_4.jpg 2.9 High implement implement reject implement
53 image (22)_1.jpg 2.9 High implement implement reject implement
54 image (4)_0.jpg 2.9 High implement implement reject implement
55 image (28)_1.jpg 2.9 High implement implement reject implement
56 image (10)_1.jpg 2.9 Low implement implement reject implement
57 ITE55348464_IMG-20250721-WA0000_Completed_0.jpg 2.9 High implement implement reject implement
58 image (11)_0.jpg 2.9 Low implement implement reject implement
59 image (10)_0.jpg 2.9 Low implement implement reject implement
60 ITE55340318_ID_kat__1__Completed_0.jpg 2.9 Low implement implement reject implement
61 image (5)_0.jpg 2.8 Low implement implement reject implement
62 ITE55347865_Snapchat-715567440_Completed_0.jpg 2.8 Low implement implement reject implement
63 image (6)_5.jpg 2.8 High implement implement reject implement
64 image (13)_0.jpg 2.8 High implement implement reject implement
65 ITE55346966_17537774579547958575370370624241_Completed_0.jpg 2.8 Low implement implement reject implement
66 ITE55347866_Snapchat-1551171803_Completed_0.jpg 2.8 Low implement implement reject implement
67 ITE55350967_PLI_INCONNU_-_ADH_625302_42296806_DMS_0.jpg 2.7 High implement implement reject implement
68 image (8)_0.jpg 2.7 High implement implement reject implement
69 image (31)_0.jpg 2.7 High implement implement reject implement
70 ITE55348878_CNI_RECTO_0.jpg 2.7 Low implement implement reject implement
71 image (1)_1.jpg 2.7 High implement implement reject implement
72 image (13)_1.jpg 2.7 High implement implement reject implement
73 image (14)_0.jpg 2.7 High implement implement reject implement
74 ITE55349793_2_em_CNI_CHASTAING__0.jpg 2.6 High implement implement reject implement
75 image (19)_0.jpg 2.6 High implement implement reject implement
76 ITE55351087_PLI_INCONNU_-_ADH_625120_42296075_DMS_0.jpg 2.4 Low reject reject reject reject
77 ITE55352532_PLI_INCONNU_-_ADH_625374_42297046_DMS_0.jpg 2.2 Low reject reject reject reject
78 ITE55351128_PLI_INCONNU_-_ADH_625123_42296103_DMS_0.jpg 2.0 Low reject reject reject reject
79 ITE55351128_PLI_INCONNU_-_ADH_625123_42296103_DMS_1.jpg 1.9 Low reject reject reject reject

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1,50 @@
{
"positive_definition": "HIGH when score >= threshold",
"best_thresholds": {
"f1": {
"threshold": 2.6,
"value": 0.8872180451127819,
"confusion": {
"TP": 59,
"FP": 15,
"FN": 0,
"TN": 4
}
},
"accuracy": {
"threshold": 2.6,
"value": 0.8076923076923077,
"confusion": {
"TP": 59,
"FP": 15,
"FN": 0,
"TN": 4
}
},
"precision": {
"threshold": 3.9,
"value": 1.0,
"confusion": {
"TP": 2,
"FP": 0,
"FN": 57,
"TN": 19
}
},
"recall": {
"threshold": 2.6,
"value": 1.0,
"confusion": {
"TP": 59,
"FP": 15,
"FN": 0,
"TN": 4
}
}
},
"counts": {
"total": 78,
"positives": 59,
"negatives": 19
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -0,0 +1,201 @@
filename,deqa_score,label,decision_f1,decision_acc,decision_prec,decision_rec
ffc129de-c82b-4c0b-8ab8-2941fd28cda9_Facture_opticien-2.jpg,3.6,High,implement,implement,reject,implement
9421b4f1-e9f7-42ea-8d9b-833361b16a20_image_1_scale_0.6.jpg,3.8,Low,implement,implement,reject,implement
Facture ostéopathe-26908261_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
803f61ed-759c-4773-90f2-d8737ef911ab_image-1.jpg,3.9,Low,implement,implement,reject,implement
72cb658b-3239-4479-918d-aac53bc4a552_Facture_ophtalmo_14-01-2025-1.jpg,3.5,High,implement,implement,reject,implement
Facture ostéopathe-26761886_1_scale_1.5.jpg,3.0,Low,reject,reject,reject,implement
Facture médecine douce-27778240_1_scale_1.5.jpg,2.7,Low,reject,reject,reject,implement
8f0e72ca-64e5-4797-87bc-9378b842433a_CF_1676107-2.jpg,3.5,High,implement,implement,reject,implement
b6140557-8c64-41b4-a6ea-bdcf88e0302e_IMG_20250210_155359_1_scale_1.0.jpg,3.3,Low,implement,implement,reject,implement
34918269-15fd-4e3d-9180-659530a82d35_OSTEO_01.25_1_scale_1.0.jpg,3.2,Low,implement,reject,reject,implement
DDE prestation Facture des lentilles de contact-26772418_2_scale_1.5.jpg,2.5,High,reject,reject,reject,implement
3500ba97-9402-46c4-a016-3a4abe35da60_Facture_osteo_1_2025_1_scale_1.5.jpg,3.5,Low,implement,implement,reject,implement
6c311fa0-a4c5-435f-81c6-7dec91d04978_FACTURE_POTARD_-_BENEDET_1_scale_1.0.jpg,4.1,Low,implement,implement,implement,implement
Facture-quittance toutes spécialités-27234926_1_scale_1.5.jpg,2.8,Low,reject,reject,reject,implement
2f042a0e-e23e-4e4a-af6d-9b013f1509bd_facture_ostheo_1_1_scale_1.5.jpg,3.1,Low,implement,reject,reject,implement
Facture médecine douce-27701675_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
Magasinier-Exemple-de-CV_1_scale_0.7.jpg,4.1,High,implement,implement,implement,implement
Promesse-dembauche-212x300.jpg,2.7,Low,reject,reject,reject,implement
141f7ccc-37ab-4da5-9788-80a27e819b8b_Feuilles_de_soins_Psychologue_x2-2.jpg,3.7,Low,implement,implement,reject,implement
Facture des lentilles de contact-27671269_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
ce6ed73c-50e6-4684-9d91-26eba210ba43_Feuille_de_soins_Ostheo_2_scale_1.5.jpg,3.6,Low,implement,implement,reject,implement
modele-bon-de-livraison-1.jpg,3.9,High,implement,implement,reject,implement
c64ad8f0-0d5a-4a5b-aec5-62ec44099520_Screenshot_20250211_100040_Gallery_1_scale_1.0.jpg,3.9,Low,implement,implement,reject,implement
77c1b3c3-234d-4431-8675-a5c1d12053e0_osteopathe_MOREAU_Coralie_10-02-25_1_scale_1.5.jpg,2.6,Low,reject,reject,reject,implement
DDE prestation Facture des lentilles de contact-26740699_1_scale_1.5.jpg,3.6,Low,implement,implement,reject,implement
ffc129de-c82b-4c0b-8ab8-2941fd28cda9_Facture_opticien_1_scale_1.5.jpg,3.9,High,implement,implement,reject,implement
mobilenew2.jpg,3.6,Low,implement,implement,reject,implement
a13a6613-da2d-48b7-96ef-412ba5a88af0_Factures_Clemence__1_scale_1.5.jpg,3.7,High,implement,implement,reject,implement
043bf393-055f-451c-ba6f-f01cac5964f0_17370239165192445587441836799654_1_scale_0.6.jpg,3.7,Low,implement,implement,reject,implement
4c7209da-d83b-416e-b7a2-2d3e409ad598_Schneider_Fred_250213_110050_1_scale_1.5.jpg,3.9,High,implement,implement,reject,implement
Facture ostéopathe-25233927_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
Facture ostéopathe-25246953_1_scale_1.5.jpg,3.6,High,implement,implement,reject,implement
Facture ostéopathe-26112050_1_scale_1.5.jpg,3.0,Low,reject,reject,reject,implement
Facture médecine douce-27702201_1_scale_1.5.jpg,3.6,Low,implement,implement,reject,implement
51c8093e-d8b7-4ac2-a57b-b0e7e8797143_20250206_111519_1_scale_1.0.jpg,3.8,High,implement,implement,reject,implement
Facture médecine douce-27701986_1_scale_1.5.jpg,3.9,Low,implement,implement,reject,implement
80b79126-2cfa-41bd-83cd-81fa0efca7c3_facture_lentilles_Leila_ben_amor_REMADI__1_scale_1.5.jpg,3.7,Low,implement,implement,reject,implement
2992af58-6afb-4d25-9071-f2ad3ac22662_OSTEO_12.23_1_scale_1.0.jpg,2.4,Low,reject,reject,reject,implement
819f6faf-d9f3-4668-9000-e414d92c7f41_ROYER_LUDIVINE_FACTURE_OPHTALMO_1_scale_1.5.jpg,3.8,High,implement,implement,reject,implement
f22ss_1_scale_1.5.jpg,3.0,Low,reject,reject,reject,implement
Facture ostéopathe-25143750_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
7321fd47-74f0-44ac-b7d9-26c7bf9bdd84_image_1_scale_0.6.jpg,3.6,Low,implement,implement,reject,implement
Facture ostéopathe-26684295_1_scale_1.5.jpg,3.8,Low,implement,implement,reject,implement
Facture médecine douce-27718494_1_scale_1.5.jpg,3.1,High,implement,reject,reject,implement
Facture ostéopathe-25382451_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
80b79126-2cfa-41bd-83cd-81fa0efca7c3_facture_lentilles_Leila_ben_amor_REMADI_-1.jpg,3.6,Low,implement,implement,reject,implement
Facture ostéopathe-25295241_1_scale_1.5.jpg,3.3,High,implement,implement,reject,implement
1498c5f5-22cf-41d4-87f0-9b295ff481f4_IMG_5659-1.jpg,4.0,Low,implement,implement,reject,implement
534b115b-9997-48c3-bc09-ffb89e5bddf3_Screenshot_20250212_150902_com.google.android.apps.docs_1_scale_1.0.jpg,3.6,Low,implement,implement,reject,implement
Facture ostéopathe-26112692_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
facture-engie-page-3-349x500.jpg,3.7,Low,implement,implement,reject,implement
b32c815a-62d9-40d2-b979-eb10e581f7a9_image-1.jpg,3.8,Low,implement,implement,reject,implement
ba1b499f-199f-4106-bb2c-aac62a67c235_doc00448420250313084147-1.jpg,3.6,High,implement,implement,reject,implement
Facture médecine douce-27778049_1_scale_1.5.jpg,3.7,Low,implement,implement,reject,implement
Facture ostéopathe-27093974_1_scale_1.5.jpg,3.7,Low,implement,implement,reject,implement
Claude_François_-_Certificat_de_scolarité_-_Lycée_français_du_Caire_-_1956_1_scale_1.0.jpg,3.8,Low,implement,implement,reject,implement
4d9dad1f-732c-4580-8899-438c1eae07a3_FACTURE_LUNETTES_1_scale_1.5.jpg,3.6,High,implement,implement,reject,implement
1724226151848OPPON_GEROGES_ORDO_LENT_2023_1_scale_1.5.jpg,2.8,Low,reject,reject,reject,implement
Facture-quittance toutes spécialités-27638903_1_scale_1.5.jpg,3.8,High,implement,implement,reject,implement
Facture médecine douce-27784856_1_scale_1.5.jpg,3.1,High,implement,reject,reject,implement
fd8187e1-b9eb-4727-8041-9fc9e6f1affb_0556_001_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
Facture ostéopathe-1184306_1_scale_1.5.jpg,2.7,Low,reject,reject,reject,implement
Facture ostéopathe-1204645_1_scale_1.5.jpg,3.4,Low,implement,implement,reject,implement
6ee5b983-1954-4a68-9caf-1ea493b5dad4_IMG_6731-1.jpg,3.8,Low,implement,implement,reject,implement
Facture ostéopathe-25848670_2_scale_1.5.jpg,1.7,High,reject,reject,reject,implement
287b78bf-1861-467f-973f-21aad6be26f1_livret_de_famille_Humez_25022024-3_1_scale_1.0.jpg,3.2,Low,implement,reject,reject,implement
8b6539db-21b4-41dc-a27f-db2cd351fe5f_Doc_34-1.jpg,4.0,Low,implement,implement,reject,implement
Facture ostéopathe-25224007_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
Facture-quittance toutes spécialités-27146817_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
d63b7f97-36f9-4f4e-aa4d-64e2efb17678_Mon_scan_1_1_scale_1.5.jpg,3.8,High,implement,implement,reject,implement
Facture ostéopathe-25341458_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
Facture ostéopathe-25073913_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
bb5879ba-ec78-475d-a21b-91ee17d66778_17390362559246788762525665199914_1_scale_0.9.jpg,3.8,Low,implement,implement,reject,implement
Facture des lentilles de contact-27673604_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
91f98d72-999c-4799-b0e5-c918a7ed52b0_17393509620094620772493095873549_1_scale_1.0.jpg,3.5,Low,implement,implement,reject,implement
2062d98b-529c-42d0-87bb-cc131ee36c1b_Factures_Osteo_1_scale_1.5.jpg,4.1,High,implement,implement,implement,implement
e07571f8-3ba4-46fc-a37e-53bd6dd965c7_IMG20250123190152_1_scale_0.6.jpg,3.8,Low,implement,implement,reject,implement
Facture ostéopathe-26398662_1_scale_1.5.jpg,2.9,Low,reject,reject,reject,implement
Facture ostéopathe-1207573_1_scale_1.5.jpg,2.7,Low,reject,reject,reject,implement
Facture des lentilles de contact-27663184_2_scale_1.5.jpg,2.5,High,reject,reject,reject,implement
Facture médecine douce-27647591_1_scale_1.5.jpg,3.2,High,implement,reject,reject,implement
5600db4f-5884-4f54-87ce-56c8b3f5f0a0_Aurelie_GALEOTTI_Ezio__1_scale_1.5.jpg,3.7,High,implement,implement,reject,implement
6ffa2fe1-11be-4516-bd81-bef1824f5f8c_Ordonnances_et_factures_2_scale_1.5.jpg,3.7,Low,implement,implement,reject,implement
Facture médecine douce-27710953_1_scale_1.5.jpg,3.5,Low,implement,implement,reject,implement
17246582258432400585-goubier-sandrine-1835799692661e42158b3a5_1_scale_1.5.jpg,4.0,High,implement,implement,reject,implement
821b6297-8c00-4f88-89a7-a9213c38c3e8_JEAN_PIERRE_001_1_scale_1.0.jpg,3.6,High,implement,implement,reject,implement
Facture des lentilles de contact-27619324_1_scale_1.5.jpg,3.3,High,implement,implement,reject,implement
Facture médecine douce-27708288_1_scale_1.5.jpg,4.0,Low,implement,implement,reject,implement
Facture ostéopathe-26592511_1_scale_1.5.jpg,3.7,High,implement,implement,reject,implement
Facture médecine douce-27776257_1_scale_1.5.jpg,3.3,Low,implement,implement,reject,implement
7b830a57-2131-479c-bf31-1673e7308903_invoice_2025_1_31-1.jpg,3.8,High,implement,implement,reject,implement
Facture ostéopathe-25182408_2_scale_1.5.jpg,1.9,High,reject,reject,reject,implement
Facture médecine douce-27784971_1_scale_1.5.jpg,3.2,Low,implement,reject,reject,implement
c7704de1-820a-44bf-aef9-f7b185f94a26_facture_ophtalmo-2.jpg,3.3,High,implement,implement,reject,implement
bf09a877-0705-4c79-b908-6e8da44e44c7_17490641879424403676372514736136_1_scale_0.6.jpg,3.6,Low,implement,implement,reject,implement
189462d7-2c53-403e-b27f-156f210c29e0_Facture_osteo__1_scale_1.5.jpg,3.6,High,implement,implement,reject,implement
cf4fa87b-649f-4c6b-8a70-3ce5755256fa_Attestation_20250205104300934_1_scale_1.5.jpg,3.7,High,implement,implement,reject,implement
Facture ostéopathe-25265881_1_scale_1.5.jpg,3.5,Low,implement,implement,reject,implement
Facture ostéopathe-26964863_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
Facture ostéopathe-26010134_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
d319c0f9-9a87-4e75-90b2-a92836caf034_20250208_101526_1_scale_0.6.jpg,4.0,High,implement,implement,reject,implement
sncf_e-billet.jpg,3.1,Low,implement,reject,reject,implement
Facture ostéopathe-1102494_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
certificate-1_1_scale_1.0.jpg,4.0,High,implement,implement,reject,implement
Facture ostéopathe-25082790_1_scale_1.5.jpg,3.7,High,implement,implement,reject,implement
c0625556-2cb1-42c8-9433-e31274c121a3_Livret_de_famille_hamidouna-1.jpg,3.1,Low,implement,reject,reject,implement
84ee3980-6f2b-4943-9b11-1996dce1039f_Dossier_lentilles_Stephanie_M_2_scale_1.5.jpg,3.2,Low,implement,reject,reject,implement
Facture des lentilles de contact-27570312_1_scale_1.5.jpg,3.5,Low,implement,implement,reject,implement
7402b29f-bcc9-42ed-a5a9-a8ec6468ad90_17392879320695618357009043029309_1_scale_0.6.jpg,4.0,Low,implement,implement,reject,implement
707771f6-bb3b-4e5e-8d7d-acd584a23009_IMG_20240726_142929_1_scale_1.0.jpg,3.7,Low,implement,implement,reject,implement
Facture ostéopathe-25198581_1_scale_1.5.jpg,3.1,High,implement,reject,reject,implement
Facture médecine douce-27705774_1_scale_1.5.jpg,3.9,High,implement,implement,reject,implement
02c6c398-ddf5-47e9-be88-a27742a2683c_recu-fac-2025-02-002979_1_scale_1.5.jpg,3.8,High,implement,implement,reject,implement
Facture médecine douce-27780823_1_scale_1.5.jpg,3.9,Low,implement,implement,reject,implement
803f61ed-759c-4773-90f2-d8737ef911ab_image_1_scale_0.6.jpg,3.9,Low,implement,implement,reject,implement
881d86b7-5bdb-4a16-bcbc-57202e0879b1_osteo_fevrier_2025_1_scale_1.0.jpg,3.8,Low,implement,implement,reject,implement
imageaaaaaaaafddddddddddfgdaafds_1_scale_1.0.jpg,3.6,Low,implement,implement,reject,implement
17243973662012024.04.16_-_Osteo_Elrik_1_scale_0.9.jpg,3.2,Low,implement,reject,reject,implement
Facture médecine douce-27760177_1_scale_1.5.jpg,3.9,Low,implement,implement,reject,implement
644c17e0-cced-46f8-87e7-231c6ac0f5b5_ostheo_04.02.25_1_scale_1.5.jpg,3.6,Low,implement,implement,reject,implement
8794ba0a-5d58-4d01-a1be-71f7d5c4bfe2_IMG_20250207_185936_1_scale_0.6.jpg,4.0,High,implement,implement,reject,implement
Facture des lentilles de contact-27621196_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
879cf76a-68c1-40d7-b444-0ff3341c97de_facture-zami-isabelle-20250130-1703_1-1.jpg,3.7,High,implement,implement,reject,implement
ticket-PAYFIP0000000014966980-1.jpg,3.9,High,implement,implement,reject,implement
c865b3cf-c251-465d-97e2-ada7a618dc56_Numerisation_20250207_1_scale_1.0.jpg,3.8,High,implement,implement,reject,implement
Facture ostéopathe-25182408_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
Facture des lentilles de contact-27551187_1_scale_1.5.jpg,3.7,Low,implement,implement,reject,implement
Facture médecine douce-27705389_1_scale_1.5.jpg,3.7,High,implement,implement,reject,implement
01f6cc06-5720-4836-a490-1521aa928049_image_1_scale_0.6.jpg,3.5,Low,implement,implement,reject,implement
Facture médecine douce-27700785_1_scale_1.5.jpg,3.2,High,implement,reject,reject,implement
bdb308da-16f5-4370-b1a4-8ffe4f063d84_2025-02-06-13-21-14-309_1_scale_0.6.jpg,4.0,Low,implement,implement,reject,implement
8f0e72ca-64e5-4797-87bc-9378b842433a_CF_1676107_2_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
03deb470-7e1b-4ef6-9c03-5e2c4f9aa83d_facture_2023-20-13_1_scale_1.5.jpg,3.8,High,implement,implement,reject,implement
Facture ostéopathe-25375641_2_scale_1.5.jpg,2.7,High,reject,reject,reject,implement
Facture médecine douce-27701380_1_scale_1.5.jpg,3.6,High,implement,implement,reject,implement
d5a8f5e5-7755-4791-910a-9c4079fa07f4_Facture_osteopathe_Madame_Gregoire_290125_1_scale_1.5.jpg,2.7,Low,reject,reject,reject,implement
Facture ostéopathe-25021617_1_scale_1.5.jpg,3.3,High,implement,implement,reject,implement
Facture ostéopathe-1210226_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
1724397366263FACTURES_OSTEOPATHE_1_scale_1.5.jpg,2.8,Low,reject,reject,reject,implement
b14402b2-1846-4abb-b17e-31a538802ae8_Facture_Osteopathe_10022025__1_scale_1.5.jpg,3.8,High,implement,implement,reject,implement
0785b11d-69b5-4f5f-b75d-9caf82642652_LENTILLES_1_scale_1.0.jpg,3.7,Low,implement,implement,reject,implement
72347d5c-1c18-4a42-8b6c-f0a365dbaf97_FACTURE_N_14_1_scale_1.5.jpg,2.5,Low,reject,reject,reject,implement
Attestation d'emploi-1_1_scale_1.0.jpg,3.9,High,implement,implement,reject,implement
588bd118-1770-4c2a-8d86-a6a6cbed79b2_osteopathe_1_scale_1.5.jpg,3.9,Low,implement,implement,reject,implement
Facture médecine douce-27701076_1_scale_1.5.jpg,2.9,Low,reject,reject,reject,implement
Facture ostéopathe-1183991_1_scale_1.5.jpg,2.6,Low,reject,reject,reject,implement
1724399050337CamScanner_24-10-2023_16.211_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
Extrait acte de naissance - 26773427.jpg,3.6,High,implement,implement,reject,implement
Facture ostéopathe-26141775_1_scale_1.5.jpg,3.4,Low,implement,implement,reject,implement
c052b9e0-c0d4-473f-93a9-a5dc396a0d86_Facture_ophtalmologique_-1.jpg,3.1,High,implement,reject,reject,implement
88248db2-efbd-42c8-aacf-4e32f2b5b309_17392731219852541052997326186649_1_scale_0.6.jpg,3.6,Low,implement,implement,reject,implement
Facture ostéopathe-25292676_1_scale_1.5.jpg,3.2,High,implement,reject,reject,implement
8e86f61e-284f-4984-84ba-4de5883b0bc8_recu-nh-2025-02-015583_1_scale_1.5.jpg,3.8,High,implement,implement,reject,implement
Facture-quittance toutes spécialités-27396735_1_scale_1.5.jpg,3.7,High,implement,implement,reject,implement
Facture médecine douce-27753021_3_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
aze_cargmoe017762-61_001_1_scale_1.0.jpg,3.6,Low,implement,implement,reject,implement
48e19752-3534-4539-8905-e09bdeb9fddd_CamScanner_11-02-2025_21.51_1_1_scale_1.0.jpg,3.6,Low,implement,implement,reject,implement
Facture ostéopathe-25847017_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
1724156469378osteopathe_renau_anais_le_31-07-2024_1_scale_1.5.jpg,3.6,High,implement,implement,reject,implement
Facture ostéopathe-26699279_1_scale_1.5.jpg,3.4,Low,implement,implement,reject,implement
b46e8411-29d3-44b6-ae65-55f11bf360bd_FACTURE_OCULISTE_JANE-1.jpg,3.4,High,implement,implement,reject,implement
7ad6d85f-7245-4c05-8c79-512ed13fe0d5_lunettes_001-1.jpg,3.1,Low,implement,reject,reject,implement
5dab2435-c975-40bc-89d4-fadf59c19553_image_1_scale_0.6.jpg,3.8,High,implement,implement,reject,implement
Facture ostéopathe-25198581_2_scale_1.5.jpg,2.0,Low,reject,reject,reject,implement
1724399050372FA_24-1136_1_scale_1.5.jpg,3.8,High,implement,implement,reject,implement
44f39110-8f97-415d-8cc1-989f0a6df226_Ostheo_22_01_25_1_scale_1.5.jpg,2.6,Low,reject,reject,reject,implement
8fffd4ea-784b-49df-9f7e-780eed5664c8_facturation_osteo-1_1_scale_1.5.jpg,3.8,High,implement,implement,reject,implement
Facture médecine douce-27776613_1_scale_1.5.jpg,2.5,Low,reject,reject,reject,implement
3f09fc00-ffd5-498a-adb8-b6805519ad3a_20250212_133526_1_scale_0.6.jpg,4.0,Low,implement,implement,reject,implement
9838138f-ae12-4664-831e-ae5f0b9c14fb_IMG_5959-1.jpg,3.4,Low,implement,implement,reject,implement
Facture des lentilles de contact-27719018_1_scale_1.5.jpg,3.9,Low,implement,implement,reject,implement
Facture médecine douce-27703164_1_scale_1.5.jpg,3.1,Low,implement,reject,reject,implement
cc0c0b33-1a94-469b-bd88-ca534e257d33_Osteo_1_scale_1.5.jpg,3.6,High,implement,implement,reject,implement
8c3abdc3-796f-4764-9cc8-4da2481f36e8_IMG_2534_1_scale_0.6.jpg,4.0,High,implement,implement,reject,implement
Facture des lentilles de contact-27620389_1_scale_1.5.jpg,3.6,High,implement,implement,reject,implement
DDE prestation Facture des lentilles de contact-26751453_1_scale_1.5.jpg,3.8,High,implement,implement,reject,implement
Facture ostéopathe-1078555_1_scale_1.5.jpg,3.9,High,implement,implement,reject,implement
ce769ca9-924b-4355-bb1f-ce98c6a7049b_IMG_5741_1_scale_1.0.jpg,3.7,High,implement,implement,reject,implement
RF MO ODO 2018 2 8.jpg,3.5,Low,implement,implement,reject,implement
DDE prestation Facture des lentilles de contact-26733889_1_scale_1.5.jpg,3.5,Low,implement,implement,reject,implement
172415667786117241475973227470455758207037834_1_scale_1.0.jpg,3.9,High,implement,implement,reject,implement
0c9e3552-1f5f-4779-8c8b-1481c6b7ab2b_20250113_092847-1.jpg,3.6,Low,implement,implement,reject,implement
1724425079171Facture_PSY_11042024_1_scale_1.0.jpg,3.6,Low,implement,implement,reject,implement
Facture ostéopathe-26349654_1_scale_1.5.jpg,3.3,Low,implement,implement,reject,implement
64fa4c19-efa4-48f1-acf8-8c2e8f573b8b_Facture_osteopathe__1_scale_1.5.jpg,3.4,Low,implement,implement,reject,implement
1724397125682facture_1_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
17b264a2-4881-49a4-8326-48ace17dd86f_factures_ophtalmo_3_scale_1.5.jpg,3.5,High,implement,implement,reject,implement
484d05c2-b89b-4ec0-8968-9ae6a5360f6a_DetailDesPaiements_1_scale_1.5.jpg,3.7,High,implement,implement,reject,implement
1724226587979Seances_ostheo_02_1_scale_1.5.jpg,2.6,Low,reject,reject,reject,implement
a593830c-dcbb-4553-860f-b0925a4c30ef_image-1.jpg,3.7,Low,implement,implement,reject,implement
Facture ostéopathe-1062996_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
Facture ostéopathe-26595219_2_scale_1.5.jpg,2.7,High,reject,reject,reject,implement
b86e78c9-db57-42d0-ab4e-5c3175228663_20250207_134758_1_scale_0.6.jpg,4.0,Low,implement,implement,reject,implement
287b78bf-1861-467f-973f-21aad6be26f1_livret_de_famille_Humez_25022024-2_1_scale_1.0.jpg,3.4,Low,implement,implement,reject,implement
de6a66cd-d729-479c-a119-8b9e442702db_Screenshot_20250227_112521_Gallery-1.jpg,3.4,High,implement,implement,reject,implement
Facture ostéopathe-1148278_1_scale_1.5.jpg,3.6,High,implement,implement,reject,implement
Untitleda02d1dfdad-50111dfafdfd.jpg,4.0,High,implement,implement,reject,implement
Facture ostéopathe-25279751_1_scale_1.5.jpg,3.4,High,implement,implement,reject,implement
Extrait acte de naissance - 27029579.jpg,3.2,Low,implement,reject,reject,implement
a90d5fa1-fca8-4995-b894-aff2e2449ee4_20250207_183312_1_scale_0.6.jpg,3.9,Low,implement,implement,reject,implement
1 filename deqa_score label decision_f1 decision_acc decision_prec decision_rec
2 ffc129de-c82b-4c0b-8ab8-2941fd28cda9_Facture_opticien-2.jpg 3.6 High implement implement reject implement
3 9421b4f1-e9f7-42ea-8d9b-833361b16a20_image_1_scale_0.6.jpg 3.8 Low implement implement reject implement
4 Facture ostéopathe-26908261_1_scale_1.5.jpg 3.4 High implement implement reject implement
5 803f61ed-759c-4773-90f2-d8737ef911ab_image-1.jpg 3.9 Low implement implement reject implement
6 72cb658b-3239-4479-918d-aac53bc4a552_Facture_ophtalmo_14-01-2025-1.jpg 3.5 High implement implement reject implement
7 Facture ostéopathe-26761886_1_scale_1.5.jpg 3.0 Low reject reject reject implement
8 Facture médecine douce-27778240_1_scale_1.5.jpg 2.7 Low reject reject reject implement
9 8f0e72ca-64e5-4797-87bc-9378b842433a_CF_1676107-2.jpg 3.5 High implement implement reject implement
10 b6140557-8c64-41b4-a6ea-bdcf88e0302e_IMG_20250210_155359_1_scale_1.0.jpg 3.3 Low implement implement reject implement
11 34918269-15fd-4e3d-9180-659530a82d35_OSTEO_01.25_1_scale_1.0.jpg 3.2 Low implement reject reject implement
12 DDE prestation Facture des lentilles de contact-26772418_2_scale_1.5.jpg 2.5 High reject reject reject implement
13 3500ba97-9402-46c4-a016-3a4abe35da60_Facture_osteo_1_2025_1_scale_1.5.jpg 3.5 Low implement implement reject implement
14 6c311fa0-a4c5-435f-81c6-7dec91d04978_FACTURE_POTARD_-_BENEDET_1_scale_1.0.jpg 4.1 Low implement implement implement implement
15 Facture-quittance toutes spécialités-27234926_1_scale_1.5.jpg 2.8 Low reject reject reject implement
16 2f042a0e-e23e-4e4a-af6d-9b013f1509bd_facture_ostheo_1_1_scale_1.5.jpg 3.1 Low implement reject reject implement
17 Facture médecine douce-27701675_1_scale_1.5.jpg 3.5 High implement implement reject implement
18 Magasinier-Exemple-de-CV_1_scale_0.7.jpg 4.1 High implement implement implement implement
19 Promesse-dembauche-212x300.jpg 2.7 Low reject reject reject implement
20 141f7ccc-37ab-4da5-9788-80a27e819b8b_Feuilles_de_soins_Psychologue_x2-2.jpg 3.7 Low implement implement reject implement
21 Facture des lentilles de contact-27671269_1_scale_1.5.jpg 3.4 High implement implement reject implement
22 ce6ed73c-50e6-4684-9d91-26eba210ba43_Feuille_de_soins_Ostheo_2_scale_1.5.jpg 3.6 Low implement implement reject implement
23 modele-bon-de-livraison-1.jpg 3.9 High implement implement reject implement
24 c64ad8f0-0d5a-4a5b-aec5-62ec44099520_Screenshot_20250211_100040_Gallery_1_scale_1.0.jpg 3.9 Low implement implement reject implement
25 77c1b3c3-234d-4431-8675-a5c1d12053e0_osteopathe_MOREAU_Coralie_10-02-25_1_scale_1.5.jpg 2.6 Low reject reject reject implement
26 DDE prestation Facture des lentilles de contact-26740699_1_scale_1.5.jpg 3.6 Low implement implement reject implement
27 ffc129de-c82b-4c0b-8ab8-2941fd28cda9_Facture_opticien_1_scale_1.5.jpg 3.9 High implement implement reject implement
28 mobilenew2.jpg 3.6 Low implement implement reject implement
29 a13a6613-da2d-48b7-96ef-412ba5a88af0_Factures_Clemence__1_scale_1.5.jpg 3.7 High implement implement reject implement
30 043bf393-055f-451c-ba6f-f01cac5964f0_17370239165192445587441836799654_1_scale_0.6.jpg 3.7 Low implement implement reject implement
31 4c7209da-d83b-416e-b7a2-2d3e409ad598_Schneider_Fred_250213_110050_1_scale_1.5.jpg 3.9 High implement implement reject implement
32 Facture ostéopathe-25233927_1_scale_1.5.jpg 3.5 High implement implement reject implement
33 Facture ostéopathe-25246953_1_scale_1.5.jpg 3.6 High implement implement reject implement
34 Facture ostéopathe-26112050_1_scale_1.5.jpg 3.0 Low reject reject reject implement
35 Facture médecine douce-27702201_1_scale_1.5.jpg 3.6 Low implement implement reject implement
36 51c8093e-d8b7-4ac2-a57b-b0e7e8797143_20250206_111519_1_scale_1.0.jpg 3.8 High implement implement reject implement
37 Facture médecine douce-27701986_1_scale_1.5.jpg 3.9 Low implement implement reject implement
38 80b79126-2cfa-41bd-83cd-81fa0efca7c3_facture_lentilles_Leila_ben_amor_REMADI__1_scale_1.5.jpg 3.7 Low implement implement reject implement
39 2992af58-6afb-4d25-9071-f2ad3ac22662_OSTEO_12.23_1_scale_1.0.jpg 2.4 Low reject reject reject implement
40 819f6faf-d9f3-4668-9000-e414d92c7f41_ROYER_LUDIVINE_FACTURE_OPHTALMO_1_scale_1.5.jpg 3.8 High implement implement reject implement
41 f22ss_1_scale_1.5.jpg 3.0 Low reject reject reject implement
42 Facture ostéopathe-25143750_1_scale_1.5.jpg 3.5 High implement implement reject implement
43 7321fd47-74f0-44ac-b7d9-26c7bf9bdd84_image_1_scale_0.6.jpg 3.6 Low implement implement reject implement
44 Facture ostéopathe-26684295_1_scale_1.5.jpg 3.8 Low implement implement reject implement
45 Facture médecine douce-27718494_1_scale_1.5.jpg 3.1 High implement reject reject implement
46 Facture ostéopathe-25382451_1_scale_1.5.jpg 3.4 High implement implement reject implement
47 80b79126-2cfa-41bd-83cd-81fa0efca7c3_facture_lentilles_Leila_ben_amor_REMADI_-1.jpg 3.6 Low implement implement reject implement
48 Facture ostéopathe-25295241_1_scale_1.5.jpg 3.3 High implement implement reject implement
49 1498c5f5-22cf-41d4-87f0-9b295ff481f4_IMG_5659-1.jpg 4.0 Low implement implement reject implement
50 534b115b-9997-48c3-bc09-ffb89e5bddf3_Screenshot_20250212_150902_com.google.android.apps.docs_1_scale_1.0.jpg 3.6 Low implement implement reject implement
51 Facture ostéopathe-26112692_1_scale_1.5.jpg 3.4 High implement implement reject implement
52 facture-engie-page-3-349x500.jpg 3.7 Low implement implement reject implement
53 b32c815a-62d9-40d2-b979-eb10e581f7a9_image-1.jpg 3.8 Low implement implement reject implement
54 ba1b499f-199f-4106-bb2c-aac62a67c235_doc00448420250313084147-1.jpg 3.6 High implement implement reject implement
55 Facture médecine douce-27778049_1_scale_1.5.jpg 3.7 Low implement implement reject implement
56 Facture ostéopathe-27093974_1_scale_1.5.jpg 3.7 Low implement implement reject implement
57 Claude_François_-_Certificat_de_scolarité_-_Lycée_français_du_Caire_-_1956_1_scale_1.0.jpg 3.8 Low implement implement reject implement
58 4d9dad1f-732c-4580-8899-438c1eae07a3_FACTURE_LUNETTES_1_scale_1.5.jpg 3.6 High implement implement reject implement
59 1724226151848OPPON_GEROGES_ORDO_LENT_2023_1_scale_1.5.jpg 2.8 Low reject reject reject implement
60 Facture-quittance toutes spécialités-27638903_1_scale_1.5.jpg 3.8 High implement implement reject implement
61 Facture médecine douce-27784856_1_scale_1.5.jpg 3.1 High implement reject reject implement
62 fd8187e1-b9eb-4727-8041-9fc9e6f1affb_0556_001_1_scale_1.5.jpg 3.5 High implement implement reject implement
63 Facture ostéopathe-1184306_1_scale_1.5.jpg 2.7 Low reject reject reject implement
64 Facture ostéopathe-1204645_1_scale_1.5.jpg 3.4 Low implement implement reject implement
65 6ee5b983-1954-4a68-9caf-1ea493b5dad4_IMG_6731-1.jpg 3.8 Low implement implement reject implement
66 Facture ostéopathe-25848670_2_scale_1.5.jpg 1.7 High reject reject reject implement
67 287b78bf-1861-467f-973f-21aad6be26f1_livret_de_famille_Humez_25022024-3_1_scale_1.0.jpg 3.2 Low implement reject reject implement
68 8b6539db-21b4-41dc-a27f-db2cd351fe5f_Doc_34-1.jpg 4.0 Low implement implement reject implement
69 Facture ostéopathe-25224007_1_scale_1.5.jpg 3.5 High implement implement reject implement
70 Facture-quittance toutes spécialités-27146817_1_scale_1.5.jpg 3.4 High implement implement reject implement
71 d63b7f97-36f9-4f4e-aa4d-64e2efb17678_Mon_scan_1_1_scale_1.5.jpg 3.8 High implement implement reject implement
72 Facture ostéopathe-25341458_1_scale_1.5.jpg 3.5 High implement implement reject implement
73 Facture ostéopathe-25073913_1_scale_1.5.jpg 3.4 High implement implement reject implement
74 bb5879ba-ec78-475d-a21b-91ee17d66778_17390362559246788762525665199914_1_scale_0.9.jpg 3.8 Low implement implement reject implement
75 Facture des lentilles de contact-27673604_1_scale_1.5.jpg 3.5 High implement implement reject implement
76 91f98d72-999c-4799-b0e5-c918a7ed52b0_17393509620094620772493095873549_1_scale_1.0.jpg 3.5 Low implement implement reject implement
77 2062d98b-529c-42d0-87bb-cc131ee36c1b_Factures_Osteo_1_scale_1.5.jpg 4.1 High implement implement implement implement
78 e07571f8-3ba4-46fc-a37e-53bd6dd965c7_IMG20250123190152_1_scale_0.6.jpg 3.8 Low implement implement reject implement
79 Facture ostéopathe-26398662_1_scale_1.5.jpg 2.9 Low reject reject reject implement
80 Facture ostéopathe-1207573_1_scale_1.5.jpg 2.7 Low reject reject reject implement
81 Facture des lentilles de contact-27663184_2_scale_1.5.jpg 2.5 High reject reject reject implement
82 Facture médecine douce-27647591_1_scale_1.5.jpg 3.2 High implement reject reject implement
83 5600db4f-5884-4f54-87ce-56c8b3f5f0a0_Aurelie_GALEOTTI_Ezio__1_scale_1.5.jpg 3.7 High implement implement reject implement
84 6ffa2fe1-11be-4516-bd81-bef1824f5f8c_Ordonnances_et_factures_2_scale_1.5.jpg 3.7 Low implement implement reject implement
85 Facture médecine douce-27710953_1_scale_1.5.jpg 3.5 Low implement implement reject implement
86 17246582258432400585-goubier-sandrine-1835799692661e42158b3a5_1_scale_1.5.jpg 4.0 High implement implement reject implement
87 821b6297-8c00-4f88-89a7-a9213c38c3e8_JEAN_PIERRE_001_1_scale_1.0.jpg 3.6 High implement implement reject implement
88 Facture des lentilles de contact-27619324_1_scale_1.5.jpg 3.3 High implement implement reject implement
89 Facture médecine douce-27708288_1_scale_1.5.jpg 4.0 Low implement implement reject implement
90 Facture ostéopathe-26592511_1_scale_1.5.jpg 3.7 High implement implement reject implement
91 Facture médecine douce-27776257_1_scale_1.5.jpg 3.3 Low implement implement reject implement
92 7b830a57-2131-479c-bf31-1673e7308903_invoice_2025_1_31-1.jpg 3.8 High implement implement reject implement
93 Facture ostéopathe-25182408_2_scale_1.5.jpg 1.9 High reject reject reject implement
94 Facture médecine douce-27784971_1_scale_1.5.jpg 3.2 Low implement reject reject implement
95 c7704de1-820a-44bf-aef9-f7b185f94a26_facture_ophtalmo-2.jpg 3.3 High implement implement reject implement
96 bf09a877-0705-4c79-b908-6e8da44e44c7_17490641879424403676372514736136_1_scale_0.6.jpg 3.6 Low implement implement reject implement
97 189462d7-2c53-403e-b27f-156f210c29e0_Facture_osteo__1_scale_1.5.jpg 3.6 High implement implement reject implement
98 cf4fa87b-649f-4c6b-8a70-3ce5755256fa_Attestation_20250205104300934_1_scale_1.5.jpg 3.7 High implement implement reject implement
99 Facture ostéopathe-25265881_1_scale_1.5.jpg 3.5 Low implement implement reject implement
100 Facture ostéopathe-26964863_1_scale_1.5.jpg 3.5 High implement implement reject implement
101 Facture ostéopathe-26010134_1_scale_1.5.jpg 3.4 High implement implement reject implement
102 d319c0f9-9a87-4e75-90b2-a92836caf034_20250208_101526_1_scale_0.6.jpg 4.0 High implement implement reject implement
103 sncf_e-billet.jpg 3.1 Low implement reject reject implement
104 Facture ostéopathe-1102494_1_scale_1.5.jpg 3.5 High implement implement reject implement
105 certificate-1_1_scale_1.0.jpg 4.0 High implement implement reject implement
106 Facture ostéopathe-25082790_1_scale_1.5.jpg 3.7 High implement implement reject implement
107 c0625556-2cb1-42c8-9433-e31274c121a3_Livret_de_famille_hamidouna-1.jpg 3.1 Low implement reject reject implement
108 84ee3980-6f2b-4943-9b11-1996dce1039f_Dossier_lentilles_Stephanie_M_2_scale_1.5.jpg 3.2 Low implement reject reject implement
109 Facture des lentilles de contact-27570312_1_scale_1.5.jpg 3.5 Low implement implement reject implement
110 7402b29f-bcc9-42ed-a5a9-a8ec6468ad90_17392879320695618357009043029309_1_scale_0.6.jpg 4.0 Low implement implement reject implement
111 707771f6-bb3b-4e5e-8d7d-acd584a23009_IMG_20240726_142929_1_scale_1.0.jpg 3.7 Low implement implement reject implement
112 Facture ostéopathe-25198581_1_scale_1.5.jpg 3.1 High implement reject reject implement
113 Facture médecine douce-27705774_1_scale_1.5.jpg 3.9 High implement implement reject implement
114 02c6c398-ddf5-47e9-be88-a27742a2683c_recu-fac-2025-02-002979_1_scale_1.5.jpg 3.8 High implement implement reject implement
115 Facture médecine douce-27780823_1_scale_1.5.jpg 3.9 Low implement implement reject implement
116 803f61ed-759c-4773-90f2-d8737ef911ab_image_1_scale_0.6.jpg 3.9 Low implement implement reject implement
117 881d86b7-5bdb-4a16-bcbc-57202e0879b1_osteo_fevrier_2025_1_scale_1.0.jpg 3.8 Low implement implement reject implement
118 imageaaaaaaaafddddddddddfgdaafds_1_scale_1.0.jpg 3.6 Low implement implement reject implement
119 17243973662012024.04.16_-_Osteo_Elrik_1_scale_0.9.jpg 3.2 Low implement reject reject implement
120 Facture médecine douce-27760177_1_scale_1.5.jpg 3.9 Low implement implement reject implement
121 644c17e0-cced-46f8-87e7-231c6ac0f5b5_ostheo_04.02.25_1_scale_1.5.jpg 3.6 Low implement implement reject implement
122 8794ba0a-5d58-4d01-a1be-71f7d5c4bfe2_IMG_20250207_185936_1_scale_0.6.jpg 4.0 High implement implement reject implement
123 Facture des lentilles de contact-27621196_1_scale_1.5.jpg 3.5 High implement implement reject implement
124 879cf76a-68c1-40d7-b444-0ff3341c97de_facture-zami-isabelle-20250130-1703_1-1.jpg 3.7 High implement implement reject implement
125 ticket-PAYFIP0000000014966980-1.jpg 3.9 High implement implement reject implement
126 c865b3cf-c251-465d-97e2-ada7a618dc56_Numerisation_20250207_1_scale_1.0.jpg 3.8 High implement implement reject implement
127 Facture ostéopathe-25182408_1_scale_1.5.jpg 3.4 High implement implement reject implement
128 Facture des lentilles de contact-27551187_1_scale_1.5.jpg 3.7 Low implement implement reject implement
129 Facture médecine douce-27705389_1_scale_1.5.jpg 3.7 High implement implement reject implement
130 01f6cc06-5720-4836-a490-1521aa928049_image_1_scale_0.6.jpg 3.5 Low implement implement reject implement
131 Facture médecine douce-27700785_1_scale_1.5.jpg 3.2 High implement reject reject implement
132 bdb308da-16f5-4370-b1a4-8ffe4f063d84_2025-02-06-13-21-14-309_1_scale_0.6.jpg 4.0 Low implement implement reject implement
133 8f0e72ca-64e5-4797-87bc-9378b842433a_CF_1676107_2_scale_1.5.jpg 3.5 High implement implement reject implement
134 03deb470-7e1b-4ef6-9c03-5e2c4f9aa83d_facture_2023-20-13_1_scale_1.5.jpg 3.8 High implement implement reject implement
135 Facture ostéopathe-25375641_2_scale_1.5.jpg 2.7 High reject reject reject implement
136 Facture médecine douce-27701380_1_scale_1.5.jpg 3.6 High implement implement reject implement
137 d5a8f5e5-7755-4791-910a-9c4079fa07f4_Facture_osteopathe_Madame_Gregoire_290125_1_scale_1.5.jpg 2.7 Low reject reject reject implement
138 Facture ostéopathe-25021617_1_scale_1.5.jpg 3.3 High implement implement reject implement
139 Facture ostéopathe-1210226_1_scale_1.5.jpg 3.4 High implement implement reject implement
140 1724397366263FACTURES_OSTEOPATHE_1_scale_1.5.jpg 2.8 Low reject reject reject implement
141 b14402b2-1846-4abb-b17e-31a538802ae8_Facture_Osteopathe_10022025__1_scale_1.5.jpg 3.8 High implement implement reject implement
142 0785b11d-69b5-4f5f-b75d-9caf82642652_LENTILLES_1_scale_1.0.jpg 3.7 Low implement implement reject implement
143 72347d5c-1c18-4a42-8b6c-f0a365dbaf97_FACTURE_N_14_1_scale_1.5.jpg 2.5 Low reject reject reject implement
144 Attestation d'emploi-1_1_scale_1.0.jpg 3.9 High implement implement reject implement
145 588bd118-1770-4c2a-8d86-a6a6cbed79b2_osteopathe_1_scale_1.5.jpg 3.9 Low implement implement reject implement
146 Facture médecine douce-27701076_1_scale_1.5.jpg 2.9 Low reject reject reject implement
147 Facture ostéopathe-1183991_1_scale_1.5.jpg 2.6 Low reject reject reject implement
148 1724399050337CamScanner_24-10-2023_16.211_1_scale_1.5.jpg 3.5 High implement implement reject implement
149 Extrait acte de naissance - 26773427.jpg 3.6 High implement implement reject implement
150 Facture ostéopathe-26141775_1_scale_1.5.jpg 3.4 Low implement implement reject implement
151 c052b9e0-c0d4-473f-93a9-a5dc396a0d86_Facture_ophtalmologique_-1.jpg 3.1 High implement reject reject implement
152 88248db2-efbd-42c8-aacf-4e32f2b5b309_17392731219852541052997326186649_1_scale_0.6.jpg 3.6 Low implement implement reject implement
153 Facture ostéopathe-25292676_1_scale_1.5.jpg 3.2 High implement reject reject implement
154 8e86f61e-284f-4984-84ba-4de5883b0bc8_recu-nh-2025-02-015583_1_scale_1.5.jpg 3.8 High implement implement reject implement
155 Facture-quittance toutes spécialités-27396735_1_scale_1.5.jpg 3.7 High implement implement reject implement
156 Facture médecine douce-27753021_3_scale_1.5.jpg 3.5 High implement implement reject implement
157 aze_cargmoe017762-61_001_1_scale_1.0.jpg 3.6 Low implement implement reject implement
158 48e19752-3534-4539-8905-e09bdeb9fddd_CamScanner_11-02-2025_21.51_1_1_scale_1.0.jpg 3.6 Low implement implement reject implement
159 Facture ostéopathe-25847017_1_scale_1.5.jpg 3.4 High implement implement reject implement
160 1724156469378osteopathe_renau_anais_le_31-07-2024_1_scale_1.5.jpg 3.6 High implement implement reject implement
161 Facture ostéopathe-26699279_1_scale_1.5.jpg 3.4 Low implement implement reject implement
162 b46e8411-29d3-44b6-ae65-55f11bf360bd_FACTURE_OCULISTE_JANE-1.jpg 3.4 High implement implement reject implement
163 7ad6d85f-7245-4c05-8c79-512ed13fe0d5_lunettes_001-1.jpg 3.1 Low implement reject reject implement
164 5dab2435-c975-40bc-89d4-fadf59c19553_image_1_scale_0.6.jpg 3.8 High implement implement reject implement
165 Facture ostéopathe-25198581_2_scale_1.5.jpg 2.0 Low reject reject reject implement
166 1724399050372FA_24-1136_1_scale_1.5.jpg 3.8 High implement implement reject implement
167 44f39110-8f97-415d-8cc1-989f0a6df226_Ostheo_22_01_25_1_scale_1.5.jpg 2.6 Low reject reject reject implement
168 8fffd4ea-784b-49df-9f7e-780eed5664c8_facturation_osteo-1_1_scale_1.5.jpg 3.8 High implement implement reject implement
169 Facture médecine douce-27776613_1_scale_1.5.jpg 2.5 Low reject reject reject implement
170 3f09fc00-ffd5-498a-adb8-b6805519ad3a_20250212_133526_1_scale_0.6.jpg 4.0 Low implement implement reject implement
171 9838138f-ae12-4664-831e-ae5f0b9c14fb_IMG_5959-1.jpg 3.4 Low implement implement reject implement
172 Facture des lentilles de contact-27719018_1_scale_1.5.jpg 3.9 Low implement implement reject implement
173 Facture médecine douce-27703164_1_scale_1.5.jpg 3.1 Low implement reject reject implement
174 cc0c0b33-1a94-469b-bd88-ca534e257d33_Osteo_1_scale_1.5.jpg 3.6 High implement implement reject implement
175 8c3abdc3-796f-4764-9cc8-4da2481f36e8_IMG_2534_1_scale_0.6.jpg 4.0 High implement implement reject implement
176 Facture des lentilles de contact-27620389_1_scale_1.5.jpg 3.6 High implement implement reject implement
177 DDE prestation Facture des lentilles de contact-26751453_1_scale_1.5.jpg 3.8 High implement implement reject implement
178 Facture ostéopathe-1078555_1_scale_1.5.jpg 3.9 High implement implement reject implement
179 ce769ca9-924b-4355-bb1f-ce98c6a7049b_IMG_5741_1_scale_1.0.jpg 3.7 High implement implement reject implement
180 RF MO ODO 2018 2 8.jpg 3.5 Low implement implement reject implement
181 DDE prestation Facture des lentilles de contact-26733889_1_scale_1.5.jpg 3.5 Low implement implement reject implement
182 172415667786117241475973227470455758207037834_1_scale_1.0.jpg 3.9 High implement implement reject implement
183 0c9e3552-1f5f-4779-8c8b-1481c6b7ab2b_20250113_092847-1.jpg 3.6 Low implement implement reject implement
184 1724425079171Facture_PSY_11042024_1_scale_1.0.jpg 3.6 Low implement implement reject implement
185 Facture ostéopathe-26349654_1_scale_1.5.jpg 3.3 Low implement implement reject implement
186 64fa4c19-efa4-48f1-acf8-8c2e8f573b8b_Facture_osteopathe__1_scale_1.5.jpg 3.4 Low implement implement reject implement
187 1724397125682facture_1_scale_1.5.jpg 3.5 High implement implement reject implement
188 17b264a2-4881-49a4-8326-48ace17dd86f_factures_ophtalmo_3_scale_1.5.jpg 3.5 High implement implement reject implement
189 484d05c2-b89b-4ec0-8968-9ae6a5360f6a_DetailDesPaiements_1_scale_1.5.jpg 3.7 High implement implement reject implement
190 1724226587979Seances_ostheo_02_1_scale_1.5.jpg 2.6 Low reject reject reject implement
191 a593830c-dcbb-4553-860f-b0925a4c30ef_image-1.jpg 3.7 Low implement implement reject implement
192 Facture ostéopathe-1062996_1_scale_1.5.jpg 3.4 High implement implement reject implement
193 Facture ostéopathe-26595219_2_scale_1.5.jpg 2.7 High reject reject reject implement
194 b86e78c9-db57-42d0-ab4e-5c3175228663_20250207_134758_1_scale_0.6.jpg 4.0 Low implement implement reject implement
195 287b78bf-1861-467f-973f-21aad6be26f1_livret_de_famille_Humez_25022024-2_1_scale_1.0.jpg 3.4 Low implement implement reject implement
196 de6a66cd-d729-479c-a119-8b9e442702db_Screenshot_20250227_112521_Gallery-1.jpg 3.4 High implement implement reject implement
197 Facture ostéopathe-1148278_1_scale_1.5.jpg 3.6 High implement implement reject implement
198 Untitleda02d1dfdad-50111dfafdfd.jpg 4.0 High implement implement reject implement
199 Facture ostéopathe-25279751_1_scale_1.5.jpg 3.4 High implement implement reject implement
200 Extrait acte de naissance - 27029579.jpg 3.2 Low implement reject reject implement
201 a90d5fa1-fca8-4995-b894-aff2e2449ee4_20250207_183312_1_scale_0.6.jpg 3.9 Low implement implement reject implement

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -0,0 +1,50 @@
{
"positive_definition": "HIGH when score >= threshold",
"best_thresholds": {
"f1": {
"threshold": 3.1,
"value": 0.6886446886446885,
"confusion": {
"TP": 94,
"FP": 79,
"FN": 6,
"TN": 21
}
},
"accuracy": {
"threshold": 3.3,
"value": 0.595,
"confusion": {
"TP": 87,
"FP": 68,
"FN": 13,
"TN": 32
}
},
"precision": {
"threshold": 4.1,
"value": 0.6666666666666666,
"confusion": {
"TP": 2,
"FP": 1,
"FN": 98,
"TN": 99
}
},
"recall": {
"threshold": 1.7,
"value": 1.0,
"confusion": {
"TP": 100,
"FP": 100,
"FN": 0,
"TN": 0
}
}
},
"counts": {
"total": 200,
"positives": 100,
"negatives": 100
}
}

View File

@@ -10,3 +10,4 @@ tqdm==4.65.0
torch torch
transformers transformers
pyiqa pyiqa
openpyxl==3.1.5

View File

@@ -1,81 +0,0 @@
3.9 - image (9)_0.png
3.9 - ITE55351156_Passeport_Completed_0.png
3.8 - image (3)_0.png
3.8 - image (18)_1.png
3.8 - image (25)_0.png
3.8 - image (2)_0.png
3.7 - image (6)_6.png
3.7 - ITE55351372_RÉPUBLIQUE_FRANÇAISE_Completed_0.png
3.7 - ITE55354891_image_Completed_0.png
3.7 - image (23)_0.png
3.7 - image (21)_0.png
3.7 - image (15)_0.png
3.7 - ITE55354550_20250728_113359_Completed_0.png
3.7 - image (6)_2.png
3.7 - image (7)_1.png
3.6 - ITE55348016_image_Completed_0.png
3.6 - image (6)_0.png
3.6 - ITE55343297_20250729_172626_Completed_0.png
3.6 - image (29)_0.png
3.6 - image (17)_0.png
3.5 - ITE55340822_passeport_pascal_2028_Completed_0.png
3.5 - image (27)_0.png
3.5 - image (18)_0.png
3.5 - image (24)_0.png
3.5 - image (12)_0.png
3.5 - image (6)_1.png
3.4 - ITE55348904_cni_verso_0.png
3.4 - image (7)_0.png
3.4 - image (6)_3.png
3.4 - image (22)_2.png
3.3 - ITE55352984_CNI_Completed_1.png
3.3 - image (30)_0.png
3.3 - image (12)_1.png
3.3 - ITE55341271_C_I_face_Completed_0.png
3.3 - ITE55351372_RÉPUBLIQUE_FRANÇAISE_Completed_1.png
3.3 - ITE55343716_CNI_Completed_0.png
3.2 - image (17)_1.png
3.2 - ITE55341677_2023_-_CNI_Recto-Verso_Hassina_0.png
3.2 - image (22)_0.png
3.1 - image (26)_0.png
3.1 - image (16)_0.png
3.1 - image (18)_2.png
3.1 - image (18)_3.png
3.1 - image (19)_1.png
3.1 - ITE55343716_CNI_Completed_1.png
3.1 - ITE55352984_CNI_Completed_0.png
3.1 - ITE55347926_DHONDT_CNI_0.png
3.0 - image (11)_1.png
3.0 - image_0_0.png
3.0 - image (1)_0.png
3.0 - image (22)_3.png
3.0 - ITE55336627_PASSEPORT_Abasse_GUEYE__Completed_0.png
3.0 - image (28)_0.png
2.9 - image (6)_4.png
2.9 - image (22)_1.png
2.9 - image (4)_0.png
2.9 - image (28)_1.png
2.9 - image (10)_1.png
2.9 - ITE55348464_IMG-20250721-WA0000_Completed_0.png
2.9 - image (11)_0.png
2.9 - image (10)_0.png
2.9 - ITE55340318_ID_kat__1__Completed_0.png
2.8 - image (5)_0.png
2.8 - ITE55347865_Snapchat-715567440_Completed_0.png
2.8 - image (6)_5.png
2.8 - image (13)_0.png
2.8 - ITE55346966_17537774579547958575370370624241_Completed_0.png
2.8 - ITE55347866_Snapchat-1551171803_Completed_0.png
2.7 - ITE55350967_PLI_INCONNU_-_ADH_625302_42296806_DMS_0.png
2.7 - image (8)_0.png
2.7 - image (31)_0.png
2.7 - ITE55348878_CNI_RECTO_0.png
2.7 - image (1)_1.png
2.7 - image (13)_1.png
2.7 - image (14)_0.png
2.6 - ITE55349793_2_em_CNI_CHASTAING__0.png
2.6 - image (19)_0.png
2.4 - ITE55351087_PLI_INCONNU_-_ADH_625120_42296075_DMS_0.png
2.2 - ITE55352532_PLI_INCONNU_-_ADH_625374_42297046_DMS_0.png
2.0 - ITE55351128_PLI_INCONNU_-_ADH_625123_42296103_DMS_0.png
1.9 - ITE55351128_PLI_INCONNU_-_ADH_625123_42296103_DMS_1.png

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,327 @@
#!/usr/bin/env python3
"""
Threshold analysis for DeQA scores vs. human labels (High/Low).
Inputs (defaults for facture task):
- results/facture.txt # lines like: "4.2 - filename.jpg"
- data/facture/labels.csv # columns: filename,label with label in {High,Low}
Outputs:
- results/facture_thresholds_summary.json # best thresholds for accuracy/precision/recall/F1
- results/facture_metric_curves.png # metrics vs threshold
- results/facture_score_distributions.png # score histograms by label
- results/facture_decisions.csv # per-image decisions at each operating point
"""
from __future__ import annotations
import argparse
import json
from pathlib import Path
from typing import Dict, List, Tuple
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
def read_deqa_results_txt(path: Path) -> pd.DataFrame:
"""Read TXT results of the form "<score> - <filename>" into a DataFrame."""
rows: List[Dict[str, str | float]] = []
with open(path, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if not line:
continue
# Expect pattern: "<score> - <filename>"
try:
score_part, fname = line.split(" - ", 1)
score = float(score_part)
rows.append({"filename": fname, "score": score})
except Exception:
# Skip malformed lines silently
continue
df = pd.DataFrame(rows)
if not df.empty:
df["filename"] = df["filename"].astype(str)
df["stem"] = df["filename"].apply(lambda x: Path(x).stem.lower())
return df
def read_labels_csv(path: Path) -> pd.DataFrame:
"""Read labels CSV with columns: filename,label (High/Low)."""
df = pd.read_csv(path)
# Normalize
df["filename"] = df["filename"].astype(str)
df["label"] = df["label"].astype(str).str.strip().str.capitalize()
# Map High->1, Low->0
label_map = {"High": 1, "Low": 0}
df["y_true"] = df["label"].map(label_map)
df["stem"] = df["filename"].apply(lambda x: Path(x).stem.lower())
return df[["filename", "label", "y_true", "stem"]]
def confusion_from_threshold(scores: np.ndarray, y_true: np.ndarray, thr: float) -> Tuple[int, int, int, int]:
pred = (scores >= thr).astype(int)
tp = int(np.sum((pred == 1) & (y_true == 1)))
fp = int(np.sum((pred == 1) & (y_true == 0)))
fn = int(np.sum((pred == 0) & (y_true == 1)))
tn = int(np.sum((pred == 0) & (y_true == 0)))
return tp, fp, fn, tn
def metric_from_confusion(tp: int, fp: int, fn: int, tn: int, metric: str) -> float:
if metric == "accuracy":
denom = tp + fp + fn + tn
return (tp + tn) / denom if denom > 0 else 0.0
if metric == "precision":
denom = tp + fp
return tp / denom if denom > 0 else 0.0
if metric == "recall":
denom = tp + fn
return tp / denom if denom > 0 else 0.0
if metric == "f1":
p_denom = tp + fp
r_denom = tp + fn
precision = tp / p_denom if p_denom > 0 else 0.0
recall = tp / r_denom if r_denom > 0 else 0.0
denom = precision + recall
return (2 * precision * recall / denom) if denom > 0 else 0.0
raise ValueError(f"Unsupported metric: {metric}")
def pick_threshold(scores: np.ndarray, y_true: np.ndarray, metric: str = "f1") -> Tuple[float, float, Dict[str, int]]:
thr_candidates = np.unique(scores)
best_thr: float | None = None
best_val: float = -1.0
best_conf: Tuple[int, int, int, int] | None = None
for t in thr_candidates:
tp, fp, fn, tn = confusion_from_threshold(scores, y_true, t)
val = metric_from_confusion(tp, fp, fn, tn, metric)
# Tie-breaker: prefer higher threshold if metric ties (safer for downstream)
if (val > best_val) or (np.isclose(val, best_val) and (best_thr is None or t > best_thr)):
best_val = val
best_thr = t
best_conf = (tp, fp, fn, tn)
assert best_thr is not None and best_conf is not None
tp, fp, fn, tn = best_conf
return float(best_thr), float(best_val), {"TP": tp, "FP": fp, "FN": fn, "TN": tn}
def compute_metric_curves(scores: np.ndarray, y_true: np.ndarray) -> pd.DataFrame:
data: List[Dict[str, float]] = []
for t in np.unique(scores):
tp, fp, fn, tn = confusion_from_threshold(scores, y_true, t)
row = {
"threshold": float(t),
"accuracy": metric_from_confusion(tp, fp, fn, tn, "accuracy"),
"precision": metric_from_confusion(tp, fp, fn, tn, "precision"),
"recall": metric_from_confusion(tp, fp, fn, tn, "recall"),
"f1": metric_from_confusion(tp, fp, fn, tn, "f1"),
"TP": tp,
"FP": fp,
"FN": fn,
"TN": tn,
}
data.append(row)
return pd.DataFrame(data).sort_values("threshold").reset_index(drop=True)
def plot_distributions(df: pd.DataFrame, out_path: Path) -> None:
plt.figure(figsize=(8, 5))
sns.histplot(data=df, x="score", hue="label", bins=30, kde=True, stat="density", common_norm=False)
plt.title("DeQA score distributions by label")
plt.xlabel("DeQA score")
plt.ylabel("Density")
plt.tight_layout()
plt.savefig(out_path, dpi=150)
plt.close()
def plot_metric_curves(curve_df: pd.DataFrame, out_path: Path) -> None:
plt.figure(figsize=(8, 5))
for metric in ["accuracy", "precision", "recall", "f1"]:
plt.plot(curve_df["threshold"], curve_df[metric], label=metric)
plt.xlabel("Threshold (score >= t => HIGH)")
plt.ylabel("Metric value")
plt.ylim(0.0, 1.05)
plt.title("Metrics vs threshold")
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig(out_path, dpi=150)
plt.close()
def plot_sorted_scores_with_threshold(df: pd.DataFrame, thr: float, out_path: Path) -> None:
tmp = df.sort_values("score").reset_index(drop=True)
x = np.arange(len(tmp))
y = tmp["score"].to_numpy()
plt.figure(figsize=(9, 4))
plt.scatter(x, y, s=6, alpha=0.6)
plt.axhline(thr, color="red", linestyle="--", label=f"threshold={thr:.3f}")
plt.xlabel("Images sorted by score")
plt.ylabel("DeQA score")
plt.title("Sorted scores with operating threshold")
plt.legend()
plt.tight_layout()
plt.savefig(out_path, dpi=150)
plt.close()
def plot_pr_curve(curves: pd.DataFrame, out_path: Path) -> None:
plt.figure(figsize=(6, 5))
plt.plot(curves["recall"], curves["precision"], marker="o", ms=3, lw=1)
plt.xlabel("Recall")
plt.ylabel("Precision")
plt.title("Precision-Recall across thresholds")
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig(out_path, dpi=150)
plt.close()
def plot_roc_like(curves: pd.DataFrame, out_path: Path) -> None:
# TPR=recall, FPR=FP/(FP+TN)
denom = (curves["FP"] + curves["TN"]).replace(0, np.nan)
fpr = curves["FP"] / denom
tpr = curves["recall"]
plt.figure(figsize=(6, 5))
plt.plot(fpr.fillna(0), tpr, marker="o", ms=3, lw=1)
plt.xlabel("False Positive Rate (FPR)")
plt.ylabel("True Positive Rate (TPR)")
plt.title("ROC-like curve across thresholds")
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig(out_path, dpi=150)
plt.close()
def plot_confusion_heatmap(tp: int, fp: int, fn: int, tn: int, out_path: Path) -> None:
cm = np.array([[tp, fp],[fn, tn]])
plt.figure(figsize=(4, 4))
sns.heatmap(cm, annot=True, fmt="d", cmap="Blues", cbar=False,
xticklabels=["Pred High","Pred Low"], yticklabels=["True High","True Low"])
plt.title("Confusion matrix at operating threshold")
plt.tight_layout()
plt.savefig(out_path, dpi=150)
plt.close()
def main() -> None:
parser = argparse.ArgumentParser(description="Threshold analysis for DeQA scores vs labels")
parser.add_argument("--scores", type=str, default="results/facture.txt", help="Path to deqa scores txt")
parser.add_argument("--labels", type=str, default="data/facture/labels.csv", help="Path to labels csv")
parser.add_argument("--outdir", type=str, default="results", help="Directory to write outputs")
parser.add_argument("--sample-per-class", type=int, default=0,
help="If >0, randomly sample N High and N Low for a quick benchmark")
parser.add_argument("--seed", type=int, default=42, help="Random seed for sampling")
args = parser.parse_args()
scores_path = Path(args.scores)
labels_path = Path(args.labels)
outdir = Path(args.outdir)
outdir.mkdir(parents=True, exist_ok=True)
# Load
df_scores = read_deqa_results_txt(scores_path)
df_labels = read_labels_csv(labels_path)
# Join on lowercase stem to tolerate extension differences
df = df_scores.merge(df_labels, on="stem", how="inner", suffixes=("_score", "_label"))
# Prefer label-side filename when available
df["filename"] = df["filename_label"].where(df["filename_label"].notna(), df["filename_score"])
df.drop(columns=[c for c in ["filename_label", "filename_score"] if c in df.columns], inplace=True)
if df.empty:
raise RuntimeError("No overlap between scores and labels. Check filenames.")
# Optional sampling per class
if args.sample_per_class and args.sample_per_class > 0:
rng = np.random.default_rng(args.seed)
high_df = df[df["y_true"] == 1]
low_df = df[df["y_true"] == 0]
n_high = min(args.sample_per_class, len(high_df))
n_low = min(args.sample_per_class, len(low_df))
high_sample = high_df.sample(n=n_high, random_state=args.seed)
low_sample = low_df.sample(n=n_low, random_state=args.seed)
df = pd.concat([high_sample, low_sample], ignore_index=True)
df = df.sample(frac=1.0, random_state=args.seed).reset_index(drop=True)
scores = df["score"].to_numpy(dtype=float)
y_true = df["y_true"].to_numpy(dtype=int)
# Compute best thresholds
thr_f1, best_f1, conf_f1 = pick_threshold(scores, y_true, metric="f1")
thr_acc, best_acc, conf_acc = pick_threshold(scores, y_true, metric="accuracy")
thr_prec, best_prec, conf_prec = pick_threshold(scores, y_true, metric="precision")
thr_rec, best_rec, conf_rec = pick_threshold(scores, y_true, metric="recall")
summary = {
"positive_definition": "HIGH when score >= threshold",
"best_thresholds": {
"f1": {"threshold": thr_f1, "value": best_f1, "confusion": conf_f1},
"accuracy": {"threshold": thr_acc, "value": best_acc, "confusion": conf_acc},
"precision": {"threshold": thr_prec, "value": best_prec, "confusion": conf_prec},
"recall": {"threshold": thr_rec, "value": best_rec, "confusion": conf_rec},
},
"counts": {
"total": int(len(df)),
"positives": int(df["y_true"].sum()),
"negatives": int(len(df) - int(df["y_true"].sum())),
},
}
# Metric curves and figures
curves = compute_metric_curves(scores, y_true)
plot_distributions(df, outdir / "facture_score_distributions.png")
plot_metric_curves(curves, outdir / "facture_metric_curves.png")
# Extra plots
plot_sorted_scores_with_threshold(df, thr_f1, outdir / "facture_sorted_scores_with_thr.png")
plot_pr_curve(curves, outdir / "facture_precision_recall_curve.png")
plot_roc_like(curves, outdir / "facture_roc_like_curve.png")
plot_confusion_heatmap(conf_f1["TP"], conf_f1["FP"], conf_f1["FN"], conf_f1["TN"], outdir / "facture_confusion_matrix.png")
# Decisions CSV (for three operating points + F1)
def decide(thr: float) -> np.ndarray:
return (scores >= thr).astype(int)
df_out = df.copy()
df_out["decision_f1"] = decide(thr_f1)
df_out["decision_acc"] = decide(thr_acc)
df_out["decision_prec"] = decide(thr_prec)
df_out["decision_rec"] = decide(thr_rec)
# Map 1/0 to textual action
to_action = {1: "implement", 0: "reject"}
for col in ["decision_f1", "decision_acc", "decision_prec", "decision_rec"]:
df_out[col] = df_out[col].map(to_action)
df_out.rename(columns={"score": "deqa_score"}, inplace=True)
df_out = df_out[["filename", "deqa_score", "label", "decision_f1", "decision_acc", "decision_prec", "decision_rec"]]
df_out.to_csv(outdir / "facture_decisions.csv", index=False)
# Save summary JSON
with open(outdir / "facture_thresholds_summary.json", "w", encoding="utf-8") as f:
json.dump(summary, f, indent=2)
# Save a single Excel file with one sheet containing all rows and decisions (F1 operating point)
try:
excel_path = outdir / "facture_deqa_images.xlsx"
one_sheet_df = df_out.copy()
# Keep core columns only
keep_cols = ["filename", "deqa_score", "label", "decision_f1"]
one_sheet_df = one_sheet_df[keep_cols]
one_sheet_df.rename(columns={"decision_f1": "decision"}, inplace=True)
with pd.ExcelWriter(excel_path, engine='openpyxl') as writer:
one_sheet_df.to_excel(writer, sheet_name="DeQA_Images", index=False)
except Exception as e:
print(f"Warning: Failed to write Excel file: {e}")
# Also print a concise console summary
print("Best thresholds (score >= thr => HIGH):")
for k in ["f1", "accuracy", "precision", "recall"]:
info = summary["best_thresholds"][k]
print(f"- {k}: thr={info['threshold']:.3f}, value={info['value']:.3f}, conf={info['confusion']}")
if __name__ == "__main__":
main()