| 44 | doc = doc_result.legacy_document |
| 45 | |
| 46 | def _process_page_segments(doc_items: list[Tuple[int, BaseCell]], page: Page): |
| 47 | segments = [] |
| 48 | |
| 49 | for ix, item in doc_items: |
| 50 | item_type = item.obj_type |
| 51 | label = label_to_doclaynet.get(item_type, None) |
| 52 | |
| 53 | if label is None or item.prov is None or page.size is None: |
| 54 | continue |
| 55 | |
| 56 | bbox = BoundingBox.from_tuple( |
| 57 | tuple(item.prov[0].bbox), origin=CoordOrigin.BOTTOMLEFT |
| 58 | ) |
| 59 | new_bbox = bbox.to_top_left_origin(page_height=page.size.height).normalized( |
| 60 | page_size=page.size |
| 61 | ) |
| 62 | |
| 63 | new_segment = { |
| 64 | "index_in_doc": ix, |
| 65 | "label": label, |
| 66 | "text": item.text if item.text is not None else "", |
| 67 | "bbox": new_bbox.as_tuple(), |
| 68 | "data": [], |
| 69 | } |
| 70 | |
| 71 | if isinstance(item, Table): |
| 72 | table_html = item.export_to_html() |
| 73 | new_segment["data"].append( |
| 74 | { |
| 75 | "html_seq": table_html, |
| 76 | "otsl_seq": "", |
| 77 | } |
| 78 | ) |
| 79 | |
| 80 | segments.append(new_segment) |
| 81 | |
| 82 | return segments |
| 83 | |
| 84 | def _process_page_cells(page: Page): |
| 85 | cells: List[dict] = [] |