diff --git a/assets/original/merged_cell_table.pdf b/assets/original/merged_cell_table.pdf new file mode 100644 index 00000000..aaddc293 Binary files /dev/null and b/assets/original/merged_cell_table.pdf differ diff --git a/assets/original/multi_column.pdf b/assets/original/multi_column.pdf new file mode 100644 index 00000000..bb8a947b Binary files /dev/null and b/assets/original/multi_column.pdf differ diff --git a/assets/original/table_check.pdf b/assets/original/table_check.pdf new file mode 100644 index 00000000..72b87ba5 Binary files /dev/null and b/assets/original/table_check.pdf differ diff --git a/assets/original/table_check_row.pdf b/assets/original/table_check_row.pdf new file mode 100644 index 00000000..35f5451a Binary files /dev/null and b/assets/original/table_check_row.pdf differ diff --git a/assets/text/chc_1.txt b/assets/text/chc_1.txt index a35d5514..d44da4fa 100644 --- a/assets/text/chc_1.txt +++ b/assets/text/chc_1.txt @@ -1144,7 +1144,7 @@ Page 22 of 38 [["Practice or Business Location Address:/City /State/ZIP: Phone:/Fax:","456 Oak Avenue. Coppell, TX 77479 123-456-7890/123-456-7890"],["Hours of operation","Mon - Fri: 8:00AM - 5:00PM"],["Language(s) spoken","English Spanish"]] -------Table End-------- -------Table Start-------- -[["Practice or Business Location Address:/City/State/ZIP Phone:/Fax","456 Oak Avenue, Coppell, :123-456-7890/123-456-7890","TX 77478"],["Hours of operation","Mon-Fri: 800AM-5:00PM -",""],["Language(s) spoken","English, Spanish",""]] +[["Practice or Business Location Address:/City/State/ZIP Phone:/Fax","456 Oak Avenue, Coppell, :123-456-7890/123-456-7890","TX 77478"],["Hours of operation","Mon-Fri: 800AM-5:00PM -","Mon-Fri: 800AM-5:00PM -"],["Language(s) spoken","English, Spanish","English, Spanish"]] -------Table End-------- -------Table Start-------- [["Practice or Business Location Address:/City /State/ZIP: Phone: / Fax","456 Oak Avenue, Coppell, TX 77471 123-456-7890/123-456-7890"],["Hours of operation","Mon - Fri: 8:00AM - 5:00PM"],["Language(s) spoken","English, Spanish"]] @@ -1296,7 +1296,7 @@ Start of Page No. = 27 EXHIBIT B-3 COMPENSATION -------Table Start-------- -[["Applicable Benefit Plan(s):","Dual Special Needs Plan (D-SNP) Does not participate in D-SNP"],["","Local Mental Health Authority (LMHA)"],["","Chemical Dependency (CD) Treatment Facility"],["Provider Type:","Early Childhood Intervention (ECI) Provider"],["","Mental Health Targeted Case Management"],["","Non- Local Mental Health Authority (LMHA)"],["","Behavioral Health Services"],["Services:","Mental Health Targeted Case Management"],["","Mental Health Rehabilitative Services"]] +[["Applicable Benefit Plan(s):","Dual Special Needs Plan (D-SNP) Does not participate in D-SNP"],["Applicable Benefit Plan(s):","Local Mental Health Authority (LMHA)"],["Applicable Benefit Plan(s):","Chemical Dependency (CD) Treatment Facility"],["Provider Type:","Early Childhood Intervention (ECI) Provider"],["Provider Type:","Mental Health Targeted Case Management"],["Provider Type:","Non- Local Mental Health Authority (LMHA)"],["Provider Type:","Behavioral Health Services"],["Services:","Mental Health Targeted Case Management"],["","Mental Health Rehabilitative Services"]] -------Table End-------- Physician/Provider does not participate in above plan/program chat @@ -1571,7 +1571,7 @@ Page 31 of 38 Start of Page No. = 32 -------Table Start-------- -[["","Coppel TX 77230-1404"],["Certified Mail","Sample Company Name 123 Maple Street Springfield"],["","Coppel TX 77054"]] +[["","Coppel TX 77230-1404"],["Certified Mail","Sample Company Name 123 Maple Street Springfield"],["Certified Mail","Coppel TX 77054"]] -------Table End-------- Provider may call 123-456-7890 for all claims inquiries diff --git a/assets/text/merged_cell_table.txt b/assets/text/merged_cell_table.txt new file mode 100644 index 00000000..fece13e2 --- /dev/null +++ b/assets/text/merged_cell_table.txt @@ -0,0 +1,9 @@ +Start of Page No. = 1 + +Table 3A This is the Third Table +Here's another Line. But there won't be a third +-------Table Start-------- +[["Value 1","Value 2","Value 4"],["Value 1","Value 2","Value 5"],["Value 1","Value 3","Value 6"],["Value 1","Value 3","Value 7"],["Value 1","Value 3","Value 8"]] +-------Table End-------- + + diff --git a/assets/textract/chc_1.gen b/assets/textract/chc_1.gen index 22dcf10a..fc9a5076 100644 --- a/assets/textract/chc_1.gen +++ b/assets/textract/chc_1.gen @@ -1270585,4 +1270585,4 @@ "ResultMetadata": {} } } -] \ No newline at end of file +] diff --git a/assets/textract/merged_cell_table.gen b/assets/textract/merged_cell_table.gen new file mode 100644 index 00000000..a7c78000 --- /dev/null +++ b/assets/textract/merged_cell_table.gen @@ -0,0 +1,4994 @@ +[ + { + "base": { + "AnalyzeDocumentModelVersion": "1.0", + "Blocks": [ + { + "BlockType": "PAGE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": null, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 1, + "Left": 0, + "Top": 0, + "Width": 1 + }, + "Polygon": [ + { + "X": 0.00031932464, + "Y": 0 + }, + { + "X": 1, + "Y": 0.0000036044682 + }, + { + "X": 1, + "Y": 1 + }, + { + "X": 0, + "Y": 1 + } + ] + }, + "Id": "79ca8c8e-f1ab-47d2-a9e0-ccfaedd5f249", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "b03cd4ea-4bcf-466f-83a7-4731dd176d66", + "8f271be6-ddc7-4249-accb-a369be9e2b45", + "fba5c061-85bb-426a-9359-aecfa1899c90", + "1c86edc1-879f-4714-976a-77f311a2b234", + "c00a8c8b-a531-4707-9af6-746a91a86e1b", + "81c2843e-abc5-4c87-89e5-8ea0e1d1dd1b", + "d1c7b66b-a140-4387-9d2a-a780a1491ef5", + "ad195ad9-8562-4641-9853-e71e7df809db", + "d77e80a9-1929-45d2-b940-a7e525774f52", + "1e04fa11-a48d-4a85-ad66-5a7d6ba5b106", + "f31f2811-b4b6-4ca3-999f-9582b419f370", + "9a982779-423f-4ba7-bb22-76c3e7328141", + "e5ceffaa-d6d1-4acd-bc1b-7d624ad84947" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.949646, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.062106214, + "Left": 0.021696668, + "Top": 0.06691204, + "Width": 0.29965678 + }, + "Polygon": [ + { + "X": 0.021806413, + "Y": 0.06691204 + }, + { + "X": 0.32135347, + "Y": 0.06737488 + }, + { + "X": 0.32125813, + "Y": 0.12901826 + }, + { + "X": 0.021696668, + "Y": 0.12856936 + } + ] + }, + "Id": "b03cd4ea-4bcf-466f-83a7-4731dd176d66", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "3d63cdc7-ec37-4176-8e46-e2fe10f27f05", + "1f32f643-30cb-4fd9-b0a0-9fc65412269e", + "569eb27f-c65c-4486-ae0b-6956cafb6624", + "a8015842-2950-4649-af27-55d43ab6d7d5", + "64a88eec-b808-4645-9258-05aff0e11d26", + "cddf6eac-c017-481d-972a-e42ffcc3f43d", + "ceaf0868-80aa-4e4a-ba6f-eca70ef6bd42" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Table 3A This is the Third Table", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.88042, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06296835, + "Left": 0.02298565, + "Top": 0.23364258, + "Width": 0.45312384 + }, + "Polygon": [ + { + "X": 0.023096543, + "Y": 0.23364258 + }, + { + "X": 0.4761095, + "Y": 0.23428538 + }, + { + "X": 0.47602066, + "Y": 0.29661092 + }, + { + "X": 0.02298565, + "Y": 0.29598945 + } + ] + }, + "Id": "8f271be6-ddc7-4249-accb-a369be9e2b45", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "f4013da4-ee88-41d1-9243-1496b601820e", + "ae9d99cb-2c69-4d41-a79e-4ffa85b89c0d", + "220ade15-c5ee-46ae-a66f-16d77865de7f", + "82b9dc28-6601-4576-a047-d668bc406794", + "168fd5de-01a0-4dff-981a-f855af00ca37", + "36e59c67-be62-4c31-bd47-23092960503a", + "8c51fb2e-6603-4d1d-a2bb-9b5720b6f085", + "545d244d-db7a-4ad9-9dd5-6bd3e6a7fb92", + "1c2a2bee-b4dd-49ed-b96d-c5c9b127d5a6" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Here's another Line. But there won't be a third", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96359, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05988987, + "Left": 0.7656042, + "Top": 0.40596026, + "Width": 0.07282894 + }, + "Polygon": [ + { + "X": 0.7656759, + "Y": 0.40596026 + }, + { + "X": 0.83843315, + "Y": 0.40605405 + }, + { + "X": 0.83836484, + "Y": 0.4658501 + }, + { + "X": 0.7656042, + "Y": 0.4657596 + } + ] + }, + "Id": "fba5c061-85bb-426a-9359-aecfa1899c90", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "cf81266c-4775-4935-bad2-cda40d0d17a9", + "e0cba367-3f30-4505-814c-043ac58047ff" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 4", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.965744, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060793992, + "Left": 0.4538951, + "Top": 0.45613545, + "Width": 0.0721573 + }, + "Polygon": [ + { + "X": 0.45398265, + "Y": 0.45613545 + }, + { + "X": 0.5260524, + "Y": 0.45622563 + }, + { + "X": 0.52596825, + "Y": 0.51692945 + }, + { + "X": 0.4538951, + "Y": 0.5168426 + } + ] + }, + "Id": "1c86edc1-879f-4714-976a-77f311a2b234", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "83578849-3820-4487-9e38-51d33e1669f9", + "dd35c38d-89e4-4d2a-bb22-e13f2692827a" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 2", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.95114, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059971087, + "Left": 0.7658444, + "Top": 0.50700593, + "Width": 0.07197265 + }, + "Polygon": [ + { + "X": 0.76591617, + "Y": 0.50700593 + }, + { + "X": 0.837817, + "Y": 0.50709313 + }, + { + "X": 0.8377486, + "Y": 0.566977 + }, + { + "X": 0.7658444, + "Y": 0.56689304 + } + ] + }, + "Id": "c00a8c8b-a531-4707-9af6-746a91a86e1b", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "e568652d-b3ac-4277-8899-d50fe272fcba", + "15974c9a-270b-4e78-a37d-ffbdd21f208f" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 5", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.94486, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060285162, + "Left": 0.14196518, + "Top": 0.60751927, + "Width": 0.07219573 + }, + "Polygon": [ + { + "X": 0.14206666, + "Y": 0.60751927 + }, + { + "X": 0.21416092, + "Y": 0.60760117 + }, + { + "X": 0.21406284, + "Y": 0.6678044 + }, + { + "X": 0.14196518, + "Y": 0.6677258 + } + ] + }, + "Id": "81c2843e-abc5-4c87-89e5-8ea0e1d1dd1b", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "001db719-d934-4539-af53-ec023b4b62df", + "66591d2a-78ae-47b8-85df-58ecb03b4baa" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 1", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.971756, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059769046, + "Left": 0.7656306, + "Top": 0.6076263, + "Width": 0.07276227 + }, + "Polygon": [ + { + "X": 0.7657022, + "Y": 0.6076263 + }, + { + "X": 0.8383929, + "Y": 0.60770893 + }, + { + "X": 0.83832467, + "Y": 0.66739535 + }, + { + "X": 0.7656306, + "Y": 0.667316 + } + ] + }, + "Id": "d1c7b66b-a140-4387-9d2a-a780a1491ef5", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "24bc0f25-b29e-4d9d-b8c4-0e1506cd8e62", + "09444c5b-72eb-40b3-ae2e-e59645c900d6" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 6", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.963196, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060049113, + "Left": 0.4536933, + "Top": 0.7085798, + "Width": 0.07194398 + }, + "Polygon": [ + { + "X": 0.45377982, + "Y": 0.7085798 + }, + { + "X": 0.52563727, + "Y": 0.70865595 + }, + { + "X": 0.5255542, + "Y": 0.7686289 + }, + { + "X": 0.4536933, + "Y": 0.768556 + } + ] + }, + "Id": "ad195ad9-8562-4641-9853-e71e7df809db", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "9be6304b-d00d-4957-97b8-2b317685b93a", + "aef5b70b-efc0-414c-9a85-382c5f2589b6" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 3", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.960144, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059944537, + "Left": 0.76564145, + "Top": 0.7086254, + "Width": 0.07253744 + }, + "Polygon": [ + { + "X": 0.7657133, + "Y": 0.7086254 + }, + { + "X": 0.83817893, + "Y": 0.70870215 + }, + { + "X": 0.8381105, + "Y": 0.7685699 + }, + { + "X": 0.76564145, + "Y": 0.76849633 + } + ] + }, + "Id": "d77e80a9-1929-45d2-b940-a7e525774f52", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "0f0bd166-d100-43dd-91b3-ab6ac168f996", + "fc7daadf-49e4-4445-88bf-5606aafc6bbc" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 7", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.93349, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059884593, + "Left": 0.76602376, + "Top": 0.80975324, + "Width": 0.07201266 + }, + "Polygon": [ + { + "X": 0.76609546, + "Y": 0.80975324 + }, + { + "X": 0.8380364, + "Y": 0.80982405 + }, + { + "X": 0.83796805, + "Y": 0.86963785 + }, + { + "X": 0.76602376, + "Y": 0.8695704 + } + ] + }, + "Id": "1e04fa11-a48d-4a85-ad66-5a7d6ba5b106", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "8838196a-5185-4246-9381-f2dbe2029ba7", + "49fc0120-b864-452f-8429-c987fef94e05" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 8", + "TextType": "" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.93773, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06009644, + "Left": 0.021698663, + "Top": 0.067430556, + "Width": 0.052164484 + }, + "Polygon": [ + { + "X": 0.02180549, + "Y": 0.067430556 + }, + { + "X": 0.07386315, + "Y": 0.06751097 + }, + { + "X": 0.07375876, + "Y": 0.127527 + }, + { + "X": 0.021698663, + "Y": 0.12744895 + } + ] + }, + "Id": "3d63cdc7-ec37-4176-8e46-e2fe10f27f05", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Table", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.89481, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059304338, + "Left": 0.07943283, + "Top": 0.06939168, + "Width": 0.02688506 + }, + "Polygon": [ + { + "X": 0.07953564, + "Y": 0.06939168 + }, + { + "X": 0.10631789, + "Y": 0.06943302 + }, + { + "X": 0.10621631, + "Y": 0.12869602 + }, + { + "X": 0.07943283, + "Y": 0.12865588 + } + ] + }, + "Id": "1f32f643-30cb-4fd9-b0a0-9fc65412269e", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "3A", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96037, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06064966, + "Left": 0.10991458, + "Top": 0.0674068, + "Width": 0.04047158 + }, + "Polygon": [ + { + "X": 0.11001825, + "Y": 0.0674068 + }, + { + "X": 0.15038615, + "Y": 0.067469165 + }, + { + "X": 0.1502844, + "Y": 0.12805647 + }, + { + "X": 0.10991458, + "Y": 0.12799595 + } + ] + }, + "Id": "569eb27f-c65c-4486-ae0b-6956cafb6624", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "This", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.972015, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.057186004, + "Left": 0.15571061, + "Top": 0.069479875, + "Width": 0.015229989 + }, + "Polygon": [ + { + "X": 0.15580638, + "Y": 0.069479875 + }, + { + "X": 0.17094061, + "Y": 0.06950323 + }, + { + "X": 0.17084551, + "Y": 0.12666588 + }, + { + "X": 0.15571061, + "Y": 0.12664318 + } + ] + }, + "Id": "a8015842-2950-4649-af27-55d43ab6d7d5", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "is", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.9959, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05982988, + "Left": 0.17521986, + "Top": 0.06764277, + "Width": 0.032962434 + }, + "Polygon": [ + { + "X": 0.17531912, + "Y": 0.06764277 + }, + { + "X": 0.2081823, + "Y": 0.06769353 + }, + { + "X": 0.2080846, + "Y": 0.12747265 + }, + { + "X": 0.17521986, + "Y": 0.12742336 + } + ] + }, + "Id": "64a88eec-b808-4645-9258-05aff0e11d26", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "the", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.95067, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060216933, + "Left": 0.21286602, + "Top": 0.0672074, + "Width": 0.0514436 + }, + "Polygon": [ + { + "X": 0.2129641, + "Y": 0.0672074 + }, + { + "X": 0.2643096, + "Y": 0.06728674 + }, + { + "X": 0.26421395, + "Y": 0.12742433 + }, + { + "X": 0.21286602, + "Y": 0.12734734 + } + ] + }, + "Id": "cddf6eac-c017-481d-972a-e42ffcc3f43d", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Third", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.936005, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059806574, + "Left": 0.26865143, + "Top": 0.067673035, + "Width": 0.052701432 + }, + "Polygon": [ + { + "X": 0.26874623, + "Y": 0.067673035 + }, + { + "X": 0.32135287, + "Y": 0.067754306 + }, + { + "X": 0.3212605, + "Y": 0.12747961 + }, + { + "X": 0.26865143, + "Y": 0.12740071 + } + ] + }, + "Id": "ceaf0868-80aa-4e4a-ba6f-eca70ef6bd42", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Table", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.92072, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.061081037, + "Left": 0.022986198, + "Top": 0.23468344, + "Width": 0.06081338 + }, + "Polygon": [ + { + "X": 0.023094691, + "Y": 0.23468344 + }, + { + "X": 0.08379958, + "Y": 0.23476954 + }, + { + "X": 0.08369397, + "Y": 0.29576448 + }, + { + "X": 0.022986198, + "Y": 0.29568118 + } + ] + }, + "Id": "f4013da4-ee88-41d1-9243-1496b601820e", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Here's", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.99097, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.062352736, + "Left": 0.0886758, + "Top": 0.23383433, + "Width": 0.078456916 + }, + "Polygon": [ + { + "X": 0.088783324, + "Y": 0.23383433 + }, + { + "X": 0.16713272, + "Y": 0.23394549 + }, + { + "X": 0.167029, + "Y": 0.29618704 + }, + { + "X": 0.0886758, + "Y": 0.29607958 + } + ] + }, + "Id": "ae9d99cb-2c69-4d41-a79e-4ffa85b89c0d", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "another", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.43588, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059230816, + "Left": 0.17238526, + "Top": 0.23643054, + "Width": 0.045458324 + }, + "Polygon": [ + { + "X": 0.17248361, + "Y": 0.23643054 + }, + { + "X": 0.21784358, + "Y": 0.23649482 + }, + { + "X": 0.21774733, + "Y": 0.29566136 + }, + { + "X": 0.17238526, + "Y": 0.2955991 + } + ] + }, + "Id": "220ade15-c5ee-46ae-a66f-16d77865de7f", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Line.", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.95835, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05868826, + "Left": 0.22405379, + "Top": 0.23669225, + "Width": 0.034021147 + }, + "Polygon": [ + { + "X": 0.2241489, + "Y": 0.23669225 + }, + { + "X": 0.25807494, + "Y": 0.23674032 + }, + { + "X": 0.2579814, + "Y": 0.2953805 + }, + { + "X": 0.22405379, + "Y": 0.29533395 + } + ] + }, + "Id": "82b9dc28-6601-4576-a047-d668bc406794", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "But", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.99104, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05954749, + "Left": 0.26216814, + "Top": 0.23547733, + "Width": 0.05310698 + }, + "Polygon": [ + { + "X": 0.26226285, + "Y": 0.23547733 + }, + { + "X": 0.31527513, + "Y": 0.23555249 + }, + { + "X": 0.3151829, + "Y": 0.2950248 + }, + { + "X": 0.26216814, + "Y": 0.29495203 + } + ] + }, + "Id": "168fd5de-01a0-4dff-981a-f855af00ca37", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "there", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96268, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.061004657, + "Left": 0.32042545, + "Top": 0.2346403, + "Width": 0.0585502 + }, + "Polygon": [ + { + "X": 0.32051966, + "Y": 0.2346403 + }, + { + "X": 0.37897563, + "Y": 0.23472323 + }, + { + "X": 0.3788842, + "Y": 0.29564497 + }, + { + "X": 0.32042545, + "Y": 0.29556474 + } + ] + }, + "Id": "36e59c67-be62-4c31-bd47-23092960503a", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "won't", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.72328, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06082003, + "Left": 0.38233215, + "Top": 0.23437268, + "Width": 0.025115604 + }, + "Polygon": [ + { + "X": 0.38242322, + "Y": 0.23437268 + }, + { + "X": 0.40744776, + "Y": 0.23440818 + }, + { + "X": 0.40735787, + "Y": 0.29519272 + }, + { + "X": 0.38233215, + "Y": 0.29515836 + } + ] + }, + "Id": "8c51fb2e-6603-4d1d-a2bb-9b5720b6f085", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "be", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96757, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.04564935, + "Left": 0.4125539, + "Top": 0.24962188, + "Width": 0.011470176 + }, + "Polygon": [ + { + "X": 0.41262123, + "Y": 0.24962188 + }, + { + "X": 0.42402408, + "Y": 0.24963793 + }, + { + "X": 0.4239572, + "Y": 0.29527125 + }, + { + "X": 0.4125539, + "Y": 0.29525557 + } + ] + }, + "Id": "545d244d-db7a-4ad9-9dd5-6bd3e6a7fb92", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "a", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.97326, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06093984, + "Left": 0.42894927, + "Top": 0.2342186, + "Width": 0.04716024 + }, + "Polygon": [ + { + "X": 0.42903826, + "Y": 0.2342186 + }, + { + "X": 0.4761095, + "Y": 0.23428538 + }, + { + "X": 0.47602272, + "Y": 0.29515845 + }, + { + "X": 0.42894927, + "Y": 0.2950938 + } + ] + }, + "Id": "1c2a2bee-b4dd-49ed-b96d-c5c9b127d5a6", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "third", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.956764, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05986719, + "Left": 0.7656042, + "Top": 0.40596026, + "Width": 0.054597124 + }, + "Polygon": [ + { + "X": 0.7656759, + "Y": 0.40596026 + }, + { + "X": 0.82020134, + "Y": 0.40603057 + }, + { + "X": 0.82013214, + "Y": 0.46582744 + }, + { + "X": 0.7656042, + "Y": 0.4657596 + } + ] + }, + "Id": "cf81266c-4775-4935-bad2-cda40d0d17a9", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.97042, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05783006, + "Left": 0.82571495, + "Top": 0.40721583, + "Width": 0.012716849 + }, + "Polygon": [ + { + "X": 0.8257816, + "Y": 0.40721583 + }, + { + "X": 0.8384318, + "Y": 0.40723214 + }, + { + "X": 0.83836573, + "Y": 0.4650459 + }, + { + "X": 0.82571495, + "Y": 0.46503016 + } + ] + }, + "Id": "e0cba367-3f30-4505-814c-043ac58047ff", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "4", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96015, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060603824, + "Left": 0.45389533, + "Top": 0.45613545, + "Width": 0.0544196 + }, + "Polygon": [ + { + "X": 0.45398265, + "Y": 0.45613545 + }, + { + "X": 0.5083149, + "Y": 0.45620343 + }, + { + "X": 0.5082302, + "Y": 0.5167393 + }, + { + "X": 0.45389533, + "Y": 0.5166738 + } + ] + }, + "Id": "83578849-3820-4487-9e38-51d33e1669f9", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.97135, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.0594259, + "Left": 0.5141585, + "Top": 0.45750356, + "Width": 0.011892127 + }, + "Polygon": [ + { + "X": 0.5142414, + "Y": 0.45750356 + }, + { + "X": 0.52605057, + "Y": 0.4575183 + }, + { + "X": 0.52596825, + "Y": 0.51692945 + }, + { + "X": 0.5141585, + "Y": 0.5169152 + } + ] + }, + "Id": "dd35c38d-89e4-4d2a-bb22-e13f2692827a", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "2", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96516, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059950683, + "Left": 0.7658444, + "Top": 0.50700593, + "Width": 0.054495823 + }, + "Polygon": [ + { + "X": 0.76591617, + "Y": 0.50700593 + }, + { + "X": 0.8203402, + "Y": 0.5070719 + }, + { + "X": 0.82027096, + "Y": 0.5669566 + }, + { + "X": 0.7658444, + "Y": 0.56689304 + } + ] + }, + "Id": "e568652d-b3ac-4277-8899-d50fe272fcba", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.937126, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.058972064, + "Left": 0.82621217, + "Top": 0.50789815, + "Width": 0.01160391 + }, + "Polygon": [ + { + "X": 0.8262801, + "Y": 0.50789815 + }, + { + "X": 0.8378161, + "Y": 0.5079121 + }, + { + "X": 0.8377487, + "Y": 0.5668702 + }, + { + "X": 0.82621217, + "Y": 0.56685674 + } + ] + }, + "Id": "15974c9a-270b-4e78-a37d-ffbdd21f208f", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "5", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.950165, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060244355, + "Left": 0.14196523, + "Top": 0.60751927, + "Width": 0.05452877 + }, + "Polygon": [ + { + "X": 0.14206666, + "Y": 0.60751927 + }, + { + "X": 0.196494, + "Y": 0.6075811 + }, + { + "X": 0.19639511, + "Y": 0.6677636 + }, + { + "X": 0.14196523, + "Y": 0.6677042 + } + ] + }, + "Id": "001db719-d934-4539-af53-ec023b4b62df", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.93955, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.0582782, + "Left": 0.20321693, + "Top": 0.6095262, + "Width": 0.010940837 + }, + "Polygon": [ + { + "X": 0.20331234, + "Y": 0.6095262 + }, + { + "X": 0.21415776, + "Y": 0.60953856 + }, + { + "X": 0.21406284, + "Y": 0.6678044 + }, + { + "X": 0.20321693, + "Y": 0.6677926 + } + ] + }, + "Id": "66591d2a-78ae-47b8-85df-58ecb03b4baa", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "1", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96113, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059749343, + "Left": 0.7656306, + "Top": 0.6076263, + "Width": 0.054711062 + }, + "Polygon": [ + { + "X": 0.7657022, + "Y": 0.6076263 + }, + { + "X": 0.82034165, + "Y": 0.6076884 + }, + { + "X": 0.8202726, + "Y": 0.6673757 + }, + { + "X": 0.7656306, + "Y": 0.667316 + } + ] + }, + "Id": "24bc0f25-b29e-4d9d-b8c4-0e1506cd8e62", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.98238, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.057815585, + "Left": 0.82613856, + "Top": 0.6089325, + "Width": 0.012252903 + }, + "Polygon": [ + { + "X": 0.82620513, + "Y": 0.6089325 + }, + { + "X": 0.8383915, + "Y": 0.6089463 + }, + { + "X": 0.83832544, + "Y": 0.66674805 + }, + { + "X": 0.82613856, + "Y": 0.66673476 + } + ] + }, + "Id": "09444c5b-72eb-40b3-ae2e-e59645c900d6", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "6", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96977, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060031436, + "Left": 0.4536933, + "Top": 0.7085798, + "Width": 0.05452253 + }, + "Polygon": [ + { + "X": 0.45377982, + "Y": 0.7085798 + }, + { + "X": 0.50821584, + "Y": 0.7086375 + }, + { + "X": 0.50813186, + "Y": 0.76861125 + }, + { + "X": 0.4536933, + "Y": 0.768556 + } + ] + }, + "Id": "9be6304b-d00d-4957-97b8-2b317685b93a", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.95663, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059265055, + "Left": 0.5143539, + "Top": 0.7091587, + "Width": 0.011282716 + }, + "Polygon": [ + { + "X": 0.51443654, + "Y": 0.7091587 + }, + { + "X": 0.52563655, + "Y": 0.7091706 + }, + { + "X": 0.5255544, + "Y": 0.7684238 + }, + { + "X": 0.5143539, + "Y": 0.7684124 + } + ] + }, + "Id": "aef5b70b-efc0-414c-9a85-382c5f2589b6", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "3", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.9692, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05990632, + "Left": 0.76564145, + "Top": 0.70864546, + "Width": 0.05469937 + }, + "Polygon": [ + { + "X": 0.7657132, + "Y": 0.70864546 + }, + { + "X": 0.8203409, + "Y": 0.7087034 + }, + { + "X": 0.8202716, + "Y": 0.76855177 + }, + { + "X": 0.76564145, + "Y": 0.76849633 + } + ] + }, + "Id": "0f0bd166-d100-43dd-91b3-ab6ac168f996", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.95108, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05903927, + "Left": 0.8260529, + "Top": 0.7086894, + "Width": 0.012126014 + }, + "Polygon": [ + { + "X": 0.8261209, + "Y": 0.7086894 + }, + { + "X": 0.83817893, + "Y": 0.70870215 + }, + { + "X": 0.83811146, + "Y": 0.7677287 + }, + { + "X": 0.8260529, + "Y": 0.7677164 + } + ] + }, + "Id": "fc7daadf-49e4-4445-88bf-5606aafc6bbc", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "7", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96512, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059505586, + "Left": 0.7660242, + "Top": 0.80975324, + "Width": 0.054307967 + }, + "Polygon": [ + { + "X": 0.76609546, + "Y": 0.80975324 + }, + { + "X": 0.82033217, + "Y": 0.8098066 + }, + { + "X": 0.8202634, + "Y": 0.8692588 + }, + { + "X": 0.7660242, + "Y": 0.8692079 + } + ] + }, + "Id": "8838196a-5185-4246-9381-f2dbe2029ba7", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.90186, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05811881, + "Left": 0.82609975, + "Top": 0.811519, + "Width": 0.011934723 + }, + "Polygon": [ + { + "X": 0.8261667, + "Y": 0.811519 + }, + { + "X": 0.83803445, + "Y": 0.8115307 + }, + { + "X": 0.83796805, + "Y": 0.86963785 + }, + { + "X": 0.82609975, + "Y": 0.8696267 + } + ] + }, + "Id": "49fc0120-b864-452f-8429-c987fef94e05", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "8", + "TextType": "PRINTED" + }, + { + "BlockType": "LAYOUT_TEXT", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 58.30078, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.062106214, + "Left": 0.021696668, + "Top": 0.06691204, + "Width": 0.29965678 + }, + "Polygon": [ + { + "X": 0.021806413, + "Y": 0.06691204 + }, + { + "X": 0.32135347, + "Y": 0.06737488 + }, + { + "X": 0.32125813, + "Y": 0.12901826 + }, + { + "X": 0.021696668, + "Y": 0.12856936 + } + ] + }, + "Id": "f31f2811-b4b6-4ca3-999f-9582b419f370", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "b03cd4ea-4bcf-466f-83a7-4731dd176d66" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "LAYOUT_TEXT", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 58.30078, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06296835, + "Left": 0.02298565, + "Top": 0.23364258, + "Width": 0.45312384 + }, + "Polygon": [ + { + "X": 0.023096543, + "Y": 0.23364258 + }, + { + "X": 0.4761095, + "Y": 0.23428538 + }, + { + "X": 0.47602066, + "Y": 0.29661092 + }, + { + "X": 0.02298565, + "Y": 0.29598945 + } + ] + }, + "Id": "9a982779-423f-4ba7-bb22-76c3e7328141", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "8f271be6-ddc7-4249-accb-a369be9e2b45" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "LAYOUT_TABLE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 70.89844, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.51945865, + "Left": 0.021730442, + "Top": 0.37728158, + "Width": 0.93979836 + }, + "Polygon": [ + { + "X": 0.022652926, + "Y": 0.37728158 + }, + { + "X": 0.9615288, + "Y": 0.37851176 + }, + { + "X": 0.9609864, + "Y": 0.89674026 + }, + { + "X": 0.021730442, + "Y": 0.89587814 + } + ] + }, + "Id": "e5ceffaa-d6d1-4acd-bc1b-7d624ad84947", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "fba5c061-85bb-426a-9359-aecfa1899c90", + "1c86edc1-879f-4714-976a-77f311a2b234", + "c00a8c8b-a531-4707-9af6-746a91a86e1b", + "81c2843e-abc5-4c87-89e5-8ea0e1d1dd1b", + "d1c7b66b-a140-4387-9d2a-a780a1491ef5", + "ad195ad9-8562-4641-9853-e71e7df809db", + "d77e80a9-1929-45d2-b940-a7e525774f52", + "1e04fa11-a48d-4a85-ad66-5a7d6ba5b106" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": null, + "TextType": "" + } + ], + "DocumentMetadata": { + "Pages": 1 + }, + "HumanLoopActivationOutput": null, + "ResultMetadata": {} + }, + "table": { + "AnalyzeDocumentModelVersion": "1.0", + "Blocks": [ + { + "BlockType": "PAGE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": null, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 1, + "Left": 0, + "Top": 0, + "Width": 1 + }, + "Polygon": [ + { + "X": 0.00031932464, + "Y": 0 + }, + { + "X": 1, + "Y": 0.0000036044682 + }, + { + "X": 1, + "Y": 1 + }, + { + "X": 0, + "Y": 1 + } + ] + }, + "Id": "2f11065d-8dad-48c7-ad8a-0abe1ce44338", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "93c221b1-e5dd-434c-aaa6-553e7957b637", + "7d4f6cf9-e4d3-4c21-b6ca-86ee5def5522", + "1540f135-ebcc-4fdf-8341-52b5acd88610", + "6723c50a-ba0d-4386-987a-5fbf7f0aef6a", + "4d455b65-6364-4f96-9194-a865a2426774", + "f09dbb73-7f89-4187-bca7-3068103508ab", + "163dd62e-296a-4d77-9a49-e754a27f5fd0", + "0ed97810-7a9a-48b6-979d-a2bad34bcfcd", + "02419179-b064-4516-834c-a675329a178e", + "57eea1b6-3d39-4b1f-a53a-91e31c33f543", + "41944ceb-ff90-4f71-a618-dcceeb110ea5" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.949646, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.062106214, + "Left": 0.021696668, + "Top": 0.06691204, + "Width": 0.29965678 + }, + "Polygon": [ + { + "X": 0.021806413, + "Y": 0.06691204 + }, + { + "X": 0.32135347, + "Y": 0.06737488 + }, + { + "X": 0.32125813, + "Y": 0.12901826 + }, + { + "X": 0.021696668, + "Y": 0.12856936 + } + ] + }, + "Id": "93c221b1-e5dd-434c-aaa6-553e7957b637", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "f0c50b42-ae6a-4ceb-a1b7-b25fb51c8098", + "5c26b298-d2df-4ec5-9c09-9dcc99deea80", + "d7eae832-5f5c-456d-90df-fe422576fd90", + "48a557d9-3004-4a3a-abc3-baa53571bd1e", + "d42ba054-950a-4ead-adb8-d5442a9bcef1", + "ed7c27ad-1933-4b47-9c3c-ad4e2ac70bc5", + "7a2278c4-a094-4c5e-9865-e7ab843df2a5" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Table 3A This is the Third Table", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.88042, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06296835, + "Left": 0.02298565, + "Top": 0.23364258, + "Width": 0.45312384 + }, + "Polygon": [ + { + "X": 0.023096543, + "Y": 0.23364258 + }, + { + "X": 0.4761095, + "Y": 0.23428538 + }, + { + "X": 0.47602066, + "Y": 0.29661092 + }, + { + "X": 0.02298565, + "Y": 0.29598945 + } + ] + }, + "Id": "7d4f6cf9-e4d3-4c21-b6ca-86ee5def5522", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "530f610c-3a68-47e0-b813-3af980a2cba6", + "39864e6b-a11d-4df7-b14b-b3c2a93d7598", + "52e85f2c-4515-4185-a424-dbf79c85925c", + "f8eb7fcf-07a4-4861-992d-1f0569f3cb4b", + "d99a2dfd-3299-420b-bae2-1e57b9c1b998", + "360ec685-8673-45b4-80f4-58a8618e71dd", + "9176fea5-df14-414b-9476-b2f36cd22ccc", + "18609094-a6ac-45f2-9016-2618fb40b211", + "c54a82bb-8c36-4135-855e-11a92aa6206f" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Here's another Line. But there won't be a third", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96359, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05988987, + "Left": 0.7656042, + "Top": 0.40596026, + "Width": 0.07282894 + }, + "Polygon": [ + { + "X": 0.7656759, + "Y": 0.40596026 + }, + { + "X": 0.83843315, + "Y": 0.40605405 + }, + { + "X": 0.83836484, + "Y": 0.4658501 + }, + { + "X": 0.7656042, + "Y": 0.4657596 + } + ] + }, + "Id": "1540f135-ebcc-4fdf-8341-52b5acd88610", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "6aebb5f3-6536-4332-8b1c-24e9eaca1377", + "f6e0e2bc-6cce-43a0-b8fd-c9f9148b07e3" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 4", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.965744, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060793992, + "Left": 0.4538951, + "Top": 0.45613545, + "Width": 0.0721573 + }, + "Polygon": [ + { + "X": 0.45398265, + "Y": 0.45613545 + }, + { + "X": 0.5260524, + "Y": 0.45622563 + }, + { + "X": 0.52596825, + "Y": 0.51692945 + }, + { + "X": 0.4538951, + "Y": 0.5168426 + } + ] + }, + "Id": "6723c50a-ba0d-4386-987a-5fbf7f0aef6a", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "f725479c-e2c4-4b75-ae76-2c530381989f", + "b6627c5c-4740-4dd5-9f73-fdbfa327934d" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 2", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.95114, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059971087, + "Left": 0.7658444, + "Top": 0.50700593, + "Width": 0.07197265 + }, + "Polygon": [ + { + "X": 0.76591617, + "Y": 0.50700593 + }, + { + "X": 0.837817, + "Y": 0.50709313 + }, + { + "X": 0.8377486, + "Y": 0.566977 + }, + { + "X": 0.7658444, + "Y": 0.56689304 + } + ] + }, + "Id": "4d455b65-6364-4f96-9194-a865a2426774", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "caebf9ba-4f8f-4309-ba8f-98e456da55b6", + "7099cf9a-1d2e-423d-b9f4-86e9e3613131" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 5", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.94486, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060285162, + "Left": 0.14196518, + "Top": 0.60751927, + "Width": 0.07219573 + }, + "Polygon": [ + { + "X": 0.14206666, + "Y": 0.60751927 + }, + { + "X": 0.21416092, + "Y": 0.60760117 + }, + { + "X": 0.21406284, + "Y": 0.6678044 + }, + { + "X": 0.14196518, + "Y": 0.6677258 + } + ] + }, + "Id": "f09dbb73-7f89-4187-bca7-3068103508ab", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "0e3bb8f6-49f8-4cb0-a98a-85d8773cd8ba", + "48afe1d1-6ac5-4e70-8c6a-6db4fc50ff04" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 1", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.971756, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059769046, + "Left": 0.7656306, + "Top": 0.6076263, + "Width": 0.07276227 + }, + "Polygon": [ + { + "X": 0.7657022, + "Y": 0.6076263 + }, + { + "X": 0.8383929, + "Y": 0.60770893 + }, + { + "X": 0.83832467, + "Y": 0.66739535 + }, + { + "X": 0.7656306, + "Y": 0.667316 + } + ] + }, + "Id": "163dd62e-296a-4d77-9a49-e754a27f5fd0", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "095f8603-c390-4b84-80e4-c0967692a19b", + "edcd2626-1649-4ab3-b8e3-32498dc0db80" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 6", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.963196, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060049113, + "Left": 0.4536933, + "Top": 0.7085798, + "Width": 0.07194398 + }, + "Polygon": [ + { + "X": 0.45377982, + "Y": 0.7085798 + }, + { + "X": 0.52563727, + "Y": 0.70865595 + }, + { + "X": 0.5255542, + "Y": 0.7686289 + }, + { + "X": 0.4536933, + "Y": 0.768556 + } + ] + }, + "Id": "0ed97810-7a9a-48b6-979d-a2bad34bcfcd", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "5d76468a-ae16-4fe1-a476-7bd420760ce5", + "3bba728e-568d-4633-b865-d74399c6610d" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 3", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.960144, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059944537, + "Left": 0.76564145, + "Top": 0.7086254, + "Width": 0.07253744 + }, + "Polygon": [ + { + "X": 0.7657133, + "Y": 0.7086254 + }, + { + "X": 0.83817893, + "Y": 0.70870215 + }, + { + "X": 0.8381105, + "Y": 0.7685699 + }, + { + "X": 0.76564145, + "Y": 0.76849633 + } + ] + }, + "Id": "02419179-b064-4516-834c-a675329a178e", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "e4392a19-90b7-4f10-a282-5b9e5333507d", + "883389a2-da2d-4dac-8532-977f0d9e70af" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 7", + "TextType": "" + }, + { + "BlockType": "LINE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.93349, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059884593, + "Left": 0.76602376, + "Top": 0.80975324, + "Width": 0.07201266 + }, + "Polygon": [ + { + "X": 0.76609546, + "Y": 0.80975324 + }, + { + "X": 0.8380364, + "Y": 0.80982405 + }, + { + "X": 0.83796805, + "Y": 0.86963785 + }, + { + "X": 0.76602376, + "Y": 0.8695704 + } + ] + }, + "Id": "57eea1b6-3d39-4b1f-a53a-91e31c33f543", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "b27c4f3d-efff-4ce5-8e8b-f8963013cba2", + "0cdeed19-c6eb-45ca-875f-314dc2b0dc0e" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value 8", + "TextType": "" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.93773, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06009644, + "Left": 0.021698663, + "Top": 0.067430556, + "Width": 0.052164484 + }, + "Polygon": [ + { + "X": 0.02180549, + "Y": 0.067430556 + }, + { + "X": 0.07386315, + "Y": 0.06751097 + }, + { + "X": 0.07375876, + "Y": 0.127527 + }, + { + "X": 0.021698663, + "Y": 0.12744895 + } + ] + }, + "Id": "f0c50b42-ae6a-4ceb-a1b7-b25fb51c8098", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Table", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.89481, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059304338, + "Left": 0.07943283, + "Top": 0.06939168, + "Width": 0.02688506 + }, + "Polygon": [ + { + "X": 0.07953564, + "Y": 0.06939168 + }, + { + "X": 0.10631789, + "Y": 0.06943302 + }, + { + "X": 0.10621631, + "Y": 0.12869602 + }, + { + "X": 0.07943283, + "Y": 0.12865588 + } + ] + }, + "Id": "5c26b298-d2df-4ec5-9c09-9dcc99deea80", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "3A", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96037, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06064966, + "Left": 0.10991458, + "Top": 0.0674068, + "Width": 0.04047158 + }, + "Polygon": [ + { + "X": 0.11001825, + "Y": 0.0674068 + }, + { + "X": 0.15038615, + "Y": 0.067469165 + }, + { + "X": 0.1502844, + "Y": 0.12805647 + }, + { + "X": 0.10991458, + "Y": 0.12799595 + } + ] + }, + "Id": "d7eae832-5f5c-456d-90df-fe422576fd90", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "This", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.972015, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.057186004, + "Left": 0.15571061, + "Top": 0.069479875, + "Width": 0.015229989 + }, + "Polygon": [ + { + "X": 0.15580638, + "Y": 0.069479875 + }, + { + "X": 0.17094061, + "Y": 0.06950323 + }, + { + "X": 0.17084551, + "Y": 0.12666588 + }, + { + "X": 0.15571061, + "Y": 0.12664318 + } + ] + }, + "Id": "48a557d9-3004-4a3a-abc3-baa53571bd1e", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "is", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.9959, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05982988, + "Left": 0.17521986, + "Top": 0.06764277, + "Width": 0.032962434 + }, + "Polygon": [ + { + "X": 0.17531912, + "Y": 0.06764277 + }, + { + "X": 0.2081823, + "Y": 0.06769353 + }, + { + "X": 0.2080846, + "Y": 0.12747265 + }, + { + "X": 0.17521986, + "Y": 0.12742336 + } + ] + }, + "Id": "d42ba054-950a-4ead-adb8-d5442a9bcef1", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "the", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.95067, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060216933, + "Left": 0.21286602, + "Top": 0.0672074, + "Width": 0.0514436 + }, + "Polygon": [ + { + "X": 0.2129641, + "Y": 0.0672074 + }, + { + "X": 0.2643096, + "Y": 0.06728674 + }, + { + "X": 0.26421395, + "Y": 0.12742433 + }, + { + "X": 0.21286602, + "Y": 0.12734734 + } + ] + }, + "Id": "ed7c27ad-1933-4b47-9c3c-ad4e2ac70bc5", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Third", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.936005, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059806574, + "Left": 0.26865143, + "Top": 0.067673035, + "Width": 0.052701432 + }, + "Polygon": [ + { + "X": 0.26874623, + "Y": 0.067673035 + }, + { + "X": 0.32135287, + "Y": 0.067754306 + }, + { + "X": 0.3212605, + "Y": 0.12747961 + }, + { + "X": 0.26865143, + "Y": 0.12740071 + } + ] + }, + "Id": "7a2278c4-a094-4c5e-9865-e7ab843df2a5", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Table", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.92072, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.061081037, + "Left": 0.022986198, + "Top": 0.23468344, + "Width": 0.06081338 + }, + "Polygon": [ + { + "X": 0.023094691, + "Y": 0.23468344 + }, + { + "X": 0.08379958, + "Y": 0.23476954 + }, + { + "X": 0.08369397, + "Y": 0.29576448 + }, + { + "X": 0.022986198, + "Y": 0.29568118 + } + ] + }, + "Id": "530f610c-3a68-47e0-b813-3af980a2cba6", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Here's", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.99097, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.062352736, + "Left": 0.0886758, + "Top": 0.23383433, + "Width": 0.078456916 + }, + "Polygon": [ + { + "X": 0.088783324, + "Y": 0.23383433 + }, + { + "X": 0.16713272, + "Y": 0.23394549 + }, + { + "X": 0.167029, + "Y": 0.29618704 + }, + { + "X": 0.0886758, + "Y": 0.29607958 + } + ] + }, + "Id": "39864e6b-a11d-4df7-b14b-b3c2a93d7598", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "another", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.43588, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059230816, + "Left": 0.17238526, + "Top": 0.23643054, + "Width": 0.045458324 + }, + "Polygon": [ + { + "X": 0.17248361, + "Y": 0.23643054 + }, + { + "X": 0.21784358, + "Y": 0.23649482 + }, + { + "X": 0.21774733, + "Y": 0.29566136 + }, + { + "X": 0.17238526, + "Y": 0.2955991 + } + ] + }, + "Id": "52e85f2c-4515-4185-a424-dbf79c85925c", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Line.", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.95835, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05868826, + "Left": 0.22405379, + "Top": 0.23669225, + "Width": 0.034021147 + }, + "Polygon": [ + { + "X": 0.2241489, + "Y": 0.23669225 + }, + { + "X": 0.25807494, + "Y": 0.23674032 + }, + { + "X": 0.2579814, + "Y": 0.2953805 + }, + { + "X": 0.22405379, + "Y": 0.29533395 + } + ] + }, + "Id": "f8eb7fcf-07a4-4861-992d-1f0569f3cb4b", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "But", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.99104, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05954749, + "Left": 0.26216814, + "Top": 0.23547733, + "Width": 0.05310698 + }, + "Polygon": [ + { + "X": 0.26226285, + "Y": 0.23547733 + }, + { + "X": 0.31527513, + "Y": 0.23555249 + }, + { + "X": 0.3151829, + "Y": 0.2950248 + }, + { + "X": 0.26216814, + "Y": 0.29495203 + } + ] + }, + "Id": "d99a2dfd-3299-420b-bae2-1e57b9c1b998", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "there", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96268, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.061004657, + "Left": 0.32042545, + "Top": 0.2346403, + "Width": 0.0585502 + }, + "Polygon": [ + { + "X": 0.32051966, + "Y": 0.2346403 + }, + { + "X": 0.37897563, + "Y": 0.23472323 + }, + { + "X": 0.3788842, + "Y": 0.29564497 + }, + { + "X": 0.32042545, + "Y": 0.29556474 + } + ] + }, + "Id": "360ec685-8673-45b4-80f4-58a8618e71dd", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "won't", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.72328, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06082003, + "Left": 0.38233215, + "Top": 0.23437268, + "Width": 0.025115604 + }, + "Polygon": [ + { + "X": 0.38242322, + "Y": 0.23437268 + }, + { + "X": 0.40744776, + "Y": 0.23440818 + }, + { + "X": 0.40735787, + "Y": 0.29519272 + }, + { + "X": 0.38233215, + "Y": 0.29515836 + } + ] + }, + "Id": "9176fea5-df14-414b-9476-b2f36cd22ccc", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "be", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96757, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.04564935, + "Left": 0.4125539, + "Top": 0.24962188, + "Width": 0.011470176 + }, + "Polygon": [ + { + "X": 0.41262123, + "Y": 0.24962188 + }, + { + "X": 0.42402408, + "Y": 0.24963793 + }, + { + "X": 0.4239572, + "Y": 0.29527125 + }, + { + "X": 0.4125539, + "Y": 0.29525557 + } + ] + }, + "Id": "18609094-a6ac-45f2-9016-2618fb40b211", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "a", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.97326, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06093984, + "Left": 0.42894927, + "Top": 0.2342186, + "Width": 0.04716024 + }, + "Polygon": [ + { + "X": 0.42903826, + "Y": 0.2342186 + }, + { + "X": 0.4761095, + "Y": 0.23428538 + }, + { + "X": 0.47602272, + "Y": 0.29515845 + }, + { + "X": 0.42894927, + "Y": 0.2950938 + } + ] + }, + "Id": "c54a82bb-8c36-4135-855e-11a92aa6206f", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "third", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.956764, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05986719, + "Left": 0.7656042, + "Top": 0.40596026, + "Width": 0.054597124 + }, + "Polygon": [ + { + "X": 0.7656759, + "Y": 0.40596026 + }, + { + "X": 0.82020134, + "Y": 0.40603057 + }, + { + "X": 0.82013214, + "Y": 0.46582744 + }, + { + "X": 0.7656042, + "Y": 0.4657596 + } + ] + }, + "Id": "6aebb5f3-6536-4332-8b1c-24e9eaca1377", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.97042, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05783006, + "Left": 0.82571495, + "Top": 0.40721583, + "Width": 0.012716849 + }, + "Polygon": [ + { + "X": 0.8257816, + "Y": 0.40721583 + }, + { + "X": 0.8384318, + "Y": 0.40723214 + }, + { + "X": 0.83836573, + "Y": 0.4650459 + }, + { + "X": 0.82571495, + "Y": 0.46503016 + } + ] + }, + "Id": "f6e0e2bc-6cce-43a0-b8fd-c9f9148b07e3", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "4", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96015, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060603824, + "Left": 0.45389533, + "Top": 0.45613545, + "Width": 0.0544196 + }, + "Polygon": [ + { + "X": 0.45398265, + "Y": 0.45613545 + }, + { + "X": 0.5083149, + "Y": 0.45620343 + }, + { + "X": 0.5082302, + "Y": 0.5167393 + }, + { + "X": 0.45389533, + "Y": 0.5166738 + } + ] + }, + "Id": "f725479c-e2c4-4b75-ae76-2c530381989f", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.97135, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.0594259, + "Left": 0.5141585, + "Top": 0.45750356, + "Width": 0.011892127 + }, + "Polygon": [ + { + "X": 0.5142414, + "Y": 0.45750356 + }, + { + "X": 0.52605057, + "Y": 0.4575183 + }, + { + "X": 0.52596825, + "Y": 0.51692945 + }, + { + "X": 0.5141585, + "Y": 0.5169152 + } + ] + }, + "Id": "b6627c5c-4740-4dd5-9f73-fdbfa327934d", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "2", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96516, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059950683, + "Left": 0.7658444, + "Top": 0.50700593, + "Width": 0.054495823 + }, + "Polygon": [ + { + "X": 0.76591617, + "Y": 0.50700593 + }, + { + "X": 0.8203402, + "Y": 0.5070719 + }, + { + "X": 0.82027096, + "Y": 0.5669566 + }, + { + "X": 0.7658444, + "Y": 0.56689304 + } + ] + }, + "Id": "caebf9ba-4f8f-4309-ba8f-98e456da55b6", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.937126, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.058972064, + "Left": 0.82621217, + "Top": 0.50789815, + "Width": 0.01160391 + }, + "Polygon": [ + { + "X": 0.8262801, + "Y": 0.50789815 + }, + { + "X": 0.8378161, + "Y": 0.5079121 + }, + { + "X": 0.8377487, + "Y": 0.5668702 + }, + { + "X": 0.82621217, + "Y": 0.56685674 + } + ] + }, + "Id": "7099cf9a-1d2e-423d-b9f4-86e9e3613131", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "5", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.950165, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060244355, + "Left": 0.14196523, + "Top": 0.60751927, + "Width": 0.05452877 + }, + "Polygon": [ + { + "X": 0.14206666, + "Y": 0.60751927 + }, + { + "X": 0.196494, + "Y": 0.6075811 + }, + { + "X": 0.19639511, + "Y": 0.6677636 + }, + { + "X": 0.14196523, + "Y": 0.6677042 + } + ] + }, + "Id": "0e3bb8f6-49f8-4cb0-a98a-85d8773cd8ba", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.93955, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.0582782, + "Left": 0.20321693, + "Top": 0.6095262, + "Width": 0.010940837 + }, + "Polygon": [ + { + "X": 0.20331234, + "Y": 0.6095262 + }, + { + "X": 0.21415776, + "Y": 0.60953856 + }, + { + "X": 0.21406284, + "Y": 0.6678044 + }, + { + "X": 0.20321693, + "Y": 0.6677926 + } + ] + }, + "Id": "48afe1d1-6ac5-4e70-8c6a-6db4fc50ff04", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "1", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96113, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059749343, + "Left": 0.7656306, + "Top": 0.6076263, + "Width": 0.054711062 + }, + "Polygon": [ + { + "X": 0.7657022, + "Y": 0.6076263 + }, + { + "X": 0.82034165, + "Y": 0.6076884 + }, + { + "X": 0.8202726, + "Y": 0.6673757 + }, + { + "X": 0.7656306, + "Y": 0.667316 + } + ] + }, + "Id": "095f8603-c390-4b84-80e4-c0967692a19b", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.98238, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.057815585, + "Left": 0.82613856, + "Top": 0.6089325, + "Width": 0.012252903 + }, + "Polygon": [ + { + "X": 0.82620513, + "Y": 0.6089325 + }, + { + "X": 0.8383915, + "Y": 0.6089463 + }, + { + "X": 0.83832544, + "Y": 0.66674805 + }, + { + "X": 0.82613856, + "Y": 0.66673476 + } + ] + }, + "Id": "edcd2626-1649-4ab3-b8e3-32498dc0db80", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "6", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96977, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.060031436, + "Left": 0.4536933, + "Top": 0.7085798, + "Width": 0.05452253 + }, + "Polygon": [ + { + "X": 0.45377982, + "Y": 0.7085798 + }, + { + "X": 0.50821584, + "Y": 0.7086375 + }, + { + "X": 0.50813186, + "Y": 0.76861125 + }, + { + "X": 0.4536933, + "Y": 0.768556 + } + ] + }, + "Id": "5d76468a-ae16-4fe1-a476-7bd420760ce5", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.95663, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059265055, + "Left": 0.5143539, + "Top": 0.7091587, + "Width": 0.011282716 + }, + "Polygon": [ + { + "X": 0.51443654, + "Y": 0.7091587 + }, + { + "X": 0.52563655, + "Y": 0.7091706 + }, + { + "X": 0.5255544, + "Y": 0.7684238 + }, + { + "X": 0.5143539, + "Y": 0.7684124 + } + ] + }, + "Id": "3bba728e-568d-4633-b865-d74399c6610d", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "3", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.9692, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05990632, + "Left": 0.76564145, + "Top": 0.70864546, + "Width": 0.05469937 + }, + "Polygon": [ + { + "X": 0.7657132, + "Y": 0.70864546 + }, + { + "X": 0.8203409, + "Y": 0.7087034 + }, + { + "X": 0.8202716, + "Y": 0.76855177 + }, + { + "X": 0.76564145, + "Y": 0.76849633 + } + ] + }, + "Id": "e4392a19-90b7-4f10-a282-5b9e5333507d", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.95108, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05903927, + "Left": 0.8260529, + "Top": 0.7086894, + "Width": 0.012126014 + }, + "Polygon": [ + { + "X": 0.8261209, + "Y": 0.7086894 + }, + { + "X": 0.83817893, + "Y": 0.70870215 + }, + { + "X": 0.83811146, + "Y": 0.7677287 + }, + { + "X": 0.8260529, + "Y": 0.7677164 + } + ] + }, + "Id": "883389a2-da2d-4dac-8532-977f0d9e70af", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "7", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.96512, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.059505586, + "Left": 0.7660242, + "Top": 0.80975324, + "Width": 0.054307967 + }, + "Polygon": [ + { + "X": 0.76609546, + "Y": 0.80975324 + }, + { + "X": 0.82033217, + "Y": 0.8098066 + }, + { + "X": 0.8202634, + "Y": 0.8692588 + }, + { + "X": 0.7660242, + "Y": 0.8692079 + } + ] + }, + "Id": "b27c4f3d-efff-4ce5-8e8b-f8963013cba2", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "Value", + "TextType": "PRINTED" + }, + { + "BlockType": "WORD", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 99.90186, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.05811881, + "Left": 0.82609975, + "Top": 0.811519, + "Width": 0.011934723 + }, + "Polygon": [ + { + "X": 0.8261667, + "Y": 0.811519 + }, + { + "X": 0.83803445, + "Y": 0.8115307 + }, + { + "X": 0.83796805, + "Y": 0.86963785 + }, + { + "X": 0.82609975, + "Y": 0.8696267 + } + ] + }, + "Id": "0cdeed19-c6eb-45ca-875f-314dc2b0dc0e", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": "8", + "TextType": "PRINTED" + }, + { + "BlockType": "TABLE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 100, + "EntityTypes": [ + "STRUCTURED_TABLE" + ], + "Geometry": { + "BoundingBox": { + "Height": 0.51330113, + "Left": 0.023178393, + "Top": 0.37920597, + "Width": 0.9358861 + }, + "Polygon": [ + { + "X": 0.02408935, + "Y": 0.37920597 + }, + { + "X": 0.9590645, + "Y": 0.3804297 + }, + { + "X": 0.9585275, + "Y": 0.8925071 + }, + { + "X": 0.023178393, + "Y": 0.89164555 + } + ] + }, + "Id": "41944ceb-ff90-4f71-a618-dcceeb110ea5", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "7caafac5-1855-4f29-83fe-5f12ed836b1f", + "140fd853-842c-4894-ba02-bce436c45975", + "07c59f13-520c-480f-87c6-a6592c2ba3c2", + "73a3a6d8-6be9-4ec8-a9d8-397ed5eb6e84", + "0a52dce9-c168-4a88-9f54-331519bd5511", + "e66ebf16-119a-4abf-860f-e109b7b381b4", + "65e45972-447e-4c5c-ab33-3f9536496030", + "c0da9418-b148-4ba1-b0c5-0d5aed868763", + "eecb8ee0-4d4b-4fd1-9959-2a8fab2d37f3", + "425d3e53-b6dc-482a-b202-e273cdddd1ef", + "a2ffd917-09e6-4b90-a10a-a65ad03d2234", + "c982884f-6ab7-4d8c-97aa-6dfa9871c089", + "e8ca6f0c-4efb-4bc2-97fd-c65bde903cfd", + "056f2f66-e9a3-46f8-ada5-6c5b5d5d93aa", + "f92832ff-973e-4a14-b70a-a8bfa01c3cc6" + ], + "Type": "CHILD" + }, + { + "Ids": [ + "5859192f-d91e-488b-983b-cf673cfcc0c8", + "fac9b54a-8959-4d4f-b2b4-5e92e82a095c", + "36b3bc01-e2ef-4879-b683-5e7fa80e9f4b" + ], + "Type": "MERGED_CELL" + }, + { + "Ids": [ + "8abfc283-5256-4873-9334-017bae6e53ac" + ], + "Type": "TABLE_TITLE" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 1, + "ColumnSpan": 1, + "Confidence": 90.18555, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.106023915, + "Left": 0.023449618, + "Top": 0.37860325, + "Width": 0.31212407 + }, + "Polygon": [ + { + "X": 0.023637451, + "Y": 0.37860325 + }, + { + "X": 0.33557367, + "Y": 0.37901166 + }, + { + "X": 0.33541158, + "Y": 0.4846272 + }, + { + "X": 0.023449618, + "Y": 0.48424366 + } + ] + }, + "Id": "7caafac5-1855-4f29-83fe-5f12ed836b1f", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": 1, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 2, + "ColumnSpan": 1, + "Confidence": 94.82422, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.10599884, + "Left": 0.33541158, + "Top": 0.37901166, + "Width": 0.3119511 + }, + "Polygon": [ + { + "X": 0.33557367, + "Y": 0.37901166 + }, + { + "X": 0.6473627, + "Y": 0.3794199 + }, + { + "X": 0.6472263, + "Y": 0.4850105 + }, + { + "X": 0.33541158, + "Y": 0.4846272 + } + ] + }, + "Id": "140fd853-842c-4894-ba02-bce436c45975", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": 1, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 3, + "ColumnSpan": 1, + "Confidence": 82.8125, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.10537201, + "Left": 0.6472263, + "Top": 0.38002172, + "Width": 0.31183815 + }, + "Polygon": [ + { + "X": 0.64736193, + "Y": 0.38002172 + }, + { + "X": 0.9590645, + "Y": 0.3804297 + }, + { + "X": 0.9589544, + "Y": 0.48539373 + }, + { + "X": 0.6472263, + "Y": 0.4850105 + } + ] + }, + "Id": "07c59f13-520c-480f-87c6-a6592c2ba3c2", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "6aebb5f3-6536-4332-8b1c-24e9eaca1377", + "f6e0e2bc-6cce-43a0-b8fd-c9f9148b07e3" + ], + "Type": "CHILD" + } + ], + "RowIndex": 1, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 1, + "ColumnSpan": 1, + "Confidence": 90.18555, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.10179076, + "Left": 0.02326927, + "Top": 0.48424366, + "Width": 0.3121423 + }, + "Polygon": [ + { + "X": 0.023449618, + "Y": 0.48424366 + }, + { + "X": 0.33541158, + "Y": 0.4846272 + }, + { + "X": 0.33525595, + "Y": 0.5860344 + }, + { + "X": 0.02326927, + "Y": 0.5856748 + } + ] + }, + "Id": "73a3a6d8-6be9-4ec8-a9d8-397ed5eb6e84", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": 2, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 2, + "ColumnSpan": 1, + "Confidence": 94.82422, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.101766676, + "Left": 0.33525595, + "Top": 0.4846272, + "Width": 0.31197035 + }, + "Polygon": [ + { + "X": 0.33541158, + "Y": 0.4846272 + }, + { + "X": 0.6472263, + "Y": 0.4850105 + }, + { + "X": 0.6470953, + "Y": 0.58639383 + }, + { + "X": 0.33525595, + "Y": 0.5860344 + } + ] + }, + "Id": "0a52dce9-c168-4a88-9f54-331519bd5511", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "f725479c-e2c4-4b75-ae76-2c530381989f", + "b6627c5c-4740-4dd5-9f73-fdbfa327934d" + ], + "Type": "CHILD" + } + ], + "RowIndex": 2, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 3, + "ColumnSpan": 1, + "Confidence": 89.0625, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.10174268, + "Left": 0.6470953, + "Top": 0.4850105, + "Width": 0.31185904 + }, + "Polygon": [ + { + "X": 0.6472263, + "Y": 0.4850105 + }, + { + "X": 0.9589544, + "Y": 0.48539373 + }, + { + "X": 0.9588481, + "Y": 0.5867532 + }, + { + "X": 0.6470953, + "Y": 0.58639383 + } + ] + }, + "Id": "e66ebf16-119a-4abf-860f-e109b7b381b4", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "caebf9ba-4f8f-4309-ba8f-98e456da55b6", + "7099cf9a-1d2e-423d-b9f4-86e9e3613131" + ], + "Type": "CHILD" + } + ], + "RowIndex": 2, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 1, + "ColumnSpan": 1, + "Confidence": 90.18555, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.10178289, + "Left": 0.023088893, + "Top": 0.5856748, + "Width": 0.31216705 + }, + "Polygon": [ + { + "X": 0.02326927, + "Y": 0.5856748 + }, + { + "X": 0.33525595, + "Y": 0.5860344 + }, + { + "X": 0.3351003, + "Y": 0.68745774 + }, + { + "X": 0.023088893, + "Y": 0.68712205 + } + ] + }, + "Id": "65e45972-447e-4c5c-ab33-3f9536496030", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "0e3bb8f6-49f8-4cb0-a98a-85d8773cd8ba", + "48afe1d1-6ac5-4e70-8c6a-6db4fc50ff04" + ], + "Type": "CHILD" + } + ], + "RowIndex": 3, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 2, + "ColumnSpan": 1, + "Confidence": 90.625, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.10175881, + "Left": 0.3351003, + "Top": 0.5860344, + "Width": 0.31199506 + }, + "Polygon": [ + { + "X": 0.33525595, + "Y": 0.5860344 + }, + { + "X": 0.6470953, + "Y": 0.58639383 + }, + { + "X": 0.6469644, + "Y": 0.68779325 + }, + { + "X": 0.3351003, + "Y": 0.68745774 + } + ] + }, + "Id": "c0da9418-b148-4ba1-b0c5-0d5aed868763", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": 3, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 3, + "ColumnSpan": 1, + "Confidence": 80.27344, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.1017348, + "Left": 0.6469644, + "Top": 0.58639383, + "Width": 0.31188375 + }, + "Polygon": [ + { + "X": 0.6470953, + "Y": 0.58639383 + }, + { + "X": 0.9588481, + "Y": 0.5867532 + }, + { + "X": 0.95874184, + "Y": 0.68812865 + }, + { + "X": 0.6469644, + "Y": 0.68779325 + } + ] + }, + "Id": "eecb8ee0-4d4b-4fd1-9959-2a8fab2d37f3", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "095f8603-c390-4b84-80e4-c0967692a19b", + "edcd2626-1649-4ab3-b8e3-32498dc0db80" + ], + "Type": "CHILD" + } + ], + "RowIndex": 3, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 1, + "ColumnSpan": 1, + "Confidence": 90.18555, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.101775005, + "Left": 0.022908486, + "Top": 0.68712205, + "Width": 0.31219178 + }, + "Polygon": [ + { + "X": 0.023088893, + "Y": 0.68712205 + }, + { + "X": 0.3351003, + "Y": 0.68745774 + }, + { + "X": 0.3349446, + "Y": 0.78889704 + }, + { + "X": 0.022908486, + "Y": 0.7885853 + } + ] + }, + "Id": "425d3e53-b6dc-482a-b202-e273cdddd1ef", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": 4, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 2, + "ColumnSpan": 1, + "Confidence": 90.625, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.101750925, + "Left": 0.3349446, + "Top": 0.68745774, + "Width": 0.3120198 + }, + "Polygon": [ + { + "X": 0.3351003, + "Y": 0.68745774 + }, + { + "X": 0.6469644, + "Y": 0.68779325 + }, + { + "X": 0.64683336, + "Y": 0.78920865 + }, + { + "X": 0.3349446, + "Y": 0.78889704 + } + ] + }, + "Id": "a2ffd917-09e6-4b90-a10a-a65ad03d2234", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "5d76468a-ae16-4fe1-a476-7bd420760ce5", + "3bba728e-568d-4633-b865-d74399c6610d" + ], + "Type": "CHILD" + } + ], + "RowIndex": 4, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 3, + "ColumnSpan": 1, + "Confidence": 84.81445, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.10172693, + "Left": 0.64683336, + "Top": 0.68779325, + "Width": 0.31190842 + }, + "Polygon": [ + { + "X": 0.6469644, + "Y": 0.68779325 + }, + { + "X": 0.95874184, + "Y": 0.68812865 + }, + { + "X": 0.9586355, + "Y": 0.78952014 + }, + { + "X": 0.64683336, + "Y": 0.78920865 + } + ] + }, + "Id": "c982884f-6ab7-4d8c-97aa-6dfa9871c089", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "e4392a19-90b7-4f10-a282-5b9e5333507d", + "883389a2-da2d-4dac-8532-977f0d9e70af" + ], + "Type": "CHILD" + } + ], + "RowIndex": 4, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 1, + "ColumnSpan": 1, + "Confidence": 90.18555, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.10176712, + "Left": 0.022728054, + "Top": 0.7885853, + "Width": 0.31221655 + }, + "Polygon": [ + { + "X": 0.022908486, + "Y": 0.7885853 + }, + { + "X": 0.3349446, + "Y": 0.78889704 + }, + { + "X": 0.3347889, + "Y": 0.8903524 + }, + { + "X": 0.022728054, + "Y": 0.89006466 + } + ] + }, + "Id": "e8ca6f0c-4efb-4bc2-97fd-c65bde903cfd", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": 5, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 2, + "ColumnSpan": 1, + "Confidence": 90.625, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.10174305, + "Left": 0.3347889, + "Top": 0.78889704, + "Width": 0.3120445 + }, + "Polygon": [ + { + "X": 0.3349446, + "Y": 0.78889704 + }, + { + "X": 0.64683336, + "Y": 0.78920865 + }, + { + "X": 0.64670235, + "Y": 0.89064014 + }, + { + "X": 0.3347889, + "Y": 0.8903524 + } + ] + }, + "Id": "056f2f66-e9a3-46f8-ada5-6c5b5d5d93aa", + "Page": null, + "Query": null, + "Relationships": null, + "RowIndex": 5, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "CELL", + "ColumnIndex": 3, + "ColumnSpan": 1, + "Confidence": 84.13086, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.10329844, + "Left": 0.6467003, + "Top": 0.78920865, + "Width": 0.31193516 + }, + "Polygon": [ + { + "X": 0.64683336, + "Y": 0.78920865 + }, + { + "X": 0.9586355, + "Y": 0.78952014 + }, + { + "X": 0.9585275, + "Y": 0.8925071 + }, + { + "X": 0.6467003, + "Y": 0.8922199 + } + ] + }, + "Id": "f92832ff-973e-4a14-b70a-a8bfa01c3cc6", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "b27c4f3d-efff-4ce5-8e8b-f8963013cba2", + "0cdeed19-c6eb-45ca-875f-314dc2b0dc0e" + ], + "Type": "CHILD" + } + ], + "RowIndex": 5, + "RowSpan": 1, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "MERGED_CELL", + "ColumnIndex": 1, + "ColumnSpan": 1, + "Confidence": 90.18555, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.5127266, + "Left": 0.023178393, + "Top": 0.37920597, + "Width": 0.31239435 + }, + "Polygon": [ + { + "X": 0.02408935, + "Y": 0.37920597 + }, + { + "X": 0.33557275, + "Y": 0.37961364 + }, + { + "X": 0.33478644, + "Y": 0.8919326 + }, + { + "X": 0.023178393, + "Y": 0.89164555 + } + ] + }, + "Id": "5859192f-d91e-488b-983b-cf673cfcc0c8", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "7caafac5-1855-4f29-83fe-5f12ed836b1f", + "73a3a6d8-6be9-4ec8-a9d8-397ed5eb6e84", + "65e45972-447e-4c5c-ab33-3f9536496030", + "425d3e53-b6dc-482a-b202-e273cdddd1ef", + "e8ca6f0c-4efb-4bc2-97fd-c65bde903cfd" + ], + "Type": "CHILD" + } + ], + "RowIndex": 1, + "RowSpan": 5, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "MERGED_CELL", + "ColumnIndex": 2, + "ColumnSpan": 1, + "Confidence": 94.82422, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.20678023, + "Left": 0.33525595, + "Top": 0.37961364, + "Width": 0.31210595 + }, + "Polygon": [ + { + "X": 0.33557275, + "Y": 0.37961364 + }, + { + "X": 0.64736193, + "Y": 0.38002172 + }, + { + "X": 0.6470953, + "Y": 0.58639383 + }, + { + "X": 0.33525595, + "Y": 0.5860344 + } + ] + }, + "Id": "fac9b54a-8959-4d4f-b2b4-5e92e82a095c", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "140fd853-842c-4894-ba02-bce436c45975", + "0a52dce9-c168-4a88-9f54-331519bd5511" + ], + "Type": "CHILD" + } + ], + "RowIndex": 1, + "RowSpan": 2, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "MERGED_CELL", + "ColumnIndex": 2, + "ColumnSpan": 1, + "Confidence": 90.625, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.30618545, + "Left": 0.33478644, + "Top": 0.5860344, + "Width": 0.31230888 + }, + "Polygon": [ + { + "X": 0.33525595, + "Y": 0.5860344 + }, + { + "X": 0.6470953, + "Y": 0.58639383 + }, + { + "X": 0.6467003, + "Y": 0.8922199 + }, + { + "X": 0.33478644, + "Y": 0.8919326 + } + ] + }, + "Id": "36b3bc01-e2ef-4879-b683-5e7fa80e9f4b", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "c0da9418-b148-4ba1-b0c5-0d5aed868763", + "a2ffd917-09e6-4b90-a10a-a65ad03d2234", + "056f2f66-e9a3-46f8-ada5-6c5b5d5d93aa" + ], + "Type": "CHILD" + } + ], + "RowIndex": 3, + "RowSpan": 3, + "SelectionStatus": "", + "Text": null, + "TextType": "" + }, + { + "BlockType": "TABLE_TITLE", + "ColumnIndex": null, + "ColumnSpan": null, + "Confidence": 95.166016, + "EntityTypes": null, + "Geometry": { + "BoundingBox": { + "Height": 0.06377692, + "Left": 0.022731235, + "Top": 0.23356341, + "Width": 0.4543685 + }, + "Polygon": [ + { + "X": 0.022843577, + "Y": 0.23356341 + }, + { + "X": 0.47709975, + "Y": 0.234208 + }, + { + "X": 0.4770098, + "Y": 0.29734033 + }, + { + "X": 0.022731235, + "Y": 0.2967174 + } + ] + }, + "Id": "8abfc283-5256-4873-9334-017bae6e53ac", + "Page": null, + "Query": null, + "Relationships": [ + { + "Ids": [ + "530f610c-3a68-47e0-b813-3af980a2cba6", + "39864e6b-a11d-4df7-b14b-b3c2a93d7598", + "52e85f2c-4515-4185-a424-dbf79c85925c", + "f8eb7fcf-07a4-4861-992d-1f0569f3cb4b", + "d99a2dfd-3299-420b-bae2-1e57b9c1b998", + "360ec685-8673-45b4-80f4-58a8618e71dd", + "9176fea5-df14-414b-9476-b2f36cd22ccc", + "18609094-a6ac-45f2-9016-2618fb40b211", + "c54a82bb-8c36-4135-855e-11a92aa6206f" + ], + "Type": "CHILD" + } + ], + "RowIndex": null, + "RowSpan": null, + "SelectionStatus": "", + "Text": null, + "TextType": "" + } + ], + "DocumentMetadata": { + "Pages": 1 + }, + "HumanLoopActivationOutput": null, + "ResultMetadata": {} + } + } +] \ No newline at end of file diff --git a/internal/document/text/childElements.go b/internal/document/text/childElements.go index 38d1b98f..1d044141 100644 --- a/internal/document/text/childElements.go +++ b/internal/document/text/childElements.go @@ -51,7 +51,7 @@ func (s *Service) getBlockMap(blocksList []types.Block) map[uuid.UUID]types.Bloc } id, err := uuid.Parse(*block.Id) if err != nil { - slog.Warn("error parsing block id", "error", err, "id", *block.Id) + slog.Warn("error parsing block id for block map", "error", err, "id", *block.Id) continue } diff --git a/internal/document/text/documentText_test.go b/internal/document/text/documentText_test.go index 85238d13..13e42a3b 100644 --- a/internal/document/text/documentText_test.go +++ b/internal/document/text/documentText_test.go @@ -67,7 +67,7 @@ func TestGetDocumentText(t *testing.T) { require.EqualError(t, err, "no textract response") }) - t.Run("sampleOne - cnc_01-06", func(t *testing.T) { + t.Run("cnc_01-06", func(t *testing.T) { t.Parallel() cfg := DocTextConfig{} svc := Service{ @@ -86,7 +86,7 @@ func TestGetDocumentText(t *testing.T) { assertReaders(t, txtFile, text) }) - t.Run("sampleOne - hn_0109", func(t *testing.T) { + t.Run("hn_0109", func(t *testing.T) { t.Parallel() cfg := DocTextConfig{} svc := Service{ @@ -105,7 +105,7 @@ func TestGetDocumentText(t *testing.T) { assertReaders(t, txtFile, text) }) - t.Run("sampleOne - hn_23-70", func(t *testing.T) { + t.Run("hn_23-70", func(t *testing.T) { t.Parallel() cfg := DocTextConfig{} svc := Service{ @@ -124,7 +124,7 @@ func TestGetDocumentText(t *testing.T) { assertReaders(t, txtFile, text) }) - t.Run("sampleOne - chc_1", func(t *testing.T) { + t.Run("chc_1", func(t *testing.T) { t.Parallel() cfg := DocTextConfig{} svc := Service{ @@ -141,6 +141,25 @@ func TestGetDocumentText(t *testing.T) { text, err := svc.getDocumentText(ctx, pdf) require.NoError(t, err) + assertReaders(t, txtFile, text) + }) + t.Run("merged_cell_table", func(t *testing.T) { + t.Parallel() + cfg := DocTextConfig{} + svc := Service{ + cfg: &cfg, + } + mockTextract := textractmock.NewMockTextractClient(t) + cfg.TextractClient = mockTextract + + textractBaseOut, pdf, txtFile, close := getFiles(t, "merged_cell_table") + defer close() + + textExpectations(t, ctx, mockTextract, pdf, textractBaseOut) + + text, err := svc.getDocumentText(ctx, pdf) + require.NoError(t, err) + assertReaders(t, txtFile, text) }) } diff --git a/internal/document/text/pageText.go b/internal/document/text/pageText.go index 4c4cd0fd..5b21d247 100644 --- a/internal/document/text/pageText.go +++ b/internal/document/text/pageText.go @@ -32,15 +32,15 @@ func (s *Service) getPageText(ctx context.Context, document documenttypes.File, blockMap := s.getBlockMap(res.Blocks) - lines, tables, tableBlockMap, err := s.getPageElements(ctx, document, index, *pageBlock, blockMap) + lines, specialFeatures, err := s.getPageElements(ctx, document, index, *pageBlock, blockMap) if err != nil { return "", err } - return s.buildPageText(ctx, lines, blockMap, index, tables, tableBlockMap) + return s.buildPageText(ctx, lines, blockMap, index, specialFeatures) } -func (s *Service) getPageElements(ctx context.Context, document documenttypes.File, index int, pageBlock types.Block, blockMap map[uuid.UUID]types.Block) ([]uuid.UUID, []uuid.UUID, map[uuid.UUID]types.Block, error) { +func (s *Service) getPageElements(ctx context.Context, document documenttypes.File, index int, pageBlock types.Block, blockMap map[uuid.UUID]types.Block) ([]uuid.UUID, specialisedFeatures, error) { directChildren := s.getDirectChildren(pageBlock, blockMap) hasTable := false @@ -50,18 +50,30 @@ func (s *Service) getPageElements(ctx context.Context, document documenttypes.Fi } } - var tables []uuid.UUID - var tableBlockMap map[uuid.UUID]types.Block + features := []types.FeatureType{} if hasTable { - ids, blockMap, err := s.getTables(ctx, document, index) - if err != nil { - return nil, nil, nil, err - } - tables = ids - tableBlockMap = blockMap + features = append(features, types.FeatureTypeTables) + // features = append(features, types.FeatureTypeForms) } - return directChildren, tables, tableBlockMap, nil + // Detecting Checkboxes - + // if has tables + // For a page with no tables, we look for 3 out of 4 of the following conditions + // has_exhibit→ 'exhibit' is on the page + // has_benefit→ one of ['benefit plan', 'benefit plan(s)', 'applicable benefit', 'benefits'] is on the page + // has_plans→ one of ['plan(s):', 'plan(s)/program(s):', 'plans:', 'plan/program:', 'plan(s)', 'plans'] is on the page + // has_services → one of ['services:', 'service:', 'service(s):', 'services', 'service(s)'] is on the page + + if len(features) == 0 { + return directChildren, specialisedFeatures{}, nil + } + + featuresOut, err := s.getSpecialisedFeatures(ctx, document, index, features) + if err != nil { + return nil, specialisedFeatures{}, err + } + + return directChildren, featuresOut, nil } type buildParams struct { @@ -69,7 +81,7 @@ type buildParams struct { currentTable int } -func (s *Service) buildPageText(ctx context.Context, lines []uuid.UUID, blockMap map[uuid.UUID]types.Block, index int, tables []uuid.UUID, tableBlockMap map[uuid.UUID]types.Block) (string, error) { +func (s *Service) buildPageText(ctx context.Context, lines []uuid.UUID, blockMap map[uuid.UUID]types.Block, index int, specialFeatures specialisedFeatures) (string, error) { var builder strings.Builder params := buildParams{ numOfSignatures: 0, @@ -77,15 +89,15 @@ func (s *Service) buildPageText(ctx context.Context, lines []uuid.UUID, blockMap } for _, id := range lines { - err := s.addComponentText(ctx, blockMap[id], blockMap, tables, tableBlockMap, ¶ms, &builder) + err := s.addComponentText(ctx, blockMap[id], blockMap, specialFeatures, ¶ms, &builder) if err != nil { return "", err } } - for params.currentTable < len(tables) { - id := tables[params.currentTable] - err := s.addComponentText(ctx, tableBlockMap[id], blockMap, tables, tableBlockMap, ¶ms, &builder) + for params.currentTable < len(specialFeatures.Tables) { + id := specialFeatures.Tables[params.currentTable] + err := s.addComponentText(ctx, specialFeatures.BlockMap[id], blockMap, specialFeatures, ¶ms, &builder) if err != nil { return "", err } @@ -98,11 +110,11 @@ func (s *Service) buildPageText(ctx context.Context, lines []uuid.UUID, blockMap return builder.String(), nil } -func (s *Service) addComponentText(ctx context.Context, block types.Block, blockMap map[uuid.UUID]types.Block, tables []uuid.UUID, tableBlockMap map[uuid.UUID]types.Block, params *buildParams, builder *strings.Builder) error { +func (s *Service) addComponentText(ctx context.Context, block types.Block, blockMap map[uuid.UUID]types.Block, specialFeatures specialisedFeatures, params *buildParams, builder *strings.Builder) error { switch block.BlockType { case types.BlockTypeLayoutText, types.BlockTypeLayoutTitle, types.BlockTypeLayoutHeader, types.BlockTypeLayoutFooter, types.BlockTypeLayoutSectionHeader, types.BlockTypeLayoutPageNumber, types.BlockTypeLayoutList, types.BlockTypeLayoutFigure, types.BlockTypeLayoutKeyValue: for _, id := range s.getChildIds(block) { - err := s.addComponentText(ctx, blockMap[id], blockMap, tables, tableBlockMap, params, builder) + err := s.addComponentText(ctx, blockMap[id], blockMap, specialFeatures, params, builder) if err != nil { return err } @@ -122,9 +134,9 @@ func (s *Service) addComponentText(ctx context.Context, block types.Block, block case types.BlockTypeSignature: params.numOfSignatures++ case types.BlockTypeLayoutTable, types.BlockTypeTable: - if block.BlockType == types.BlockTypeLayoutTable && len(tables) <= params.currentTable { + if block.BlockType == types.BlockTypeLayoutTable && len(specialFeatures.Tables) <= params.currentTable { for _, child := range s.getChildIds(block) { - err := s.addComponentText(ctx, blockMap[child], blockMap, tables, tableBlockMap, params, builder) + err := s.addComponentText(ctx, blockMap[child], blockMap, specialFeatures, params, builder) if err != nil { return err } @@ -132,10 +144,10 @@ func (s *Service) addComponentText(ctx context.Context, block types.Block, block params.currentTable++ break } - tableId := tables[params.currentTable] + tableId := specialFeatures.Tables[params.currentTable] params.currentTable++ - tableBlock := tableBlockMap[tableId] - err := s.addTable(ctx, tableBlock, tableBlockMap, builder) + tableBlock := specialFeatures.BlockMap[tableId] + err := s.addTable(ctx, tableBlock, specialFeatures.BlockMap, builder) if err != nil { return err } diff --git a/internal/document/text/pageText_test.go b/internal/document/text/pageText_test.go index c1b88769..431810cb 100644 --- a/internal/document/text/pageText_test.go +++ b/internal/document/text/pageText_test.go @@ -77,7 +77,7 @@ func TestGetBlockMap(t *testing.T) { }, outBlocks) }) t.Run("invalid block id", func(t *testing.T) { - blockIdStr := "blockId.String()" + blockIdStr := "invalid_block_id" blocks := []types.Block{ { Id: &blockIdStr, diff --git a/internal/document/text/tables.go b/internal/document/text/tables.go index cbd0dfb1..7dd5010f 100644 --- a/internal/document/text/tables.go +++ b/internal/document/text/tables.go @@ -32,9 +32,9 @@ func (s *Service) addTable(ctx context.Context, block types.Block, blockMap map[ s.addComponentTable(ctx, blockMap[uid], blockMap, ¶ms) } - tableArr := make([][]string, params.maxRow) + tableArr := make([][]string, params.maxRow+1) for i := range tableArr { - tableArr[i] = make([]string, params.maxColumn) + tableArr[i] = make([]string, params.maxColumn+1) } for _, cell := range params.table { @@ -62,53 +62,91 @@ type tableParams struct { func (s *Service) addComponentTable(ctx context.Context, block types.Block, blockMap map[uuid.UUID]types.Block, params *tableParams) { switch block.BlockType { case types.BlockTypeMergedCell: - for _, id := range s.getChildIds(block) { - s.addComponentTable(ctx, blockMap[id], blockMap, params) + content := "" + for _, uid := range s.getChildIds(block) { + if blockMap[uid].BlockType != types.BlockTypeCell { + slog.Warn("not a cell", "block_type", blockMap[uid].BlockType) + continue + } + content = s.getCellContent(blockMap[uid], blockMap) + if content != "" { + break + } + } + startColumnIndex := int(*block.ColumnIndex - 1) + startRowIndex := int(*block.RowIndex - 1) + endColumnIndex := startColumnIndex + int(*block.ColumnSpan) - 1 + endRowIndex := startRowIndex + int(*block.RowSpan) - 1 + for row := startRowIndex; row <= endRowIndex; row++ { + for column := startColumnIndex; column <= endColumnIndex; column++ { + s.addCellToTable( + row, + column, + content, + params, + ) + } } case types.BlockTypeCell: - var str strings.Builder - for _, uid := range s.getChildIds(block) { - if blockMap[uid].BlockType == types.BlockTypeWord { - if str.String() != "" { - str.WriteRune(' ') - } - str.WriteString(*blockMap[uid].Text) - } - - if params.maxRow < int(*block.RowIndex) { - params.maxRow = int(*block.RowIndex) - } - if params.maxColumn < int(*block.ColumnIndex) { - params.maxColumn = int(*block.ColumnIndex) - } - - params.table = append(params.table, cell{ - column: int(*block.ColumnIndex) - 1, - row: int(*block.RowIndex) - 1, - value: str.String(), - }) - } + content := s.getCellContent(block, blockMap) + s.addCellToTable( + int(*block.RowIndex)-1, + int(*block.ColumnIndex)-1, + content, + params, + ) default: slog.Info("unhandled block type in table", "type", block.BlockType) } } -func (s *Service) getTables(ctx context.Context, document documenttypes.File, index int) ([]uuid.UUID, map[uuid.UUID]types.Block, error) { +func (s *Service) getCellContent(block types.Block, blockMap map[uuid.UUID]types.Block) string { + var str strings.Builder + for _, uid := range s.getChildIds(block) { + if blockMap[uid].BlockType == types.BlockTypeWord { + if str.String() != "" { + str.WriteRune(' ') + } + str.WriteString(*blockMap[uid].Text) + } + } + + return str.String() +} + +func (s *Service) addCellToTable(rowIndex int, columnIndex int, content string, params *tableParams) { + if params.maxRow < rowIndex { + params.maxRow = rowIndex + } + if params.maxColumn < columnIndex { + params.maxColumn = columnIndex + } + params.table = append(params.table, cell{ + column: columnIndex, + row: rowIndex, + value: content, + }) +} + +type specialisedFeatures struct { + BlockMap map[uuid.UUID]types.Block + Tables []uuid.UUID +} + +func (s *Service) getSpecialisedFeatures(ctx context.Context, document documenttypes.File, index int, features []types.FeatureType) (specialisedFeatures, error) { pageBytes, err := document.GetPageAsPNG(ctx, index) if err != nil { - return nil, nil, err + return specialisedFeatures{}, err } res, err := s.cfg.GetTextractClient().AnalyzeDocument(ctx, &textract.AnalyzeDocumentInput{ Document: &types.Document{ Bytes: pageBytes, }, - FeatureTypes: []types.FeatureType{ - types.FeatureTypeTables, - }, + FeatureTypes: features, }) if err != nil { - return nil, nil, err + return specialisedFeatures{}, err } tables := []uuid.UUID{} @@ -116,7 +154,7 @@ func (s *Service) getTables(ctx context.Context, document documenttypes.File, in if block.BlockType == types.BlockTypeTable { id, err := uuid.Parse(*block.Id) if err != nil { - slog.Warn("error parsing block id", "error", err, "id", *block.Id) + slog.Warn("error parsing block id for tables", "error", err, "id", *block.Id) continue } @@ -125,5 +163,8 @@ func (s *Service) getTables(ctx context.Context, document documenttypes.File, in } blocks := s.getBlockMap(res.Blocks) - return tables, blocks, nil + return specialisedFeatures{ + BlockMap: blocks, + Tables: tables, + }, nil } diff --git a/internal/document/types/pdf_test.go b/internal/document/types/pdf_test.go index 3a657593..ef042b37 100644 --- a/internal/document/types/pdf_test.go +++ b/internal/document/types/pdf_test.go @@ -2,10 +2,7 @@ package documenttypes import ( "context" - "io" "math" - "os" - "path/filepath" "strings" "testing" @@ -268,34 +265,6 @@ func TestIsCorrupt(t *testing.T) { reason := pdf.IsCorrupt(ctx) assert.Nil(t, reason) }) - t.Run("validate pdfs in assets/original", func(t *testing.T) { - var pdfFiles []string - dir := "../../../assets/original" - - err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - - if !info.IsDir() && strings.ToLower(filepath.Ext(path)) == ".pdf" { - pdfFiles = append(pdfFiles, path) - } - return nil - }) - require.NoError(t, err) - - for _, filename := range pdfFiles { - file, err := os.Open(filename) - require.NoError(t, err) - defer file.Close() - - readSeeker := io.ReadSeeker(file) - - pdf := NewPDF(readSeeker) - docErr := pdf.IsCorrupt(ctx) - assert.Nil(t, docErr) - } - }) } func TestNewPDF(t *testing.T) { diff --git a/internal/test/ecosystem.go b/internal/test/ecosystem.go index 17ab8b9d..3cdb8efe 100644 --- a/internal/test/ecosystem.go +++ b/internal/test/ecosystem.go @@ -67,6 +67,12 @@ func CreateFullNetwork(t testing.TB, ctx context.Context, cfg FullDependenciesCo }() } + wg.Add(1) + go func() { + buildImage(t, ctx) + wg.Done() + }() + wg.Wait() qService, err := queryapi.NewClientWithResponses(apiContainers[QueryAPIName].URI) diff --git a/scripts/tests.yml b/scripts/tests.yml index 795e4b14..505c49b5 100644 --- a/scripts/tests.yml +++ b/scripts/tests.yml @@ -47,13 +47,13 @@ tasks: - task: coverage race: cmds: - - GOMAXPROCS={{.TEST_PARALLEL}} go test -count=1 -parallel {{.TEST_PARALLEL}} -race ./... + - GOMAXPROCS={{.TEST_PARALLEL}} go test -count=1 -parallel {{.CPU_COUNT}} -race ./... perf: vars: NUM_RESULTS: 5 cmds: - | - GOMAXPROCS={{.TEST_PARALLEL}} go test -count=1 -parallel {{.TEST_PARALLEL}} -json ./... \ + GOMAXPROCS={{.TEST_PARALLEL}} go test -count=1 -parallel {{.CPU_COUNT}} -json ./... \ > {{.TEST_FILE}} - | echo -e "🐢 TOP {{.NUM_RESULTS}} SLOWEST INDIVIDUAL PACKAGE RUNS:"