From 3213b247ad6870ff984271f09f7720be68d9479b Mon Sep 17 00:00:00 2001 From: Matteo <43417658+Matteo-Omenetti@users.noreply.github.com> Date: Fri, 24 Jan 2025 16:54:22 +0100 Subject: [PATCH] feat: Code and equation model for PDF and code blocks in markdown (#752) * propagated changes for new CodeItem class Signed-off-by: Matteo Omenetti * Rebased branch on latest main. changes for CodeItem Signed-off-by: Matteo Omenetti * removed unused files Signed-off-by: Matteo Omenetti * chore: update lockfile Signed-off-by: Christoph Auer * pin latest docling-core Signed-off-by: Michele Dolfi * update docling-core pinning Signed-off-by: Michele Dolfi * pin docling-core Signed-off-by: Michele Dolfi * use new add_code in backends and update typing in MD backend Signed-off-by: Michele Dolfi * added if statement for backend Signed-off-by: Matteo Omenetti * removed unused import Signed-off-by: Matteo Omenetti * removed print statements Signed-off-by: Matteo Omenetti * gt for new pdf Signed-off-by: Matteo Omenetti * Update docling/pipeline/standard_pdf_pipeline.py Co-authored-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com> Signed-off-by: Matteo <43417658+Matteo-Omenetti@users.noreply.github.com> * fixed doc comment of __call__ function of code_formula_model Signed-off-by: Matteo Omenetti * fix artifacts_path type Signed-off-by: Michele Dolfi * move imports Signed-off-by: Michele Dolfi * move expansion_factor to base class Signed-off-by: Michele Dolfi --------- Signed-off-by: Matteo Omenetti Signed-off-by: Christoph Auer Signed-off-by: Michele Dolfi Signed-off-by: Matteo <43417658+Matteo-Omenetti@users.noreply.github.com> Co-authored-by: Christoph Auer Co-authored-by: Michele Dolfi Co-authored-by: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com> --- docling/backend/asciidoc_backend.py | 1 - docling/backend/html_backend.py | 2 +- docling/backend/md_backend.py | 71 ++- docling/backend/msexcel_backend.py | 1 - docling/backend/msword_backend.py | 1 - docling/backend/pdf_backend.py | 2 - docling/datamodel/pipeline_options.py | 14 +- docling/models/base_model.py | 19 +- docling/models/code_formula_model.py | 245 ++++++++++ docling/models/layout_model.py | 2 +- docling/models/page_assemble_model.py | 25 - docling/models/tesseract_ocr_cli_model.py | 1 - docling/pipeline/base_pipeline.py | 8 +- docling/pipeline/standard_pdf_pipeline.py | 21 +- docling/utils/glm_utils.py | 5 +- docs/examples/develop_picture_enrichment.py | 2 - poetry.lock | 460 +++++++++--------- pyproject.toml | 4 +- tests/data/code_and_formula.pdf | Bin 0 -> 94301 bytes .../docling_v1/code_and_formula.doctags.txt | 13 + .../docling_v1/code_and_formula.json | 1 + .../docling_v1/code_and_formula.md | 19 + .../docling_v1/code_and_formula.pages.json | 1 + .../docling_v2/code_and_formula.doctags.txt | 14 + .../docling_v2/code_and_formula.json | 1 + .../docling_v2/code_and_formula.md | 25 + .../docling_v2/code_and_formula.pages.json | 1 + tests/test_code_formula.py | 66 +++ 28 files changed, 707 insertions(+), 318 deletions(-) create mode 100644 docling/models/code_formula_model.py create mode 100644 tests/data/code_and_formula.pdf create mode 100644 tests/data/groundtruth/docling_v1/code_and_formula.doctags.txt create mode 100644 tests/data/groundtruth/docling_v1/code_and_formula.json create mode 100644 tests/data/groundtruth/docling_v1/code_and_formula.md create mode 100644 tests/data/groundtruth/docling_v1/code_and_formula.pages.json create mode 100644 tests/data/groundtruth/docling_v2/code_and_formula.doctags.txt create mode 100644 tests/data/groundtruth/docling_v2/code_and_formula.json create mode 100644 tests/data/groundtruth/docling_v2/code_and_formula.md create mode 100644 tests/data/groundtruth/docling_v2/code_and_formula.pages.json create mode 100644 tests/test_code_formula.py diff --git a/docling/backend/asciidoc_backend.py b/docling/backend/asciidoc_backend.py index 829419af..397bfc44 100644 --- a/docling/backend/asciidoc_backend.py +++ b/docling/backend/asciidoc_backend.py @@ -24,7 +24,6 @@ class AsciiDocBackend(DeclarativeDocumentBackend): - def __init__(self, in_doc: InputDocument, path_or_stream: Union[BytesIO, Path]): super().__init__(in_doc, path_or_stream) diff --git a/docling/backend/html_backend.py b/docling/backend/html_backend.py index ae478885..66dd4a2c 100644 --- a/docling/backend/html_backend.py +++ b/docling/backend/html_backend.py @@ -215,7 +215,7 @@ def handle_code(self, element, idx, doc): label = DocItemLabel.CODE if len(text) == 0: return - doc.add_text(parent=self.parents[self.level], label=label, text=text) + doc.add_code(parent=self.parents[self.level], label=label, text=text) def handle_paragraph(self, element, idx, doc): """Handles paragraph tags (p).""" diff --git a/docling/backend/md_backend.py b/docling/backend/md_backend.py index 2bcc6d7d..8171085c 100644 --- a/docling/backend/md_backend.py +++ b/docling/backend/md_backend.py @@ -3,19 +3,22 @@ import warnings from io import BytesIO from pathlib import Path -from typing import Set, Union +from typing import List, Optional, Set, Union import marko import marko.ext import marko.ext.gfm import marko.inline from docling_core.types.doc import ( + DocItem, DocItemLabel, DoclingDocument, DocumentOrigin, GroupLabel, + NodeItem, TableCell, TableData, + TextItem, ) from marko import Markdown @@ -27,8 +30,7 @@ class MarkdownDocumentBackend(DeclarativeDocumentBackend): - - def shorten_underscore_sequences(self, markdown_text, max_length=10): + def shorten_underscore_sequences(self, markdown_text: str, max_length: int = 10): # This regex will match any sequence of underscores pattern = r"_+" @@ -90,13 +92,13 @@ def __init__(self, in_doc: "InputDocument", path_or_stream: Union[BytesIO, Path] ) from e return - def close_table(self, doc=None): + def close_table(self, doc: DoclingDocument): if self.in_table: _log.debug("=== TABLE START ===") for md_table_row in self.md_table_buffer: _log.debug(md_table_row) _log.debug("=== TABLE END ===") - tcells = [] + tcells: List[TableCell] = [] result_table = [] for n, md_table_row in enumerate(self.md_table_buffer): data = [] @@ -137,15 +139,19 @@ def close_table(self, doc=None): self.in_table = False self.md_table_buffer = [] # clean table markdown buffer # Initialize Docling TableData - data = TableData(num_rows=num_rows, num_cols=num_cols, table_cells=tcells) + table_data = TableData( + num_rows=num_rows, num_cols=num_cols, table_cells=tcells + ) # Populate for tcell in tcells: - data.table_cells.append(tcell) + table_data.table_cells.append(tcell) if len(tcells) > 0: - doc.add_table(data=data) + doc.add_table(data=table_data) return - def process_inline_text(self, parent_element, doc=None): + def process_inline_text( + self, parent_element: Optional[NodeItem], doc: DoclingDocument + ): # self.inline_text_buffer += str(text_in) txt = self.inline_text_buffer.strip() if len(txt) > 0: @@ -156,14 +162,20 @@ def process_inline_text(self, parent_element, doc=None): ) self.inline_text_buffer = "" - def iterate_elements(self, element, depth=0, doc=None, parent_element=None): + def iterate_elements( + self, + element: marko.block.Element, + depth: int, + doc: DoclingDocument, + parent_element: Optional[NodeItem] = None, + ): # Iterates over all elements in the AST # Check for different element types and process relevant details if isinstance(element, marko.block.Heading): self.close_table(doc) self.process_inline_text(parent_element, doc) _log.debug( - f" - Heading level {element.level}, content: {element.children[0].children}" + f" - Heading level {element.level}, content: {element.children[0].children}" # type: ignore ) if element.level == 1: doc_label = DocItemLabel.TITLE @@ -172,10 +184,10 @@ def iterate_elements(self, element, depth=0, doc=None, parent_element=None): # Header could have arbitrary inclusion of bold, italic or emphasis, # hence we need to traverse the tree to get full text of a header - strings = [] + strings: List[str] = [] # Define a recursive function to traverse the tree - def traverse(node): + def traverse(node: marko.block.BlockElement): # Check if the node has a "children" attribute if hasattr(node, "children"): # If "children" is a list, continue traversal @@ -209,9 +221,13 @@ def traverse(node): self.process_inline_text(parent_element, doc) _log.debug(" - List item") - snippet_text = str(element.children[0].children[0].children) + snippet_text = str(element.children[0].children[0].children) # type: ignore is_numbered = False - if parent_element.label == GroupLabel.ORDERED_LIST: + if ( + parent_element is not None + and isinstance(parent_element, DocItem) + and parent_element.label == GroupLabel.ORDERED_LIST + ): is_numbered = True doc.add_list_item( enumerated=is_numbered, parent=parent_element, text=snippet_text @@ -221,7 +237,14 @@ def traverse(node): self.close_table(doc) self.process_inline_text(parent_element, doc) _log.debug(f" - Image with alt: {element.title}, url: {element.dest}") - doc.add_picture(parent=parent_element, caption=element.title) + + fig_caption: Optional[TextItem] = None + if element.title is not None and element.title != "": + fig_caption = doc.add_text( + label=DocItemLabel.CAPTION, text=element.title + ) + + doc.add_picture(parent=parent_element, caption=fig_caption) elif isinstance(element, marko.block.Paragraph): self.process_inline_text(parent_element, doc) @@ -252,27 +275,21 @@ def traverse(node): self.process_inline_text(parent_element, doc) _log.debug(f" - Code Span: {element.children}") snippet_text = str(element.children).strip() - doc.add_text( - label=DocItemLabel.CODE, parent=parent_element, text=snippet_text - ) + doc.add_code(parent=parent_element, text=snippet_text) elif isinstance(element, marko.block.CodeBlock): self.close_table(doc) self.process_inline_text(parent_element, doc) _log.debug(f" - Code Block: {element.children}") - snippet_text = str(element.children[0].children).strip() - doc.add_text( - label=DocItemLabel.CODE, parent=parent_element, text=snippet_text - ) + snippet_text = str(element.children[0].children).strip() # type: ignore + doc.add_code(parent=parent_element, text=snippet_text) elif isinstance(element, marko.block.FencedCode): self.close_table(doc) self.process_inline_text(parent_element, doc) _log.debug(f" - Code Block: {element.children}") - snippet_text = str(element.children[0].children).strip() - doc.add_text( - label=DocItemLabel.CODE, parent=parent_element, text=snippet_text - ) + snippet_text = str(element.children[0].children).strip() # type: ignore + doc.add_code(parent=parent_element, text=snippet_text) elif isinstance(element, marko.inline.LineBreak): self.process_inline_text(parent_element, doc) diff --git a/docling/backend/msexcel_backend.py b/docling/backend/msexcel_backend.py index 508b0e8d..2d200d75 100644 --- a/docling/backend/msexcel_backend.py +++ b/docling/backend/msexcel_backend.py @@ -44,7 +44,6 @@ class ExcelTable(BaseModel): class MsExcelDocumentBackend(DeclarativeDocumentBackend): - def __init__(self, in_doc: "InputDocument", path_or_stream: Union[BytesIO, Path]): super().__init__(in_doc, path_or_stream) diff --git a/docling/backend/msword_backend.py b/docling/backend/msword_backend.py index f59356e2..f8148d52 100644 --- a/docling/backend/msword_backend.py +++ b/docling/backend/msword_backend.py @@ -26,7 +26,6 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): - def __init__(self, in_doc: "InputDocument", path_or_stream: Union[BytesIO, Path]): super().__init__(in_doc, path_or_stream) self.XML_KEY = ( diff --git a/docling/backend/pdf_backend.py b/docling/backend/pdf_backend.py index cd7a0815..35c83b8c 100644 --- a/docling/backend/pdf_backend.py +++ b/docling/backend/pdf_backend.py @@ -12,7 +12,6 @@ class PdfPageBackend(ABC): - @abstractmethod def get_text_in_rect(self, bbox: BoundingBox) -> str: pass @@ -45,7 +44,6 @@ def unload(self): class PdfDocumentBackend(PaginatedDocumentBackend): - def __init__(self, in_doc: InputDocument, path_or_stream: Union[BytesIO, Path]): super().__init__(in_doc, path_or_stream) diff --git a/docling/datamodel/pipeline_options.py b/docling/datamodel/pipeline_options.py index eeec6bab..efdf3b1c 100644 --- a/docling/datamodel/pipeline_options.py +++ b/docling/datamodel/pipeline_options.py @@ -1,17 +1,11 @@ import logging import os -import warnings from enum import Enum from pathlib import Path -from typing import Annotated, Any, Dict, List, Literal, Optional, Tuple, Type, Union +from typing import Any, List, Literal, Optional, Union -from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator -from pydantic_settings import ( - BaseSettings, - PydanticBaseSettingsSource, - SettingsConfigDict, -) -from typing_extensions import deprecated +from pydantic import BaseModel, ConfigDict, Field, model_validator +from pydantic_settings import BaseSettings, SettingsConfigDict _log = logging.getLogger(__name__) @@ -225,6 +219,8 @@ class PdfPipelineOptions(PipelineOptions): artifacts_path: Optional[Union[Path, str]] = None do_table_structure: bool = True # True: perform table structure extraction do_ocr: bool = True # True: perform OCR, replace programmatic PDF text + do_code_enrichment: bool = False # True: perform code OCR + do_formula_enrichment: bool = False # True: perform formula OCR, return Latex code table_structure_options: TableStructureOptions = TableStructureOptions() ocr_options: Union[ diff --git a/docling/models/base_model.py b/docling/models/base_model.py index 5a98382a..08d728cc 100644 --- a/docling/models/base_model.py +++ b/docling/models/base_model.py @@ -1,7 +1,7 @@ from abc import ABC, abstractmethod from typing import Any, Generic, Iterable, Optional -from docling_core.types.doc import DoclingDocument, NodeItem, TextItem +from docling_core.types.doc import BoundingBox, DoclingDocument, NodeItem, TextItem from typing_extensions import TypeVar from docling.datamodel.base_models import ItemAndImageEnrichmentElement, Page @@ -53,6 +53,7 @@ class BaseItemAndImageEnrichmentModel( ): images_scale: float + expansion_factor: float = 0.0 def prepare_element( self, conv_res: ConversionResult, element: NodeItem @@ -62,8 +63,22 @@ def prepare_element( assert isinstance(element, TextItem) element_prov = element.prov[0] + + bbox = element_prov.bbox + width = bbox.r - bbox.l + height = bbox.t - bbox.b + + # TODO: move to a utility in the BoundingBox class + expanded_bbox = BoundingBox( + l=bbox.l - width * self.expansion_factor, + t=bbox.t + height * self.expansion_factor, + r=bbox.r + width * self.expansion_factor, + b=bbox.b - height * self.expansion_factor, + coord_origin=bbox.coord_origin, + ) + page_ix = element_prov.page_no - 1 cropped_image = conv_res.pages[page_ix].get_image( - scale=self.images_scale, cropbox=element_prov.bbox + scale=self.images_scale, cropbox=expanded_bbox ) return ItemAndImageEnrichmentElement(item=element, image=cropped_image) diff --git a/docling/models/code_formula_model.py b/docling/models/code_formula_model.py new file mode 100644 index 00000000..e4d56945 --- /dev/null +++ b/docling/models/code_formula_model.py @@ -0,0 +1,245 @@ +import re +from pathlib import Path +from typing import Iterable, List, Literal, Optional, Tuple, Union + +from docling_core.types.doc import ( + CodeItem, + DocItemLabel, + DoclingDocument, + NodeItem, + TextItem, +) +from docling_core.types.doc.labels import CodeLanguageLabel +from PIL import Image +from pydantic import BaseModel + +from docling.datamodel.base_models import ItemAndImageEnrichmentElement +from docling.datamodel.pipeline_options import AcceleratorOptions +from docling.models.base_model import BaseItemAndImageEnrichmentModel +from docling.utils.accelerator_utils import decide_device + + +class CodeFormulaModelOptions(BaseModel): + """ + Configuration options for the CodeFormulaModel. + + Attributes + ---------- + kind : str + Type of the model. Fixed value "code_formula". + do_code_enrichment : bool + True if code enrichment is enabled, False otherwise. + do_formula_enrichment : bool + True if formula enrichment is enabled, False otherwise. + """ + + kind: Literal["code_formula"] = "code_formula" + do_code_enrichment: bool = True + do_formula_enrichment: bool = True + + +class CodeFormulaModel(BaseItemAndImageEnrichmentModel): + """ + Model for processing and enriching documents with code and formula predictions. + + Attributes + ---------- + enabled : bool + True if the model is enabled, False otherwise. + options : CodeFormulaModelOptions + Configuration options for the CodeFormulaModel. + code_formula_model : CodeFormulaPredictor + The predictor model for code and formula processing. + + Methods + ------- + __init__(self, enabled, artifacts_path, accelerator_options, code_formula_options) + Initializes the CodeFormulaModel with the given configuration options. + is_processable(self, doc, element) + Determines if a given element in a document can be processed by the model. + __call__(self, doc, element_batch) + Processes the given batch of elements and enriches them with predictions. + """ + + images_scale = 1.66 # = 120 dpi, aligned with training data resolution + expansion_factor = 0.03 + + def __init__( + self, + enabled: bool, + artifacts_path: Optional[Union[Path, str]], + options: CodeFormulaModelOptions, + accelerator_options: AcceleratorOptions, + ): + """ + Initializes the CodeFormulaModel with the given configuration. + + Parameters + ---------- + enabled : bool + True if the model is enabled, False otherwise. + artifacts_path : Path + Path to the directory containing the model artifacts. + options : CodeFormulaModelOptions + Configuration options for the model. + accelerator_options : AcceleratorOptions + Options specifying the device and number of threads for acceleration. + """ + self.enabled = enabled + self.options = options + + if self.enabled: + device = decide_device(accelerator_options.device) + + from docling_ibm_models.code_formula_model.code_formula_predictor import ( + CodeFormulaPredictor, + ) + + if artifacts_path is None: + artifacts_path = self.download_models_hf() + else: + artifacts_path = Path(artifacts_path) + + self.code_formula_model = CodeFormulaPredictor( + artifacts_path=artifacts_path, + device=device, + num_threads=accelerator_options.num_threads, + ) + + @staticmethod + def download_models_hf( + local_dir: Optional[Path] = None, force: bool = False + ) -> Path: + from huggingface_hub import snapshot_download + from huggingface_hub.utils import disable_progress_bars + + disable_progress_bars() + download_path = snapshot_download( + repo_id="ds4sd/CodeFormula", + force_download=force, + local_dir=local_dir, + revision="v1.0.0", + ) + + return Path(download_path) + + def is_processable(self, doc: DoclingDocument, element: NodeItem) -> bool: + """ + Determines if a given element in a document can be processed by the model. + + Parameters + ---------- + doc : DoclingDocument + The document being processed. + element : NodeItem + The element within the document to check. + + Returns + ------- + bool + True if the element can be processed, False otherwise. + """ + return self.enabled and ( + (isinstance(element, CodeItem) and self.options.do_code_enrichment) + or ( + isinstance(element, TextItem) + and element.label == DocItemLabel.FORMULA + and self.options.do_formula_enrichment + ) + ) + + def _extract_code_language(self, input_string: str) -> Tuple[str, Optional[str]]: + """Extracts a programming language from the beginning of a string. + + This function checks if the input string starts with a pattern of the form + ``<_some_language_>``. If it does, it extracts the language string and returns + a tuple of (remainder, language). Otherwise, it returns the original string + and `None`. + + Args: + input_string (str): The input string, which may start with ``<_language_>``. + + Returns: + Tuple[str, Optional[str]]: + A tuple where: + - The first element is either: + - The remainder of the string (everything after ``<_language_>``), + if a match is found; or + - The original string, if no match is found. + - The second element is the extracted language if a match is found; + otherwise, `None`. + """ + pattern = r"^<_([^>]+)_>\s*(.*)" + match = re.match(pattern, input_string, flags=re.DOTALL) + if match: + language = str(match.group(1)) # the captured programming language + remainder = str(match.group(2)) # everything after the <_language_> + return remainder, language + else: + return input_string, None + + def _get_code_language_enum(self, value: Optional[str]) -> CodeLanguageLabel: + """ + Converts a string to a corresponding `CodeLanguageLabel` enum member. + + If the provided string does not match any value in `CodeLanguageLabel`, + it defaults to `CodeLanguageLabel.UNKNOWN`. + + Args: + value (Optional[str]): The string representation of the code language or None. + + Returns: + CodeLanguageLabel: The corresponding enum member if the value is valid, + otherwise `CodeLanguageLabel.UNKNOWN`. + """ + if not isinstance(value, str): + return CodeLanguageLabel.UNKNOWN + + try: + return CodeLanguageLabel(value) + except ValueError: + return CodeLanguageLabel.UNKNOWN + + def __call__( + self, + doc: DoclingDocument, + element_batch: Iterable[ItemAndImageEnrichmentElement], + ) -> Iterable[NodeItem]: + """ + Processes the given batch of elements and enriches them with predictions. + + Parameters + ---------- + doc : DoclingDocument + The document being processed. + element_batch : Iterable[ItemAndImageEnrichmentElement] + A batch of elements to be processed. + + Returns + ------- + Iterable[Any] + An iterable of enriched elements. + """ + if not self.enabled: + for element in element_batch: + yield element.item + return + + labels: List[str] = [] + images: List[Image.Image] = [] + elements: List[TextItem] = [] + for el in element_batch: + assert isinstance(el.item, TextItem) + elements.append(el.item) + labels.append(el.item.label) + images.append(el.image) + + outputs = self.code_formula_model.predict(images, labels) + + for item, output in zip(elements, outputs): + if isinstance(item, CodeItem): + output, code_language = self._extract_code_language(output) + item.code_language = self._get_code_language_enum(code_language) + item.text = output + + yield item diff --git a/docling/models/layout_model.py b/docling/models/layout_model.py index c1b7dabe..9fa0ecb4 100644 --- a/docling/models/layout_model.py +++ b/docling/models/layout_model.py @@ -40,7 +40,7 @@ class LayoutModel(BasePageModel): DocItemLabel.PAGE_FOOTER, DocItemLabel.CODE, DocItemLabel.LIST_ITEM, - # "Formula", + DocItemLabel.FORMULA, ] PAGE_HEADER_LABELS = [DocItemLabel.PAGE_HEADER, DocItemLabel.PAGE_FOOTER] diff --git a/docling/models/page_assemble_model.py b/docling/models/page_assemble_model.py index 6239dbfa..4acf8c95 100644 --- a/docling/models/page_assemble_model.py +++ b/docling/models/page_assemble_model.py @@ -135,31 +135,6 @@ def __call__( ) elements.append(fig) body.append(fig) - elif cluster.label == LayoutModel.FORMULA_LABEL: - equation = None - if page.predictions.equations_prediction: - equation = page.predictions.equations_prediction.equation_map.get( - cluster.id, None - ) - if ( - not equation - ): # fallback: add empty formula, if it isn't present - text = self.sanitize_text( - [ - cell.text.replace("\x02", "-").strip() - for cell in cluster.cells - if len(cell.text.strip()) > 0 - ] - ) - equation = TextElement( - label=cluster.label, - id=cluster.id, - cluster=cluster, - page_no=page.page_no, - text=text, - ) - elements.append(equation) - body.append(equation) elif cluster.label in LayoutModel.CONTAINER_LABELS: container_el = ContainerElement( label=cluster.label, diff --git a/docling/models/tesseract_ocr_cli_model.py b/docling/models/tesseract_ocr_cli_model.py index 16e1629d..3d5c8006 100644 --- a/docling/models/tesseract_ocr_cli_model.py +++ b/docling/models/tesseract_ocr_cli_model.py @@ -20,7 +20,6 @@ class TesseractOcrCliModel(BaseOcrModel): - def __init__(self, enabled: bool, options: TesseractCliOcrOptions): super().__init__(enabled=enabled, options=options) self.options: TesseractCliOcrOptions diff --git a/docling/pipeline/base_pipeline.py b/docling/pipeline/base_pipeline.py index 034e6d42..75a08e76 100644 --- a/docling/pipeline/base_pipeline.py +++ b/docling/pipeline/base_pipeline.py @@ -3,7 +3,7 @@ import time import traceback from abc import ABC, abstractmethod -from typing import Callable, Iterable, List +from typing import Any, Callable, Iterable, List from docling_core.types.doc import DoclingDocument, NodeItem @@ -18,7 +18,7 @@ from docling.datamodel.document import ConversionResult, InputDocument from docling.datamodel.pipeline_options import PipelineOptions from docling.datamodel.settings import settings -from docling.models.base_model import BaseEnrichmentModel +from docling.models.base_model import GenericEnrichmentModel from docling.utils.profiling import ProfilingScope, TimeRecorder from docling.utils.utils import chunkify @@ -30,7 +30,7 @@ def __init__(self, pipeline_options: PipelineOptions): self.pipeline_options = pipeline_options self.keep_images = False self.build_pipe: List[Callable] = [] - self.enrichment_pipe: List[BaseEnrichmentModel] = [] + self.enrichment_pipe: List[GenericEnrichmentModel[Any]] = [] def execute(self, in_doc: InputDocument, raises_on_error: bool) -> ConversionResult: conv_res = ConversionResult(input=in_doc) @@ -66,7 +66,7 @@ def _assemble_document(self, conv_res: ConversionResult) -> ConversionResult: def _enrich_document(self, conv_res: ConversionResult) -> ConversionResult: def _prepare_elements( - conv_res: ConversionResult, model: BaseEnrichmentModel + conv_res: ConversionResult, model: GenericEnrichmentModel[Any] ) -> Iterable[NodeItem]: for doc_element, _level in conv_res.document.iterate_items(): prepared_element = model.prepare_element( diff --git a/docling/pipeline/standard_pdf_pipeline.py b/docling/pipeline/standard_pdf_pipeline.py index 758f4e94..97bcc6b6 100644 --- a/docling/pipeline/standard_pdf_pipeline.py +++ b/docling/pipeline/standard_pdf_pipeline.py @@ -1,7 +1,7 @@ import logging import sys from pathlib import Path -from typing import Iterable, Optional +from typing import Optional from docling_core.types.doc import DocItem, ImageRef, PictureItem, TableItem @@ -17,8 +17,8 @@ TesseractCliOcrOptions, TesseractOcrOptions, ) -from docling.models.base_model import BasePageModel from docling.models.base_ocr_model import BaseOcrModel +from docling.models.code_formula_model import CodeFormulaModel, CodeFormulaModelOptions from docling.models.ds_glm_model import GlmModel, GlmOptions from docling.models.easyocr_model import EasyOcrModel from docling.models.layout_model import LayoutModel @@ -93,8 +93,25 @@ def __init__(self, pipeline_options: PdfPipelineOptions): self.enrichment_pipe = [ # Other models working on `NodeItem` elements in the DoclingDocument + # Code Formula Enrichment Model + CodeFormulaModel( + enabled=pipeline_options.do_code_enrichment + or pipeline_options.do_formula_enrichment, + artifacts_path=pipeline_options.artifacts_path, + options=CodeFormulaModelOptions( + do_code_enrichment=pipeline_options.do_code_enrichment, + do_formula_enrichment=pipeline_options.do_formula_enrichment, + ), + accelerator_options=pipeline_options.accelerator_options, + ), ] + if ( + self.pipeline_options.do_formula_enrichment + or self.pipeline_options.do_code_enrichment + ): + self.keep_backend = True + @staticmethod def download_models_hf( local_dir: Optional[Path] = None, force: bool = False diff --git a/docling/utils/glm_utils.py b/docling/utils/glm_utils.py index 1c3b3f67..da29cdd1 100644 --- a/docling/utils/glm_utils.py +++ b/docling/utils/glm_utils.py @@ -270,7 +270,6 @@ def to_docling_document(doc_glm, update_name_label=False) -> DoclingDocument: container_el = doc.add_group(label=group_label) _add_child_elements(container_el, doc, obj, pelem) - elif "text" in obj: text = obj["text"][span_i:span_j] @@ -304,6 +303,10 @@ def to_docling_document(doc_glm, update_name_label=False) -> DoclingDocument: current_list = None doc.add_heading(text=text, prov=prov) + elif label == DocItemLabel.CODE: + current_list = None + + doc.add_code(text=text, prov=prov) else: current_list = None diff --git a/docs/examples/develop_picture_enrichment.py b/docs/examples/develop_picture_enrichment.py index 7ad06e4a..81009fe8 100644 --- a/docs/examples/develop_picture_enrichment.py +++ b/docs/examples/develop_picture_enrichment.py @@ -22,7 +22,6 @@ class ExamplePictureClassifierPipelineOptions(PdfPipelineOptions): class ExamplePictureClassifierEnrichmentModel(BaseEnrichmentModel): - def __init__(self, enabled: bool): self.enabled = enabled @@ -54,7 +53,6 @@ def __call__( class ExamplePictureClassifierPipeline(StandardPdfPipeline): - def __init__(self, pipeline_options: ExamplePictureClassifierPipelineOptions): super().__init__(pipeline_options) self.pipeline_options: ExamplePictureClassifierPipeline diff --git a/poetry.lock b/poetry.lock index 64226c33..73fc85db 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -231,21 +231,6 @@ docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphi tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] -[[package]] -name = "autoflake" -version = "2.3.1" -description = "Removes unused imports and unused variables" -optional = false -python-versions = ">=3.8" -files = [ - {file = "autoflake-2.3.1-py3-none-any.whl", hash = "sha256:3ae7495db9084b7b32818b4140e6dc4fc280b712fb414f5b8fe57b0a8e85a840"}, - {file = "autoflake-2.3.1.tar.gz", hash = "sha256:c98b75dc5b0a86459c4f01a1d32ac7eb4338ec4317a4469515ff1e687ecd909e"}, -] - -[package.dependencies] -pyflakes = ">=3.0.0" -tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} - [[package]] name = "autopep8" version = "2.2.0" @@ -876,13 +861,13 @@ files = [ [[package]] name = "docling-core" -version = "2.14.0" +version = "2.15.1" description = "A python library to define and validate data types in Docling." optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "docling_core-2.14.0-py3-none-any.whl", hash = "sha256:05a7b89872260dcdba2b0fbcc3a4619aed4846f58f155d33a10b41b23eea5188"}, - {file = "docling_core-2.14.0.tar.gz", hash = "sha256:0eb6a52e05f2a06e1777b0533d655a87b54a1a5d374b957beb244c8940aed7da"}, + {file = "docling_core-2.15.1-py3-none-any.whl", hash = "sha256:33152604e1f14d5caccbef099c73163c3f211d0b4d92403d262c308633cc0451"}, + {file = "docling_core-2.15.1.tar.gz", hash = "sha256:588d941b5bfc393a79e779ab64819c60763e7f182ec5221ee37da4be91dd802f"}, ] [package.dependencies] @@ -903,13 +888,13 @@ chunking = ["semchunk (>=2.2.0,<3.0.0)", "transformers (>=4.34.0,<5.0.0)"] [[package]] name = "docling-ibm-models" -version = "3.1.2" +version = "3.2.1" description = "This package contains the AI models used by the Docling PDF conversion package" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "docling_ibm_models-3.1.2-py3-none-any.whl", hash = "sha256:c5d2fa83db08ec538bb77e3d5d79c9ccef7b6873aab19ddcf5bb5e9801bf4a03"}, - {file = "docling_ibm_models-3.1.2.tar.gz", hash = "sha256:68c8b8f1cb87a8d8c5c6d6fe2c86679d65a09d354ec413ed13e9493ee0cd3794"}, + {file = "docling_ibm_models-3.2.1-py3-none-any.whl", hash = "sha256:55bca5673381cc5862f4de584345020d071414c46bc1b9f6436d674e3610ec97"}, + {file = "docling_ibm_models-3.2.1.tar.gz", hash = "sha256:abd1bdc58f00600065eedbfbd34876704d5004cd20884a2c0a61ca2ee5a927dd"}, ] [package.dependencies] @@ -932,43 +917,42 @@ transformers = [ [[package]] name = "docling-parse" -version = "3.1.0" +version = "3.1.1" description = "Simple package to extract text with coordinates from programmatic PDFs" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "docling_parse-3.1.0-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:0bfd425f2a66a23e7dce51aa461984b69cbb6cf2d7e948c1388314b5a6089045"}, - {file = "docling_parse-3.1.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:d1c8c689915f8d768fc850fd3e98d9e6e3d50fb070cab84fddac2465c3bc78bc"}, - {file = "docling_parse-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c24570fcc9e820b86de4996e8c8fa76d490ae8b16c9dc264a2d60f4aaf5801"}, - {file = "docling_parse-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9e05e744f6ffbfe6e65b53a0a6bdc440814b2581edf1dbab26aca38b44514a5"}, - {file = "docling_parse-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:f59507c9a9672032b3029df7318ab017bf66986f95e00edc5d2e4c5c6ec5fa7e"}, - {file = "docling_parse-3.1.0-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:428098cc5f8a449101099f77e53862a1e8db58e27a028a2a9ce397be26d4788f"}, - {file = "docling_parse-3.1.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:5f877b9d5ac46828327e5bd94da7b2f54da900d4a729c52533df904dd3463f85"}, - {file = "docling_parse-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c10e587ca2c55522f7cf35b8d9983f1b2eeef6f67b168da157ad4fc1e3ad5ba2"}, - {file = "docling_parse-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2da249c455758f422d47379202dc599a3f35fe811ed03dc019fd42548d8cd2b"}, - {file = "docling_parse-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:2aeaa1a34f92208ed63784ee04f69644f32974b520d957db753256c6d0ccf2b6"}, - {file = "docling_parse-3.1.0-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:6997eb40f7d04e4438e3a5218df23c07b260cbece3f150cdd428bf05f927a389"}, - {file = "docling_parse-3.1.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:1307169244cd145c59c2c8137bb9c0c132dc2bb0abf890875e8ca22f09fa4f99"}, - {file = "docling_parse-3.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd1d4460303d1d7162c0f45f141bef6bfb39df235c7b7e9ba842a921c74e3176"}, - {file = "docling_parse-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:970a44d2d79a007957e91b2501c0572e2d0f4623c3f3685ba7a8b09bf39df1b1"}, - {file = "docling_parse-3.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:b9a80f4b4161c57797f061fa111ce797eeacf52bce9bebba7919a8ea7fcc26ac"}, - {file = "docling_parse-3.1.0-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:993e27c953bb0fa53100aea694442c0147f523044c02fd7c193b68ac9070d507"}, - {file = "docling_parse-3.1.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:0a19d828c466c653ffdaff1d7da2cd7f4aab212360c477629463da8f0e150c05"}, - {file = "docling_parse-3.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd868b8ee626b9e74c8d2bb3ad8e7f036dd6839250bdebe7a4c0a1657aaa8dbd"}, - {file = "docling_parse-3.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13c1627a7c16527bf2003d764a5f8aa23337d8c56085d3d4717e65d2c940b242"}, - {file = "docling_parse-3.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:67175719913fa3adb6476a0753383b4a0d156e286927ae641085ff99f85320c4"}, - {file = "docling_parse-3.1.0-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:ada2b7fc587fd31d1a0b565957596d9b057b32730e9cd0bd390b38cf1f5192bd"}, - {file = "docling_parse-3.1.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:c70ef7cedf37a87fe26ef3df5870523c9471b2144170ee3d7756c2cd4c3eb687"}, - {file = "docling_parse-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:181ee70a617ec08dbdd1bbbf613993be86e0da8ea8c5024704eb294e70f8b253"}, - {file = "docling_parse-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ed50ed868ac18b805fc7e8885d3f5504c0d28eec1c40e22691f7aac0edf6374"}, - {file = "docling_parse-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:55e02583f7214e4d0d46a5a687abaf5a080dc7c6a7015888e23d83549702434f"}, - {file = "docling_parse-3.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d83d07744e52f1b4cfaf50f21c47b2d0df6d285a7e3d4297e09ba159b36b9277"}, - {file = "docling_parse-3.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9f70d59e05c53b5c6538eb480dce5ba9c02f349a3ccc99d20df6303a56cd3ded"}, - {file = "docling_parse-3.1.0.tar.gz", hash = "sha256:4a159222c7c4b4b7932330168405ef2b887bc5e3d217c9dd25a9d9b51f9187d3"}, -] - -[package.dependencies] -autoflake = ">=2.3.1,<3.0.0" + {file = "docling_parse-3.1.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:cccf1b7912ece508f75bc004dff392298fc956f33c62f3a48db6c0a7976d808a"}, + {file = "docling_parse-3.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:3537f3bbd2152a3f2c25142ac93b9db08e68eca923863dca272a0f588739855d"}, + {file = "docling_parse-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dffee503cf6be3343df2d9421067585a88543ed5c94e39662a3cfc5cd2b794a"}, + {file = "docling_parse-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c856f0dbe8f10296442f749109d5d5dc86f10151a0e51e8629b32d053d0e61c2"}, + {file = "docling_parse-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:5693ef8cba6096d8ed1039f61a663ea74bac711d06616b51254c495ebb3eb53d"}, + {file = "docling_parse-3.1.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:8e586bcd24d7e3ba26ebdace4cb15d70498fb4656fc9f6f20f24b007de0628d6"}, + {file = "docling_parse-3.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:1e8137020ed9bff26eb70dbbdb42c62f3e87c81001e3ecd41e39b3ec3631d7bf"}, + {file = "docling_parse-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bec98497626202a6fa7e2a715814414131b53b32cd2999e540edf87a60e45ef5"}, + {file = "docling_parse-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537e0eec387a9cc3e35492752efc561982b3cf02b3d571ca46c4a0af3a884068"}, + {file = "docling_parse-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ca3d45a0e9cd41c5e6e0002eaa1a3478bc065b58dc7d38a114eb5ad37f762934"}, + {file = "docling_parse-3.1.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:008d751f4fdd82a3cbe3e8d4abaa4d5cf0d0cb35d16334c5dfc22a62001c780b"}, + {file = "docling_parse-3.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a06a0e4b403387e9c4e79d388aa63ace75d1aa855018238634ec8ce262369ffa"}, + {file = "docling_parse-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b802ae9c2464fc0354721d0ef3c73f573c202fa1995276afceaf5882bb894583"}, + {file = "docling_parse-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5dc796b738e4ba3663084ee9fa4fe749e8aa27154bf459a3531e5a5b9c774b6b"}, + {file = "docling_parse-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:dbad418bedc7706c230ae8212cd08a41400762104be3df512ffe05d0f468d6e2"}, + {file = "docling_parse-3.1.1-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:b32f46810f7c05de3e1fd13c2bbe58291710b90777baefefd8ed04118be319db"}, + {file = "docling_parse-3.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:10ffbfe70a0eda2cac42a8fb2ebbe0adafdcfeb173ecaa0e7e0e7769cc020449"}, + {file = "docling_parse-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4389f552297c0798bfc9b4b0116461d7e154340311b143264e9e48808f19884"}, + {file = "docling_parse-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a716412318f5136fde397925a06b3d1cc3fce33f060175574d09576cbfc901f1"}, + {file = "docling_parse-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:7ff36910971bc015270c4aaae5f01d783970a0af840ca84070a41564759048c5"}, + {file = "docling_parse-3.1.1-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:9711ed84828bfc35b8cd02aedbf3a9a264eaaf567c8168c8c1cca5eb239490eb"}, + {file = "docling_parse-3.1.1-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:fae1a11fd48faaf2961332d75f507aab452d3fbe88085a46cdfbb1efbc3b5c0c"}, + {file = "docling_parse-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ecfdcf69eb93dbe1e6798b1516e657aab6b3b3435d6d161078108ef6f2d8edb"}, + {file = "docling_parse-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba63a538e329f66666732a24d5ce4871eb19646833012e5b2c500ccdda29d959"}, + {file = "docling_parse-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:22229c00ae9a34d77840e9352fd02d05dbbd90cfe1fdac9319d7a653bd7ba060"}, + {file = "docling_parse-3.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:97bbd6b45681c643d1ca2917d4c6813735a3527ee2af2823ebdf3882545539bf"}, + {file = "docling_parse-3.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9637c9676d6ba652362673f57d8f8af9ea35c844ca25116e61ecd5c138ceb1a7"}, + {file = "docling_parse-3.1.1.tar.gz", hash = "sha256:fb62c85132d35edd91cee5c093b9e45d981ca7fa8ba0c560f0c3ce56993e4f8e"}, +] + +[package.dependencies] docling-core = ">=2.14.0,<3.0.0" pillow = ">=10.4.0,<11.0.0" pydantic = ">=2.10.5,<3.0.0" @@ -1090,18 +1074,18 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "filelock" -version = "3.16.1" +version = "3.17.0" description = "A platform independent file lock." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, - {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, + {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, + {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, ] [package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] typing = ["typing-extensions (>=4.12.2)"] [[package]] @@ -1150,13 +1134,13 @@ dev = ["pyTest", "pyTest-cov"] [[package]] name = "flatbuffers" -version = "24.12.23" +version = "25.1.21" description = "The FlatBuffers serialization format for Python" optional = true python-versions = "*" files = [ - {file = "flatbuffers-24.12.23-py2.py3-none-any.whl", hash = "sha256:c418e0d48890f4142b92fd3e343e73a48f194e1f80075ddcc5793779b3585444"}, - {file = "flatbuffers-24.12.23.tar.gz", hash = "sha256:2910b0bc6ae9b6db78dd2b18d0b7a0709ba240fb5585f286a3a2b30785c22dac"}, + {file = "flatbuffers-25.1.21-py2.py3-none-any.whl", hash = "sha256:0e9736098ba8f4e48246a0640390f4992c0b1a734e7322a9463d5c3eea00558b"}, + {file = "flatbuffers-25.1.21.tar.gz", hash = "sha256:e24a34dcd9fb4e0ea8cc0fc8ef9c5cd61c9d21527a6d536967587a37a4ff9676"}, ] [[package]] @@ -1552,13 +1536,13 @@ pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_ve [[package]] name = "identify" -version = "2.6.5" +version = "2.6.6" description = "File identification library for Python" optional = false python-versions = ">=3.9" files = [ - {file = "identify-2.6.5-py2.py3-none-any.whl", hash = "sha256:14181a47091eb75b337af4c23078c9d09225cd4c48929f521f3bf16b09d02566"}, - {file = "identify-2.6.5.tar.gz", hash = "sha256:c10b33f250e5bba374fae86fb57f3adcebf1161bce7cdf92031915fd480c13bc"}, + {file = "identify-2.6.6-py2.py3-none-any.whl", hash = "sha256:cbd1810bce79f8b671ecb20f53ee0ae8e86ae84b557de31d89709dc2a48ba881"}, + {file = "identify-2.6.6.tar.gz", hash = "sha256:7bec12768ed44ea4761efb47806f0a41f86e7c0a5fdf5950d4648c90eca7e251"}, ] [package.extras] @@ -1580,13 +1564,13 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 [[package]] name = "imageio" -version = "2.36.1" +version = "2.37.0" description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats." optional = false python-versions = ">=3.9" files = [ - {file = "imageio-2.36.1-py3-none-any.whl", hash = "sha256:20abd2cae58e55ca1af8a8dcf43293336a59adf0391f1917bf8518633cfc2cdf"}, - {file = "imageio-2.36.1.tar.gz", hash = "sha256:e4e1d231f47f9a9e16100b0f7ce1a86e8856fb4d1c0fa2c4365a316f1746be62"}, + {file = "imageio-2.37.0-py3-none-any.whl", hash = "sha256:11efa15b87bc7871b61590326b2d635439acc321cf7f8ce996f812543ce10eed"}, + {file = "imageio-2.37.0.tar.gz", hash = "sha256:71b57b3669666272c818497aebba2b4c5f20d5b37c81720e5e1a56d59c492996"}, ] [package.dependencies] @@ -1613,13 +1597,13 @@ tifffile = ["tifffile"] [[package]] name = "importlib-metadata" -version = "8.5.0" +version = "8.6.1" description = "Read metadata from Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b"}, - {file = "importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7"}, + {file = "importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e"}, + {file = "importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580"}, ] [package.dependencies] @@ -1631,7 +1615,7 @@ cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +test = ["flufl.flake8", "importlib_resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] type = ["pytest-mypy"] [[package]] @@ -2726,13 +2710,13 @@ pygments = ">2.12.0" [[package]] name = "mkdocs-material" -version = "9.5.49" +version = "9.5.50" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.49-py3-none-any.whl", hash = "sha256:c3c2d8176b18198435d3a3e119011922f3e11424074645c24019c2dcf08a360e"}, - {file = "mkdocs_material-9.5.49.tar.gz", hash = "sha256:3671bb282b4f53a1c72e08adbe04d2481a98f85fed392530051f80ff94a9621d"}, + {file = "mkdocs_material-9.5.50-py3-none-any.whl", hash = "sha256:f24100f234741f4d423a9d672a909d859668a4f404796be3cf035f10d6050385"}, + {file = "mkdocs_material-9.5.50.tar.gz", hash = "sha256:ae5fe16f3d7c9ccd05bb6916a7da7420cf99a9ce5e33debd9d40403a090d5825"}, ] [package.dependencies] @@ -2749,7 +2733,7 @@ regex = ">=2022.4" requests = ">=2.26,<3.0" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] @@ -3364,66 +3348,66 @@ files = [ [[package]] name = "numpy" -version = "2.2.1" +version = "2.2.2" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" files = [ - {file = "numpy-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5edb4e4caf751c1518e6a26a83501fda79bff41cc59dac48d70e6d65d4ec4440"}, - {file = "numpy-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aa3017c40d513ccac9621a2364f939d39e550c542eb2a894b4c8da92b38896ab"}, - {file = "numpy-2.2.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:61048b4a49b1c93fe13426e04e04fdf5a03f456616f6e98c7576144677598675"}, - {file = "numpy-2.2.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:7671dc19c7019103ca44e8d94917eba8534c76133523ca8406822efdd19c9308"}, - {file = "numpy-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4250888bcb96617e00bfa28ac24850a83c9f3a16db471eca2ee1f1714df0f957"}, - {file = "numpy-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7746f235c47abc72b102d3bce9977714c2444bdfaea7888d241b4c4bb6a78bf"}, - {file = "numpy-2.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:059e6a747ae84fce488c3ee397cee7e5f905fd1bda5fb18c66bc41807ff119b2"}, - {file = "numpy-2.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f62aa6ee4eb43b024b0e5a01cf65a0bb078ef8c395e8713c6e8a12a697144528"}, - {file = "numpy-2.2.1-cp310-cp310-win32.whl", hash = "sha256:48fd472630715e1c1c89bf1feab55c29098cb403cc184b4859f9c86d4fcb6a95"}, - {file = "numpy-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:b541032178a718c165a49638d28272b771053f628382d5e9d1c93df23ff58dbf"}, - {file = "numpy-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:40f9e544c1c56ba8f1cf7686a8c9b5bb249e665d40d626a23899ba6d5d9e1484"}, - {file = "numpy-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9b57eaa3b0cd8db52049ed0330747b0364e899e8a606a624813452b8203d5f7"}, - {file = "numpy-2.2.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:bc8a37ad5b22c08e2dbd27df2b3ef7e5c0864235805b1e718a235bcb200cf1cb"}, - {file = "numpy-2.2.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:9036d6365d13b6cbe8f27a0eaf73ddcc070cae584e5ff94bb45e3e9d729feab5"}, - {file = "numpy-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51faf345324db860b515d3f364eaa93d0e0551a88d6218a7d61286554d190d73"}, - {file = "numpy-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38efc1e56b73cc9b182fe55e56e63b044dd26a72128fd2fbd502f75555d92591"}, - {file = "numpy-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31b89fa67a8042e96715c68e071a1200c4e172f93b0fbe01a14c0ff3ff820fc8"}, - {file = "numpy-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4c86e2a209199ead7ee0af65e1d9992d1dce7e1f63c4b9a616500f93820658d0"}, - {file = "numpy-2.2.1-cp311-cp311-win32.whl", hash = "sha256:b34d87e8a3090ea626003f87f9392b3929a7bbf4104a05b6667348b6bd4bf1cd"}, - {file = "numpy-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:360137f8fb1b753c5cde3ac388597ad680eccbbbb3865ab65efea062c4a1fd16"}, - {file = "numpy-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:694f9e921a0c8f252980e85bce61ebbd07ed2b7d4fa72d0e4246f2f8aa6642ab"}, - {file = "numpy-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3683a8d166f2692664262fd4900f207791d005fb088d7fdb973cc8d663626faa"}, - {file = "numpy-2.2.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:780077d95eafc2ccc3ced969db22377b3864e5b9a0ea5eb347cc93b3ea900315"}, - {file = "numpy-2.2.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:55ba24ebe208344aa7a00e4482f65742969a039c2acfcb910bc6fcd776eb4355"}, - {file = "numpy-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b1d07b53b78bf84a96898c1bc139ad7f10fda7423f5fd158fd0f47ec5e01ac7"}, - {file = "numpy-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5062dc1a4e32a10dc2b8b13cedd58988261416e811c1dc4dbdea4f57eea61b0d"}, - {file = "numpy-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:fce4f615f8ca31b2e61aa0eb5865a21e14f5629515c9151850aa936c02a1ee51"}, - {file = "numpy-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:67d4cda6fa6ffa073b08c8372aa5fa767ceb10c9a0587c707505a6d426f4e046"}, - {file = "numpy-2.2.1-cp312-cp312-win32.whl", hash = "sha256:32cb94448be47c500d2c7a95f93e2f21a01f1fd05dd2beea1ccd049bb6001cd2"}, - {file = "numpy-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:ba5511d8f31c033a5fcbda22dd5c813630af98c70b2661f2d2c654ae3cdfcfc8"}, - {file = "numpy-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f1d09e520217618e76396377c81fba6f290d5f926f50c35f3a5f72b01a0da780"}, - {file = "numpy-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ecc47cd7f6ea0336042be87d9e7da378e5c7e9b3c8ad0f7c966f714fc10d821"}, - {file = "numpy-2.2.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f419290bc8968a46c4933158c91a0012b7a99bb2e465d5ef5293879742f8797e"}, - {file = "numpy-2.2.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5b6c390bfaef8c45a260554888966618328d30e72173697e5cabe6b285fb2348"}, - {file = "numpy-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:526fc406ab991a340744aad7e25251dd47a6720a685fa3331e5c59fef5282a59"}, - {file = "numpy-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f74e6fdeb9a265624ec3a3918430205dff1df7e95a230779746a6af78bc615af"}, - {file = "numpy-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:53c09385ff0b72ba79d8715683c1168c12e0b6e84fb0372e97553d1ea91efe51"}, - {file = "numpy-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f3eac17d9ec51be534685ba877b6ab5edc3ab7ec95c8f163e5d7b39859524716"}, - {file = "numpy-2.2.1-cp313-cp313-win32.whl", hash = "sha256:9ad014faa93dbb52c80d8f4d3dcf855865c876c9660cb9bd7553843dd03a4b1e"}, - {file = "numpy-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:164a829b6aacf79ca47ba4814b130c4020b202522a93d7bff2202bfb33b61c60"}, - {file = "numpy-2.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4dfda918a13cc4f81e9118dea249e192ab167a0bb1966272d5503e39234d694e"}, - {file = "numpy-2.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:733585f9f4b62e9b3528dd1070ec4f52b8acf64215b60a845fa13ebd73cd0712"}, - {file = "numpy-2.2.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:89b16a18e7bba224ce5114db863e7029803c179979e1af6ad6a6b11f70545008"}, - {file = "numpy-2.2.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:676f4eebf6b2d430300f1f4f4c2461685f8269f94c89698d832cdf9277f30b84"}, - {file = "numpy-2.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f5cdf9f493b35f7e41e8368e7d7b4bbafaf9660cba53fb21d2cd174ec09631"}, - {file = "numpy-2.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1ad395cf254c4fbb5b2132fee391f361a6e8c1adbd28f2cd8e79308a615fe9d"}, - {file = "numpy-2.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:08ef779aed40dbc52729d6ffe7dd51df85796a702afbf68a4f4e41fafdc8bda5"}, - {file = "numpy-2.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:26c9c4382b19fcfbbed3238a14abf7ff223890ea1936b8890f058e7ba35e8d71"}, - {file = "numpy-2.2.1-cp313-cp313t-win32.whl", hash = "sha256:93cf4e045bae74c90ca833cba583c14b62cb4ba2cba0abd2b141ab52548247e2"}, - {file = "numpy-2.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:bff7d8ec20f5f42607599f9994770fa65d76edca264a87b5e4ea5629bce12268"}, - {file = "numpy-2.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7ba9cc93a91d86365a5d270dee221fdc04fb68d7478e6bf6af650de78a8339e3"}, - {file = "numpy-2.2.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3d03883435a19794e41f147612a77a8f56d4e52822337844fff3d4040a142964"}, - {file = "numpy-2.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4511d9e6071452b944207c8ce46ad2f897307910b402ea5fa975da32e0102800"}, - {file = "numpy-2.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5c5cc0cbabe9452038ed984d05ac87910f89370b9242371bd9079cb4af61811e"}, - {file = "numpy-2.2.1.tar.gz", hash = "sha256:45681fd7128c8ad1c379f0ca0776a8b0c6583d2f69889ddac01559dfe4390918"}, + {file = "numpy-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7079129b64cb78bdc8d611d1fd7e8002c0a2565da6a47c4df8062349fee90e3e"}, + {file = "numpy-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ec6c689c61df613b783aeb21f945c4cbe6c51c28cb70aae8430577ab39f163e"}, + {file = "numpy-2.2.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:40c7ff5da22cd391944a28c6a9c638a5eef77fcf71d6e3a79e1d9d9e82752715"}, + {file = "numpy-2.2.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:995f9e8181723852ca458e22de5d9b7d3ba4da3f11cc1cb113f093b271d7965a"}, + {file = "numpy-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b78ea78450fd96a498f50ee096f69c75379af5138f7881a51355ab0e11286c97"}, + {file = "numpy-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fbe72d347fbc59f94124125e73fc4976a06927ebc503ec5afbfb35f193cd957"}, + {file = "numpy-2.2.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8e6da5cffbbe571f93588f562ed130ea63ee206d12851b60819512dd3e1ba50d"}, + {file = "numpy-2.2.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:09d6a2032faf25e8d0cadde7fd6145118ac55d2740132c1d845f98721b5ebcfd"}, + {file = "numpy-2.2.2-cp310-cp310-win32.whl", hash = "sha256:159ff6ee4c4a36a23fe01b7c3d07bd8c14cc433d9720f977fcd52c13c0098160"}, + {file = "numpy-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:64bd6e1762cd7f0986a740fee4dff927b9ec2c5e4d9a28d056eb17d332158014"}, + {file = "numpy-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:642199e98af1bd2b6aeb8ecf726972d238c9877b0f6e8221ee5ab945ec8a2189"}, + {file = "numpy-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6d9fc9d812c81e6168b6d405bf00b8d6739a7f72ef22a9214c4241e0dc70b323"}, + {file = "numpy-2.2.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:c7d1fd447e33ee20c1f33f2c8e6634211124a9aabde3c617687d8b739aa69eac"}, + {file = "numpy-2.2.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:451e854cfae0febe723077bd0cf0a4302a5d84ff25f0bfece8f29206c7bed02e"}, + {file = "numpy-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd249bc894af67cbd8bad2c22e7cbcd46cf87ddfca1f1289d1e7e54868cc785c"}, + {file = "numpy-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02935e2c3c0c6cbe9c7955a8efa8908dd4221d7755644c59d1bba28b94fd334f"}, + {file = "numpy-2.2.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a972cec723e0563aa0823ee2ab1df0cb196ed0778f173b381c871a03719d4826"}, + {file = "numpy-2.2.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d6d6a0910c3b4368d89dde073e630882cdb266755565155bc33520283b2d9df8"}, + {file = "numpy-2.2.2-cp311-cp311-win32.whl", hash = "sha256:860fd59990c37c3ef913c3ae390b3929d005243acca1a86facb0773e2d8d9e50"}, + {file = "numpy-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:da1eeb460ecce8d5b8608826595c777728cdf28ce7b5a5a8c8ac8d949beadcf2"}, + {file = "numpy-2.2.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ac9bea18d6d58a995fac1b2cb4488e17eceeac413af014b1dd26170b766d8467"}, + {file = "numpy-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23ae9f0c2d889b7b2d88a3791f6c09e2ef827c2446f1c4a3e3e76328ee4afd9a"}, + {file = "numpy-2.2.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3074634ea4d6df66be04f6728ee1d173cfded75d002c75fac79503a880bf3825"}, + {file = "numpy-2.2.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:8ec0636d3f7d68520afc6ac2dc4b8341ddb725039de042faf0e311599f54eb37"}, + {file = "numpy-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ffbb1acd69fdf8e89dd60ef6182ca90a743620957afb7066385a7bbe88dc748"}, + {file = "numpy-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0349b025e15ea9d05c3d63f9657707a4e1d471128a3b1d876c095f328f8ff7f0"}, + {file = "numpy-2.2.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:463247edcee4a5537841d5350bc87fe8e92d7dd0e8c71c995d2c6eecb8208278"}, + {file = "numpy-2.2.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9dd47ff0cb2a656ad69c38da850df3454da88ee9a6fde0ba79acceee0e79daba"}, + {file = "numpy-2.2.2-cp312-cp312-win32.whl", hash = "sha256:4525b88c11906d5ab1b0ec1f290996c0020dd318af8b49acaa46f198b1ffc283"}, + {file = "numpy-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:5acea83b801e98541619af398cc0109ff48016955cc0818f478ee9ef1c5c3dcb"}, + {file = "numpy-2.2.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b208cfd4f5fe34e1535c08983a1a6803fdbc7a1e86cf13dd0c61de0b51a0aadc"}, + {file = "numpy-2.2.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d0bbe7dd86dca64854f4b6ce2ea5c60b51e36dfd597300057cf473d3615f2369"}, + {file = "numpy-2.2.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:22ea3bb552ade325530e72a0c557cdf2dea8914d3a5e1fecf58fa5dbcc6f43cd"}, + {file = "numpy-2.2.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:128c41c085cab8a85dc29e66ed88c05613dccf6bc28b3866cd16050a2f5448be"}, + {file = "numpy-2.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:250c16b277e3b809ac20d1f590716597481061b514223c7badb7a0f9993c7f84"}, + {file = "numpy-2.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0c8854b09bc4de7b041148d8550d3bd712b5c21ff6a8ed308085f190235d7ff"}, + {file = "numpy-2.2.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b6fb9c32a91ec32a689ec6410def76443e3c750e7cfc3fb2206b985ffb2b85f0"}, + {file = "numpy-2.2.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:57b4012e04cc12b78590a334907e01b3a85efb2107df2b8733ff1ed05fce71de"}, + {file = "numpy-2.2.2-cp313-cp313-win32.whl", hash = "sha256:4dbd80e453bd34bd003b16bd802fac70ad76bd463f81f0c518d1245b1c55e3d9"}, + {file = "numpy-2.2.2-cp313-cp313-win_amd64.whl", hash = "sha256:5a8c863ceacae696aff37d1fd636121f1a512117652e5dfb86031c8d84836369"}, + {file = "numpy-2.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b3482cb7b3325faa5f6bc179649406058253d91ceda359c104dac0ad320e1391"}, + {file = "numpy-2.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9491100aba630910489c1d0158034e1c9a6546f0b1340f716d522dc103788e39"}, + {file = "numpy-2.2.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:41184c416143defa34cc8eb9d070b0a5ba4f13a0fa96a709e20584638254b317"}, + {file = "numpy-2.2.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:7dca87ca328f5ea7dafc907c5ec100d187911f94825f8700caac0b3f4c384b49"}, + {file = "numpy-2.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bc61b307655d1a7f9f4b043628b9f2b721e80839914ede634e3d485913e1fb2"}, + {file = "numpy-2.2.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fad446ad0bc886855ddf5909cbf8cb5d0faa637aaa6277fb4b19ade134ab3c7"}, + {file = "numpy-2.2.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:149d1113ac15005652e8d0d3f6fd599360e1a708a4f98e43c9c77834a28238cb"}, + {file = "numpy-2.2.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:106397dbbb1896f99e044efc90360d098b3335060375c26aa89c0d8a97c5f648"}, + {file = "numpy-2.2.2-cp313-cp313t-win32.whl", hash = "sha256:0eec19f8af947a61e968d5429f0bd92fec46d92b0008d0a6685b40d6adf8a4f4"}, + {file = "numpy-2.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:97b974d3ba0fb4612b77ed35d7627490e8e3dff56ab41454d9e8b23448940576"}, + {file = "numpy-2.2.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b0531f0b0e07643eb089df4c509d30d72c9ef40defa53e41363eca8a8cc61495"}, + {file = "numpy-2.2.2-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:e9e82dcb3f2ebbc8cb5ce1102d5f1c5ed236bf8a11730fb45ba82e2841ec21df"}, + {file = "numpy-2.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0d4142eb40ca6f94539e4db929410f2a46052a0fe7a2c1c59f6179c39938d2a"}, + {file = "numpy-2.2.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:356ca982c188acbfa6af0d694284d8cf20e95b1c3d0aefa8929376fea9146f60"}, + {file = "numpy-2.2.2.tar.gz", hash = "sha256:ed6906f61834d687738d25988ae117683705636936cc605be0bb208b23df4d8f"}, ] [[package]] @@ -3839,10 +3823,10 @@ files = [ numpy = [ {version = ">=1.21.0", markers = "python_version == \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, - {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, ] [[package]] @@ -3865,10 +3849,10 @@ files = [ numpy = [ {version = ">=1.21.0", markers = "python_version == \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, - {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, ] [[package]] @@ -3887,86 +3871,90 @@ et-xmlfile = "*" [[package]] name = "orjson" -version = "3.10.14" +version = "3.10.15" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.14-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:849ea7845a55f09965826e816cdc7689d6cf74fe9223d79d758c714af955bcb6"}, - {file = "orjson-3.10.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5947b139dfa33f72eecc63f17e45230a97e741942955a6c9e650069305eb73d"}, - {file = "orjson-3.10.14-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cde6d76910d3179dae70f164466692f4ea36da124d6fb1a61399ca589e81d69a"}, - {file = "orjson-3.10.14-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6dfbaeb7afa77ca608a50e2770a0461177b63a99520d4928e27591b142c74b1"}, - {file = "orjson-3.10.14-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa45e489ef80f28ff0e5ba0a72812b8cfc7c1ef8b46a694723807d1b07c89ebb"}, - {file = "orjson-3.10.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f5007abfdbb1d866e2aa8990bd1c465f0f6da71d19e695fc278282be12cffa5"}, - {file = "orjson-3.10.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1b49e2af011c84c3f2d541bb5cd1e3c7c2df672223e7e3ea608f09cf295e5f8a"}, - {file = "orjson-3.10.14-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:164ac155109226b3a2606ee6dda899ccfbe6e7e18b5bdc3fbc00f79cc074157d"}, - {file = "orjson-3.10.14-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6b1225024cf0ef5d15934b5ffe9baf860fe8bc68a796513f5ea4f5056de30bca"}, - {file = "orjson-3.10.14-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d6546e8073dc382e60fcae4a001a5a1bc46da5eab4a4878acc2d12072d6166d5"}, - {file = "orjson-3.10.14-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9f1d2942605c894162252d6259b0121bf1cb493071a1ea8cb35d79cb3e6ac5bc"}, - {file = "orjson-3.10.14-cp310-cp310-win32.whl", hash = "sha256:397083806abd51cf2b3bbbf6c347575374d160331a2d33c5823e22249ad3118b"}, - {file = "orjson-3.10.14-cp310-cp310-win_amd64.whl", hash = "sha256:fa18f949d3183a8d468367056be989666ac2bef3a72eece0bade9cdb733b3c28"}, - {file = "orjson-3.10.14-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:f506fd666dd1ecd15a832bebc66c4df45c1902fd47526292836c339f7ba665a9"}, - {file = "orjson-3.10.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efe5fd254cfb0eeee13b8ef7ecb20f5d5a56ddda8a587f3852ab2cedfefdb5f6"}, - {file = "orjson-3.10.14-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4ddc8c866d7467f5ee2991397d2ea94bcf60d0048bdd8ca555740b56f9042725"}, - {file = "orjson-3.10.14-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af8e42ae4363773658b8d578d56dedffb4f05ceeb4d1d4dd3fb504950b45526"}, - {file = "orjson-3.10.14-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84dd83110503bc10e94322bf3ffab8bc49150176b49b4984dc1cce4c0a993bf9"}, - {file = "orjson-3.10.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f5bfc0399cd4811bf10ec7a759c7ab0cd18080956af8ee138097d5b5296a95"}, - {file = "orjson-3.10.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:868943660fb2a1e6b6b965b74430c16a79320b665b28dd4511d15ad5038d37d5"}, - {file = "orjson-3.10.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33449c67195969b1a677533dee9d76e006001213a24501333624623e13c7cc8e"}, - {file = "orjson-3.10.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e4c9f60f9fb0b5be66e416dcd8c9d94c3eabff3801d875bdb1f8ffc12cf86905"}, - {file = "orjson-3.10.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0de4d6315cfdbd9ec803b945c23b3a68207fd47cbe43626036d97e8e9561a436"}, - {file = "orjson-3.10.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:83adda3db595cb1a7e2237029b3249c85afbe5c747d26b41b802e7482cb3933e"}, - {file = "orjson-3.10.14-cp311-cp311-win32.whl", hash = "sha256:998019ef74a4997a9d741b1473533cdb8faa31373afc9849b35129b4b8ec048d"}, - {file = "orjson-3.10.14-cp311-cp311-win_amd64.whl", hash = "sha256:9d034abdd36f0f0f2240f91492684e5043d46f290525d1117712d5b8137784eb"}, - {file = "orjson-3.10.14-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:2ad4b7e367efba6dc3f119c9a0fcd41908b7ec0399a696f3cdea7ec477441b09"}, - {file = "orjson-3.10.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f496286fc85e93ce0f71cc84fc1c42de2decf1bf494094e188e27a53694777a7"}, - {file = "orjson-3.10.14-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c7f189bbfcded40e41a6969c1068ba305850ba016665be71a217918931416fbf"}, - {file = "orjson-3.10.14-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8cc8204f0b75606869c707da331058ddf085de29558b516fc43c73ee5ee2aadb"}, - {file = "orjson-3.10.14-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:deaa2899dff7f03ab667e2ec25842d233e2a6a9e333efa484dfe666403f3501c"}, - {file = "orjson-3.10.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1c3ea52642c9714dc6e56de8a451a066f6d2707d273e07fe8a9cc1ba073813d"}, - {file = "orjson-3.10.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d3f9ed72e7458ded9a1fb1b4d4ed4c4fdbaf82030ce3f9274b4dc1bff7ace2b"}, - {file = "orjson-3.10.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:07520685d408a2aba514c17ccc16199ff2934f9f9e28501e676c557f454a37fe"}, - {file = "orjson-3.10.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:76344269b550ea01488d19a2a369ab572c1ac4449a72e9f6ac0d70eb1cbfb953"}, - {file = "orjson-3.10.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e2979d0f2959990620f7e62da6cd954e4620ee815539bc57a8ae46e2dacf90e3"}, - {file = "orjson-3.10.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03f61ca3674555adcb1aa717b9fc87ae936aa7a63f6aba90a474a88701278780"}, - {file = "orjson-3.10.14-cp312-cp312-win32.whl", hash = "sha256:d5075c54edf1d6ad81d4c6523ce54a748ba1208b542e54b97d8a882ecd810fd1"}, - {file = "orjson-3.10.14-cp312-cp312-win_amd64.whl", hash = "sha256:175cafd322e458603e8ce73510a068d16b6e6f389c13f69bf16de0e843d7d406"}, - {file = "orjson-3.10.14-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:0905ca08a10f7e0e0c97d11359609300eb1437490a7f32bbaa349de757e2e0c7"}, - {file = "orjson-3.10.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92d13292249f9f2a3e418cbc307a9fbbef043c65f4bd8ba1eb620bc2aaba3d15"}, - {file = "orjson-3.10.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90937664e776ad316d64251e2fa2ad69265e4443067668e4727074fe39676414"}, - {file = "orjson-3.10.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9ed3d26c4cb4f6babaf791aa46a029265850e80ec2a566581f5c2ee1a14df4f1"}, - {file = "orjson-3.10.14-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:56ee546c2bbe9599aba78169f99d1dc33301853e897dbaf642d654248280dc6e"}, - {file = "orjson-3.10.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:901e826cb2f1bdc1fcef3ef59adf0c451e8f7c0b5deb26c1a933fb66fb505eae"}, - {file = "orjson-3.10.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:26336c0d4b2d44636e1e1e6ed1002f03c6aae4a8a9329561c8883f135e9ff010"}, - {file = "orjson-3.10.14-cp313-cp313-win32.whl", hash = "sha256:e2bc525e335a8545c4e48f84dd0328bc46158c9aaeb8a1c2276546e94540ea3d"}, - {file = "orjson-3.10.14-cp313-cp313-win_amd64.whl", hash = "sha256:eca04dfd792cedad53dc9a917da1a522486255360cb4e77619343a20d9f35364"}, - {file = "orjson-3.10.14-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9a0fba3b8a587a54c18585f077dcab6dd251c170d85cfa4d063d5746cd595a0f"}, - {file = "orjson-3.10.14-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:175abf3d20e737fec47261d278f95031736a49d7832a09ab684026528c4d96db"}, - {file = "orjson-3.10.14-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29ca1a93e035d570e8b791b6c0feddd403c6a5388bfe870bf2aa6bba1b9d9b8e"}, - {file = "orjson-3.10.14-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f77202c80e8ab5a1d1e9faf642343bee5aaf332061e1ada4e9147dbd9eb00c46"}, - {file = "orjson-3.10.14-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e2ec73b7099b6a29b40a62e08a23b936423bd35529f8f55c42e27acccde7954"}, - {file = "orjson-3.10.14-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2d1679df9f9cd9504f8dff24555c1eaabba8aad7f5914f28dab99e3c2552c9d"}, - {file = "orjson-3.10.14-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:691ab9a13834310a263664313e4f747ceb93662d14a8bdf20eb97d27ed488f16"}, - {file = "orjson-3.10.14-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:b11ed82054fce82fb74cea33247d825d05ad6a4015ecfc02af5fbce442fbf361"}, - {file = "orjson-3.10.14-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:e70a1d62b8288677d48f3bea66c21586a5f999c64ecd3878edb7393e8d1b548d"}, - {file = "orjson-3.10.14-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:16642f10c1ca5611251bd835de9914a4b03095e28a34c8ba6a5500b5074338bd"}, - {file = "orjson-3.10.14-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3871bad546aa66c155e3f36f99c459780c2a392d502a64e23fb96d9abf338511"}, - {file = "orjson-3.10.14-cp38-cp38-win32.whl", hash = "sha256:0293a88815e9bb5c90af4045f81ed364d982f955d12052d989d844d6c4e50945"}, - {file = "orjson-3.10.14-cp38-cp38-win_amd64.whl", hash = "sha256:6169d3868b190d6b21adc8e61f64e3db30f50559dfbdef34a1cd6c738d409dfc"}, - {file = "orjson-3.10.14-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:06d4ec218b1ec1467d8d64da4e123b4794c781b536203c309ca0f52819a16c03"}, - {file = "orjson-3.10.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:962c2ec0dcaf22b76dee9831fdf0c4a33d4bf9a257a2bc5d4adc00d5c8ad9034"}, - {file = "orjson-3.10.14-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:21d3be4132f71ef1360385770474f29ea1538a242eef72ac4934fe142800e37f"}, - {file = "orjson-3.10.14-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c28ed60597c149a9e3f5ad6dd9cebaee6fb2f0e3f2d159a4a2b9b862d4748860"}, - {file = "orjson-3.10.14-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e947f70167fe18469f2023644e91ab3d24f9aed69a5e1c78e2c81b9cea553fb"}, - {file = "orjson-3.10.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64410696c97a35af2432dea7bdc4ce32416458159430ef1b4beb79fd30093ad6"}, - {file = "orjson-3.10.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8050a5d81c022561ee29cd2739de5b4445f3c72f39423fde80a63299c1892c52"}, - {file = "orjson-3.10.14-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:b49a28e30d3eca86db3fe6f9b7f4152fcacbb4a467953cd1b42b94b479b77956"}, - {file = "orjson-3.10.14-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:ca041ad20291a65d853a9523744eebc3f5a4b2f7634e99f8fe88320695ddf766"}, - {file = "orjson-3.10.14-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d313a2998b74bb26e9e371851a173a9b9474764916f1fc7971095699b3c6e964"}, - {file = "orjson-3.10.14-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7796692136a67b3e301ef9052bde6fe8e7bd5200da766811a3a608ffa62aaff0"}, - {file = "orjson-3.10.14-cp39-cp39-win32.whl", hash = "sha256:eee4bc767f348fba485ed9dc576ca58b0a9eac237f0e160f7a59bce628ed06b3"}, - {file = "orjson-3.10.14-cp39-cp39-win_amd64.whl", hash = "sha256:96a1c0ee30fb113b3ae3c748fd75ca74a157ff4c58476c47db4d61518962a011"}, - {file = "orjson-3.10.14.tar.gz", hash = "sha256:cf31f6f071a6b8e7aa1ead1fa27b935b48d00fbfa6a28ce856cfff2d5dd68eed"}, + {file = "orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c2c79fa308e6edb0ffab0a31fd75a7841bf2a79a20ef08a3c6e3b26814c8ca8"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cb85490aa6bf98abd20607ab5c8324c0acb48d6da7863a51be48505646c814"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763dadac05e4e9d2bc14938a45a2d0560549561287d41c465d3c58aec818b164"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a330b9b4734f09a623f74a7490db713695e13b67c959713b78369f26b3dee6bf"}, + {file = "orjson-3.10.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a61a4622b7ff861f019974f73d8165be1bd9a0855e1cad18ee167acacabeb061"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:acd271247691574416b3228db667b84775c497b245fa275c6ab90dc1ffbbd2b3"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4759b109c37f635aa5c5cc93a1b26927bfde24b254bcc0e1149a9fada253d2d"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9e992fd5cfb8b9f00bfad2fd7a05a4299db2bbe92e6440d9dd2fab27655b3182"}, + {file = "orjson-3.10.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f95fb363d79366af56c3f26b71df40b9a583b07bbaaf5b317407c4d58497852e"}, + {file = "orjson-3.10.15-cp310-cp310-win32.whl", hash = "sha256:f9875f5fea7492da8ec2444839dcc439b0ef298978f311103d0b7dfd775898ab"}, + {file = "orjson-3.10.15-cp310-cp310-win_amd64.whl", hash = "sha256:17085a6aa91e1cd70ca8533989a18b5433e15d29c574582f76f821737c8d5806"}, + {file = "orjson-3.10.15-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c4cc83960ab79a4031f3119cc4b1a1c627a3dc09df125b27c4201dff2af7eaa6"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddbeef2481d895ab8be5185f2432c334d6dec1f5d1933a9c83014d188e102cef"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e590a0477b23ecd5b0ac865b1b907b01b3c5535f5e8a8f6ab0e503efb896334"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a6be38bd103d2fd9bdfa31c2720b23b5d47c6796bcb1d1b598e3924441b4298d"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ff4f6edb1578960ed628a3b998fa54d78d9bb3e2eb2cfc5c2a09732431c678d0"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0482b21d0462eddd67e7fce10b89e0b6ac56570424662b685a0d6fccf581e13"}, + {file = "orjson-3.10.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bb5cc3527036ae3d98b65e37b7986a918955f85332c1ee07f9d3f82f3a6899b5"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d569c1c462912acdd119ccbf719cf7102ea2c67dd03b99edcb1a3048651ac96b"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:1e6d33efab6b71d67f22bf2962895d3dc6f82a6273a965fab762e64fa90dc399"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:c33be3795e299f565681d69852ac8c1bc5c84863c0b0030b2b3468843be90388"}, + {file = "orjson-3.10.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:eea80037b9fae5339b214f59308ef0589fc06dc870578b7cce6d71eb2096764c"}, + {file = "orjson-3.10.15-cp311-cp311-win32.whl", hash = "sha256:d5ac11b659fd798228a7adba3e37c010e0152b78b1982897020a8e019a94882e"}, + {file = "orjson-3.10.15-cp311-cp311-win_amd64.whl", hash = "sha256:cf45e0214c593660339ef63e875f32ddd5aa3b4adc15e662cdb80dc49e194f8e"}, + {file = "orjson-3.10.15-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:9d11c0714fc85bfcf36ada1179400862da3288fc785c30e8297844c867d7505a"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dba5a1e85d554e3897fa9fe6fbcff2ed32d55008973ec9a2b992bd9a65d2352d"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7723ad949a0ea502df656948ddd8b392780a5beaa4c3b5f97e525191b102fff0"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6fd9bc64421e9fe9bd88039e7ce8e58d4fead67ca88e3a4014b143cec7684fd4"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dadba0e7b6594216c214ef7894c4bd5f08d7c0135f4dd0145600be4fbcc16767"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b48f59114fe318f33bbaee8ebeda696d8ccc94c9e90bc27dbe72153094e26f41"}, + {file = "orjson-3.10.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:035fb83585e0f15e076759b6fedaf0abb460d1765b6a36f48018a52858443514"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d13b7fe322d75bf84464b075eafd8e7dd9eae05649aa2a5354cfa32f43c59f17"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7066b74f9f259849629e0d04db6609db4cf5b973248f455ba5d3bd58a4daaa5b"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88dc3f65a026bd3175eb157fea994fca6ac7c4c8579fc5a86fc2114ad05705b7"}, + {file = "orjson-3.10.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b342567e5465bd99faa559507fe45e33fc76b9fb868a63f1642c6bc0735ad02a"}, + {file = "orjson-3.10.15-cp312-cp312-win32.whl", hash = "sha256:0a4f27ea5617828e6b58922fdbec67b0aa4bb844e2d363b9244c47fa2180e665"}, + {file = "orjson-3.10.15-cp312-cp312-win_amd64.whl", hash = "sha256:ef5b87e7aa9545ddadd2309efe6824bd3dd64ac101c15dae0f2f597911d46eaa"}, + {file = "orjson-3.10.15-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:bae0e6ec2b7ba6895198cd981b7cca95d1487d0147c8ed751e5632ad16f031a6"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f93ce145b2db1252dd86af37d4165b6faa83072b46e3995ecc95d4b2301b725a"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7c203f6f969210128af3acae0ef9ea6aab9782939f45f6fe02d05958fe761ef9"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8918719572d662e18b8af66aef699d8c21072e54b6c82a3f8f6404c1f5ccd5e0"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f71eae9651465dff70aa80db92586ad5b92df46a9373ee55252109bb6b703307"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e117eb299a35f2634e25ed120c37c641398826c2f5a3d3cc39f5993b96171b9e"}, + {file = "orjson-3.10.15-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:13242f12d295e83c2955756a574ddd6741c81e5b99f2bef8ed8d53e47a01e4b7"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7946922ada8f3e0b7b958cc3eb22cfcf6c0df83d1fe5521b4a100103e3fa84c8"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:b7155eb1623347f0f22c38c9abdd738b287e39b9982e1da227503387b81b34ca"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:208beedfa807c922da4e81061dafa9c8489c6328934ca2a562efa707e049e561"}, + {file = "orjson-3.10.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eca81f83b1b8c07449e1d6ff7074e82e3fd6777e588f1a6632127f286a968825"}, + {file = "orjson-3.10.15-cp313-cp313-win32.whl", hash = "sha256:c03cd6eea1bd3b949d0d007c8d57049aa2b39bd49f58b4b2af571a5d3833d890"}, + {file = "orjson-3.10.15-cp313-cp313-win_amd64.whl", hash = "sha256:fd56a26a04f6ba5fb2045b0acc487a63162a958ed837648c5781e1fe3316cfbf"}, + {file = "orjson-3.10.15-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:5e8afd6200e12771467a1a44e5ad780614b86abb4b11862ec54861a82d677746"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da9a18c500f19273e9e104cca8c1f0b40a6470bcccfc33afcc088045d0bf5ea6"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb00b7bfbdf5d34a13180e4805d76b4567025da19a197645ca746fc2fb536586"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:33aedc3d903378e257047fee506f11e0833146ca3e57a1a1fb0ddb789876c1e1"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd0099ae6aed5eb1fc84c9eb72b95505a3df4267e6962eb93cdd5af03be71c98"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c864a80a2d467d7786274fce0e4f93ef2a7ca4ff31f7fc5634225aaa4e9e98c"}, + {file = "orjson-3.10.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c25774c9e88a3e0013d7d1a6c8056926b607a61edd423b50eb5c88fd7f2823ae"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e78c211d0074e783d824ce7bb85bf459f93a233eb67a5b5003498232ddfb0e8a"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_armv7l.whl", hash = "sha256:43e17289ffdbbac8f39243916c893d2ae41a2ea1a9cbb060a56a4d75286351ae"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:781d54657063f361e89714293c095f506c533582ee40a426cb6489c48a637b81"}, + {file = "orjson-3.10.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6875210307d36c94873f553786a808af2788e362bd0cf4c8e66d976791e7b528"}, + {file = "orjson-3.10.15-cp38-cp38-win32.whl", hash = "sha256:305b38b2b8f8083cc3d618927d7f424349afce5975b316d33075ef0f73576b60"}, + {file = "orjson-3.10.15-cp38-cp38-win_amd64.whl", hash = "sha256:5dd9ef1639878cc3efffed349543cbf9372bdbd79f478615a1c633fe4e4180d1"}, + {file = "orjson-3.10.15-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ffe19f3e8d68111e8644d4f4e267a069ca427926855582ff01fc012496d19969"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d433bf32a363823863a96561a555227c18a522a8217a6f9400f00ddc70139ae2"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:da03392674f59a95d03fa5fb9fe3a160b0511ad84b7a3914699ea5a1b3a38da2"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3a63bb41559b05360ded9132032239e47983a39b151af1201f07ec9370715c82"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3766ac4702f8f795ff3fa067968e806b4344af257011858cc3d6d8721588b53f"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a1c73dcc8fadbd7c55802d9aa093b36878d34a3b3222c41052ce6b0fc65f8e8"}, + {file = "orjson-3.10.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b299383825eafe642cbab34be762ccff9fd3408d72726a6b2a4506d410a71ab3"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:abc7abecdbf67a173ef1316036ebbf54ce400ef2300b4e26a7b843bd446c2480"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:3614ea508d522a621384c1d6639016a5a2e4f027f3e4a1c93a51867615d28829"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:295c70f9dc154307777ba30fe29ff15c1bcc9dfc5c48632f37d20a607e9ba85a"}, + {file = "orjson-3.10.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:63309e3ff924c62404923c80b9e2048c1f74ba4b615e7584584389ada50ed428"}, + {file = "orjson-3.10.15-cp39-cp39-win32.whl", hash = "sha256:a2f708c62d026fb5340788ba94a55c23df4e1869fec74be455e0b2f5363b8507"}, + {file = "orjson-3.10.15-cp39-cp39-win_amd64.whl", hash = "sha256:efcf6c735c3d22ef60c4aa27a5238f1a477df85e9b15f2142f9d669beb2d13fd"}, + {file = "orjson-3.10.15.tar.gz", hash = "sha256:05ca7fe452a2e9d8d9d706a2984c95b9c2ebc5db417ce0b7a49b91d50642a23e"}, ] [[package]] @@ -4049,8 +4037,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.22.4", markers = "python_version < \"3.11\""}, - {version = ">=1.23.2", markers = "python_version == \"3.11\""}, {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -4309,13 +4297,13 @@ virtualenv = ">=20.10.0" [[package]] name = "prompt-toolkit" -version = "3.0.48" +version = "3.0.50" description = "Library for building powerful interactive command lines in Python" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, - {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, + {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, + {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, ] [package.dependencies] @@ -4830,13 +4818,13 @@ testutils = ["gitpython (>3)"] [[package]] name = "pymdown-extensions" -version = "10.14" +version = "10.14.1" description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" files = [ - {file = "pymdown_extensions-10.14-py3-none-any.whl", hash = "sha256:202481f716cc8250e4be8fce997781ebf7917701b59652458ee47f2401f818b5"}, - {file = "pymdown_extensions-10.14.tar.gz", hash = "sha256:741bd7c4ff961ba40b7528d32284c53bc436b8b1645e8e37c3e57770b8700a34"}, + {file = "pymdown_extensions-10.14.1-py3-none-any.whl", hash = "sha256:637951cbfbe9874ba28134fb3ce4b8bcadd6aca89ac4998ec29dcbafd554ae08"}, + {file = "pymdown_extensions-10.14.1.tar.gz", hash = "sha256:b65801996a0cd4f42a3110810c306c45b7313c09b0610a6f773730f2a9e3c96b"}, ] [package.dependencies] @@ -4848,13 +4836,13 @@ extra = ["pygments (>=2.19.1)"] [[package]] name = "pymilvus" -version = "2.5.3" +version = "2.5.4" description = "Python Sdk for Milvus" optional = false python-versions = ">=3.8" files = [ - {file = "pymilvus-2.5.3-py3-none-any.whl", hash = "sha256:64ca63594284586937274800be27a402f3be2d078130bf81d94ab8d7798ac9c8"}, - {file = "pymilvus-2.5.3.tar.gz", hash = "sha256:68bc3797b7a14c494caf116cee888894ffd6eba7b96a3ac841be85d60694cc5d"}, + {file = "pymilvus-2.5.4-py3-none-any.whl", hash = "sha256:3f7ddaeae0c8f63554b8e316b73f265d022e05a457d47c366ce47293434a3aea"}, + {file = "pymilvus-2.5.4.tar.gz", hash = "sha256:611732428ff669d57ded3d1f823bdeb10febf233d0251cce8498b287e5a10ce8"}, ] [package.dependencies] @@ -6986,13 +6974,13 @@ vision = ["Pillow (>=10.0.1,<=15.0)"] [[package]] name = "transformers" -version = "4.48.0" +version = "4.48.1" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" optional = false python-versions = ">=3.9.0" files = [ - {file = "transformers-4.48.0-py3-none-any.whl", hash = "sha256:6d3de6d71cb5f2a10f9775ccc17abce9620195caaf32ec96542bd2a6937f25b0"}, - {file = "transformers-4.48.0.tar.gz", hash = "sha256:03fdfcbfb8b0367fb6c9fbe9d1c9aa54dfd847618be9b52400b2811d22799cb1"}, + {file = "transformers-4.48.1-py3-none-any.whl", hash = "sha256:24be0564b0a36d9e433d9a65de248f1545b6f6edce1737669605eb6a8141bbbb"}, + {file = "transformers-4.48.1.tar.gz", hash = "sha256:7c1931facc3ee8adcbf86fc7a87461d54c1e40eca3bb57fef1ee9f3ecd32187e"}, ] [package.dependencies] @@ -7187,13 +7175,13 @@ files = [ [[package]] name = "tzdata" -version = "2024.2" +version = "2025.1" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, - {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, + {file = "tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639"}, + {file = "tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694"}, ] [[package]] @@ -7302,13 +7290,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.29.0" +version = "20.29.1" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" files = [ - {file = "virtualenv-20.29.0-py3-none-any.whl", hash = "sha256:c12311863497992dc4b8644f8ea82d3b35bb7ef8ee82e6630d76d0197c39baf9"}, - {file = "virtualenv-20.29.0.tar.gz", hash = "sha256:6345e1ff19d4b1296954cee076baaf58ff2a12a84a338c62b02eda39f20aa982"}, + {file = "virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779"}, + {file = "virtualenv-20.29.1.tar.gz", hash = "sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35"}, ] [package.dependencies] @@ -7763,4 +7751,4 @@ tesserocr = ["tesserocr"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "0c0bb9470144867d7f11dec7c3020ac3d4d9ef18b355c0852a9cb89b6270981d" +content-hash = "8bb0b67294a50c0340c5cc02ce60d3608ef4d1968ae50f7e0b8b4c8a26c34734" diff --git a/pyproject.toml b/pyproject.toml index 63f60160..c3e1fa67 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,9 +25,9 @@ packages = [{include = "docling"}] # actual dependencies: ###################### python = "^3.9" -docling-core = { version = "^2.13.1", extras = ["chunking"] } pydantic = "^2.0.0" -docling-ibm-models = "^3.1.0" +docling-core = { version = "^2.15.1", extras = ["chunking"] } +docling-ibm-models = "^3.2.1" deepsearch-glm = "^1.0.0" docling-parse = "^3.1.0" filetype = "^1.2.0" diff --git a/tests/data/code_and_formula.pdf b/tests/data/code_and_formula.pdf new file mode 100644 index 0000000000000000000000000000000000000000..82cd834321a6fc0b14b02d75cb94bd99e36d843b GIT binary patch literal 94301 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 literal 0 HcmV?d00001 diff --git a/tests/data/groundtruth/docling_v1/code_and_formula.doctags.txt b/tests/data/groundtruth/docling_v1/code_and_formula.doctags.txt new file mode 100644 index 00000000..1f1a0db7 --- /dev/null +++ b/tests/data/groundtruth/docling_v1/code_and_formula.doctags.txt @@ -0,0 +1,13 @@ + +Java Code Example +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +Listing 1: Simple Java Program +public static void print() { System.out.println( "Java Code" ); } +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +Formula +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt. +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/code_and_formula.json b/tests/data/groundtruth/docling_v1/code_and_formula.json new file mode 100644 index 00000000..8b90e794 --- /dev/null +++ b/tests/data/groundtruth/docling_v1/code_and_formula.json @@ -0,0 +1 @@ +{"_name": "", "type": "pdf-document", "description": {"title": null, "abstract": null, "authors": null, "affiliations": null, "subjects": null, "keywords": null, "publication_date": null, "languages": null, "license": null, "publishers": null, "url_refs": null, "references": null, "publication": null, "reference_count": null, "citation_count": null, "citation_date": null, "advanced": null, "analytics": null, "logs": [], "collection": null, "acquisition": null}, "file-info": {"filename": "code_and_formula.pdf", "filename-prov": null, "document-hash": "71dd5c52aa241a6d5275d5f681023b6bb3dee3346e171075d1247c87d49e7a82", "#-pages": 2, "collection-name": null, "description": null, "page-hashes": [{"hash": "d3280840ba2dff9749506fce3f05166336b768d2096f6b332fcbfacbc0540edf", "model": "default", "page": 1}, {"hash": "e9aac72f810d71aeb3710b13689d8c55e6eeda390fb497f09e865f1e94f74f2b", "model": "default", "page": 2}]}, "main-text": [{"prov": [{"bbox": [133.76800537109375, 653.6340942382812, 273.4540100097656, 667.99462890625], "page": 1, "span": [0, 17], "__ref_s3_data": null}], "text": "Java Code Example", "type": "subtitle-level-1", "payload": null, "name": "Section-header", "font": null}, {"prov": [{"bbox": [133.76800537109375, 501.4163513183594, 477.48065185546875, 642.8859252929688], "page": 1, "span": [0, 887], "__ref_s3_data": null}], "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", "type": "paragraph", "payload": null, "name": "Text", "font": null}, {"prov": [{"bbox": [236.17599487304688, 480.4953308105469, 375.069580078125, 490.45794677734375], "page": 1, "span": [0, 30], "__ref_s3_data": null}], "text": "Listing 1: Simple Java Program", "type": "paragraph", "payload": null, "name": "paragraph", "font": null}, {"prov": [{"bbox": [134.23899841308594, 443.9358215332031, 337.5928649902344, 474.2005310058594], "page": 1, "span": [0, 65], "__ref_s3_data": null}], "text": "public static void print() { System.out.println( \"Java Code\" ); }", "type": "paragraph", "payload": null, "name": "Code", "font": null}, {"prov": [{"bbox": [133.76800537109375, 290.80633544921875, 477.47589111328125, 432.27593994140625], "page": 1, "span": [0, 887], "__ref_s3_data": null}], "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", "type": "paragraph", "payload": null, "name": "Text", "font": null}, {"prov": [{"bbox": [303.13299560546875, 86.87435150146484, 308.1142883300781, 96.83694458007812], "page": 1, "span": [0, 1], "__ref_s3_data": null}], "text": "1", "type": "page-footer", "payload": null, "name": "Page-footer", "font": null}, {"prov": [{"bbox": [133.76800537109375, 703.5241088867188, 191.51429748535156, 717.8846435546875], "page": 2, "span": [0, 7], "__ref_s3_data": null}], "text": "Formula", "type": "subtitle-level-1", "payload": null, "name": "Section-header", "font": null}, {"prov": [{"bbox": [133.76800537109375, 551.3063354492188, 477.48065185546875, 692.7759399414062], "page": 2, "span": [0, 887], "__ref_s3_data": null}], "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", "type": "paragraph", "payload": null, "name": "Text", "font": null}, {"prov": [{"bbox": [133.76800537109375, 491.53033447265625, 477.4748229980469, 549.3139038085938], "page": 2, "span": [0, 369], "__ref_s3_data": null}], "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt.", "type": "paragraph", "payload": null, "name": "Text", "font": null}, {"prov": [{"bbox": [280.5539855957031, 467.6203308105469, 330.69659423828125, 479.4553527832031], "page": 2, "span": [0, 12], "__ref_s3_data": null}], "text": "a 2 + 8 = 12", "type": "equation", "payload": null, "name": "Formula", "font": null}, {"prov": [{"bbox": [133.76800537109375, 318.1803283691406, 477.47589111328125, 459.64996337890625], "page": 2, "span": [0, 887], "__ref_s3_data": null}], "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", "type": "paragraph", "payload": null, "name": "Text", "font": null}, {"prov": [{"bbox": [133.76800537109375, 246.44935607910156, 477.4748229980469, 316.1879577636719], "page": 2, "span": [0, 415], "__ref_s3_data": null}], "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.", "type": "paragraph", "payload": null, "name": "Text", "font": null}, {"prov": [{"bbox": [133.76800537109375, 174.71835327148438, 477.4748229980469, 244.4569549560547], "page": 2, "span": [0, 415], "__ref_s3_data": null}], "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.", "type": "paragraph", "payload": null, "name": "Text", "font": null}, {"prov": [{"bbox": [303.13299560546875, 136.7633514404297, 308.1142883300781, 146.7259521484375], "page": 2, "span": [0, 1], "__ref_s3_data": null}], "text": "1", "type": "page-footer", "payload": null, "name": "Page-footer", "font": null}], "figures": [], "tables": [], "bitmaps": null, "equations": [], "footnotes": [], "page-dimensions": [{"height": 792.0, "page": 1, "width": 612.0}, {"height": 841.8900146484375, "page": 2, "width": 595.2760009765625}], "page-footers": [], "page-headers": [], "_s3_data": null, "identifiers": null} \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/code_and_formula.md b/tests/data/groundtruth/docling_v1/code_and_formula.md new file mode 100644 index 00000000..4d77dc5c --- /dev/null +++ b/tests/data/groundtruth/docling_v1/code_and_formula.md @@ -0,0 +1,19 @@ +## Java Code Example + +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Listing 1: Simple Java Program + +public static void print() { System.out.println( "Java Code" ); } + +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +## Formula + +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt. + +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v1/code_and_formula.pages.json b/tests/data/groundtruth/docling_v1/code_and_formula.pages.json new file mode 100644 index 00000000..27682fdd --- /dev/null +++ b/tests/data/groundtruth/docling_v1/code_and_formula.pages.json @@ -0,0 +1 @@ +[{"page_no": 0, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Java Code Example", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.47687, "b": 159.07665999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801, "t": 161.06908999999996, "r": 477.47781000000003, "b": 171.03168000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801, "t": 173.02405, "r": 477.46985, "b": 182.98663, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801, "t": 184.97906, "r": 477.47186, "b": 194.94164999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801, "t": 196.93408, "r": 477.46993999999995, "b": 206.89666999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801, "t": 208.88909999999998, "r": 477.4806500000001, "b": 218.85168, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801, "t": 220.84509000000003, "r": 355.20087, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.60107, "t": 220.84509000000003, "r": 477.47495000000004, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 232.80005000000006, "r": 477.47083, "b": 242.76262999999994, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 244.75507000000005, "r": 477.47092, "b": 254.71765000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 256.71007999999995, "r": 477.46588, "b": 266.67267000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 268.66510000000005, "r": 477.47586, "b": 278.62769000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 280.62103, "r": 351.47672, "b": 290.58365, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Listing 1: Simple Java Program", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "public static void", "bbox": {"l": 134.575, "t": 317.79947000000004, "r": 235.44695, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "print() {", "bbox": {"l": 241.8759, "t": 317.79947000000004, "r": 292.24908, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "System.out.println(", "bbox": {"l": 157.17101, "t": 328.75745, "r": 264.02368, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "\"Java Code\"", "bbox": {"l": 264.15811, "t": 328.75745, "r": 325.35376, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ");", "bbox": {"l": 326.2952, "t": 328.75745, "r": 337.59286, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "}", "bbox": {"l": 134.239, "t": 339.71646, "r": 138.94637, "b": 348.06418, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201, "t": 359.72406, "r": 477.46985, "b": 369.68667999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801, "t": 371.67905, "r": 477.4758, "b": 381.64166000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801, "t": 383.63403, "r": 477.4758, "b": 393.59665, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801, "t": 395.58905, "r": 477.47284, "b": 405.55167, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801, "t": 407.54404, "r": 477.47589, "b": 417.50665, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801, "t": 419.50003000000004, "r": 477.47177000000005, "b": 429.46265, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801, "t": 431.45505, "r": 477.47387999999995, "b": 441.41766000000007, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 443.41003, "r": 477.47083, "b": 453.37265, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 455.36505, "r": 477.47092, "b": 465.32767, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 467.32004, "r": 477.46585, "b": 477.28265, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 479.27603, "r": 477.47586, "b": 489.23865, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 491.23105, "r": 351.47672, "b": 501.19366, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "1", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 2, "label": "section_header", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9581764936447144, "cells": [{"id": 0, "text": "Java Code Example", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 0, "label": "text", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.4806500000001, "b": 290.58365, "coord_origin": "TOPLEFT"}, "confidence": 0.9872456789016724, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.47687, "b": 159.07665999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801, "t": 161.06908999999996, "r": 477.47781000000003, "b": 171.03168000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801, "t": 173.02405, "r": 477.46985, "b": 182.98663, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801, "t": 184.97906, "r": 477.47186, "b": 194.94164999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801, "t": 196.93408, "r": 477.46993999999995, "b": 206.89666999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801, "t": 208.88909999999998, "r": 477.4806500000001, "b": 218.85168, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801, "t": 220.84509000000003, "r": 355.20087, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.60107, "t": 220.84509000000003, "r": 477.47495000000004, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 232.80005000000006, "r": 477.47083, "b": 242.76262999999994, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 244.75507000000005, "r": 477.47092, "b": 254.71765000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 256.71007999999995, "r": 477.46588, "b": 266.67267000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 268.66510000000005, "r": 477.47586, "b": 278.62769000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 280.62103, "r": 351.47672, "b": 290.58365, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 5, "label": "caption", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}, "confidence": 0.5425266027450562, "cells": [{"id": 14, "text": "Listing 1: Simple Java Program", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 4, "label": "code", "bbox": {"l": 134.239, "t": 317.79947000000004, "r": 337.59286, "b": 348.06418, "coord_origin": "TOPLEFT"}, "confidence": 0.6383119821548462, "cells": [{"id": 15, "text": "public static void", "bbox": {"l": 134.575, "t": 317.79947000000004, "r": 235.44695, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "print() {", "bbox": {"l": 241.8759, "t": 317.79947000000004, "r": 292.24908, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "System.out.println(", "bbox": {"l": 157.17101, "t": 328.75745, "r": 264.02368, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "\"Java Code\"", "bbox": {"l": 264.15811, "t": 328.75745, "r": 325.35376, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ");", "bbox": {"l": 326.2952, "t": 328.75745, "r": 337.59286, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "}", "bbox": {"l": 134.239, "t": 339.71646, "r": 138.94637, "b": 348.06418, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 1, "label": "text", "bbox": {"l": 133.76801, "t": 359.72406, "r": 477.47589, "b": 501.19366, "coord_origin": "TOPLEFT"}, "confidence": 0.9869542717933655, "cells": [{"id": 21, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201, "t": 359.72406, "r": 477.46985, "b": 369.68667999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801, "t": 371.67905, "r": 477.4758, "b": 381.64166000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801, "t": 383.63403, "r": 477.4758, "b": 393.59665, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801, "t": 395.58905, "r": 477.47284, "b": 405.55167, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801, "t": 407.54404, "r": 477.47589, "b": 417.50665, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801, "t": 419.50003000000004, "r": 477.47177000000005, "b": 429.46265, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801, "t": 431.45505, "r": 477.47387999999995, "b": 441.41766000000007, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 443.41003, "r": 477.47083, "b": 453.37265, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 455.36505, "r": 477.47092, "b": 465.32767, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 467.32004, "r": 477.46585, "b": 477.28265, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 479.27603, "r": 477.47586, "b": 489.23865, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 491.23105, "r": 351.47672, "b": 501.19366, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 3, "label": "page_footer", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}, "confidence": 0.8374724984169006, "cells": [{"id": 33, "text": "1", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}}], "children": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "section_header", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9581764936447144, "cells": [{"id": 0, "text": "Java Code Example", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Java Code Example"}, {"label": "text", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "text", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.4806500000001, "b": 290.58365, "coord_origin": "TOPLEFT"}, "confidence": 0.9872456789016724, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.47687, "b": 159.07665999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801, "t": 161.06908999999996, "r": 477.47781000000003, "b": 171.03168000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801, "t": 173.02405, "r": 477.46985, "b": 182.98663, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801, "t": 184.97906, "r": 477.47186, "b": 194.94164999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801, "t": 196.93408, "r": 477.46993999999995, "b": 206.89666999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801, "t": 208.88909999999998, "r": 477.4806500000001, "b": 218.85168, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801, "t": 220.84509000000003, "r": 355.20087, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.60107, "t": 220.84509000000003, "r": 477.47495000000004, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 232.80005000000006, "r": 477.47083, "b": 242.76262999999994, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 244.75507000000005, "r": 477.47092, "b": 254.71765000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 256.71007999999995, "r": 477.46588, "b": 266.67267000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 268.66510000000005, "r": 477.47586, "b": 278.62769000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 280.62103, "r": 351.47672, "b": 290.58365, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "caption", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}, "confidence": 0.5425266027450562, "cells": [{"id": 14, "text": "Listing 1: Simple Java Program", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Listing 1: Simple Java Program"}, {"label": "code", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "code", "bbox": {"l": 134.239, "t": 317.79947000000004, "r": 337.59286, "b": 348.06418, "coord_origin": "TOPLEFT"}, "confidence": 0.6383119821548462, "cells": [{"id": 15, "text": "public static void", "bbox": {"l": 134.575, "t": 317.79947000000004, "r": 235.44695, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "print() {", "bbox": {"l": 241.8759, "t": 317.79947000000004, "r": 292.24908, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "System.out.println(", "bbox": {"l": 157.17101, "t": 328.75745, "r": 264.02368, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "\"Java Code\"", "bbox": {"l": 264.15811, "t": 328.75745, "r": 325.35376, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ");", "bbox": {"l": 326.2952, "t": 328.75745, "r": 337.59286, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "}", "bbox": {"l": 134.239, "t": 339.71646, "r": 138.94637, "b": 348.06418, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "public static void print() { System.out.println( \"Java Code\" ); }"}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 133.76801, "t": 359.72406, "r": 477.47589, "b": 501.19366, "coord_origin": "TOPLEFT"}, "confidence": 0.9869542717933655, "cells": [{"id": 21, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201, "t": 359.72406, "r": 477.46985, "b": 369.68667999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801, "t": 371.67905, "r": 477.4758, "b": 381.64166000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801, "t": 383.63403, "r": 477.4758, "b": 393.59665, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801, "t": 395.58905, "r": 477.47284, "b": 405.55167, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801, "t": 407.54404, "r": 477.47589, "b": 417.50665, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801, "t": 419.50003000000004, "r": 477.47177000000005, "b": 429.46265, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801, "t": 431.45505, "r": 477.47387999999995, "b": 441.41766000000007, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 443.41003, "r": 477.47083, "b": 453.37265, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 455.36505, "r": 477.47092, "b": 465.32767, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 467.32004, "r": 477.46585, "b": 477.28265, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 479.27603, "r": 477.47586, "b": 489.23865, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 491.23105, "r": 351.47672, "b": 501.19366, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "page_footer", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "page_footer", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}, "confidence": 0.8374724984169006, "cells": [{"id": 33, "text": "1", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "1"}], "body": [{"label": "section_header", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9581764936447144, "cells": [{"id": 0, "text": "Java Code Example", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Java Code Example"}, {"label": "text", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "text", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.4806500000001, "b": 290.58365, "coord_origin": "TOPLEFT"}, "confidence": 0.9872456789016724, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.47687, "b": 159.07665999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801, "t": 161.06908999999996, "r": 477.47781000000003, "b": 171.03168000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801, "t": 173.02405, "r": 477.46985, "b": 182.98663, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801, "t": 184.97906, "r": 477.47186, "b": 194.94164999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801, "t": 196.93408, "r": 477.46993999999995, "b": 206.89666999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801, "t": 208.88909999999998, "r": 477.4806500000001, "b": 218.85168, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801, "t": 220.84509000000003, "r": 355.20087, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.60107, "t": 220.84509000000003, "r": 477.47495000000004, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 232.80005000000006, "r": 477.47083, "b": 242.76262999999994, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 244.75507000000005, "r": 477.47092, "b": 254.71765000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 256.71007999999995, "r": 477.46588, "b": 266.67267000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 268.66510000000005, "r": 477.47586, "b": 278.62769000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 280.62103, "r": 351.47672, "b": 290.58365, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "caption", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}, "confidence": 0.5425266027450562, "cells": [{"id": 14, "text": "Listing 1: Simple Java Program", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Listing 1: Simple Java Program"}, {"label": "code", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "code", "bbox": {"l": 134.239, "t": 317.79947000000004, "r": 337.59286, "b": 348.06418, "coord_origin": "TOPLEFT"}, "confidence": 0.6383119821548462, "cells": [{"id": 15, "text": "public static void", "bbox": {"l": 134.575, "t": 317.79947000000004, "r": 235.44695, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "print() {", "bbox": {"l": 241.8759, "t": 317.79947000000004, "r": 292.24908, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "System.out.println(", "bbox": {"l": 157.17101, "t": 328.75745, "r": 264.02368, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "\"Java Code\"", "bbox": {"l": 264.15811, "t": 328.75745, "r": 325.35376, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ");", "bbox": {"l": 326.2952, "t": 328.75745, "r": 337.59286, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "}", "bbox": {"l": 134.239, "t": 339.71646, "r": 138.94637, "b": 348.06418, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "public static void print() { System.out.println( \"Java Code\" ); }"}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 133.76801, "t": 359.72406, "r": 477.47589, "b": 501.19366, "coord_origin": "TOPLEFT"}, "confidence": 0.9869542717933655, "cells": [{"id": 21, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201, "t": 359.72406, "r": 477.46985, "b": 369.68667999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801, "t": 371.67905, "r": 477.4758, "b": 381.64166000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801, "t": 383.63403, "r": 477.4758, "b": 393.59665, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801, "t": 395.58905, "r": 477.47284, "b": 405.55167, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801, "t": 407.54404, "r": 477.47589, "b": 417.50665, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801, "t": 419.50003000000004, "r": 477.47177000000005, "b": 429.46265, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801, "t": 431.45505, "r": 477.47387999999995, "b": 441.41766000000007, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 443.41003, "r": 477.47083, "b": 453.37265, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 455.36505, "r": 477.47092, "b": 465.32767, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 467.32004, "r": 477.46585, "b": 477.28265, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 479.27603, "r": 477.47586, "b": 489.23865, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 491.23105, "r": 351.47672, "b": 501.19366, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}], "headers": [{"label": "page_footer", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "page_footer", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}, "confidence": 0.8374724984169006, "cells": [{"id": 33, "text": "1", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "1"}]}}, {"page_no": 1, "size": {"width": 595.2760009765625, "height": 841.8900146484375}, "cells": [{"id": 0, "text": "Formula", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.47687078331063, "b": 159.0766608783307, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801021944917, "t": 161.06909088933185, "r": 477.4778107833122, "b": 171.03167094433945, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801021944917, "t": 173.0241009553406, "r": 477.46985078329914, "b": 182.9866910103483, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801021944917, "t": 184.97906102134914, "r": 477.4718607833024, "b": 194.94165107635683, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801021944917, "t": 196.93511108736357, "r": 477.4699407832993, "b": 206.89770114237137, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801021944917, "t": 208.890071153372, "r": 477.4806507833169, "b": 218.8526612083799, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801021944917, "t": 220.84509121938083, "r": 355.20087058271434, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.6010705948545, "t": 220.84509121938083, "r": 477.4749507833075, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 232.8001112853898, "r": 477.4708307833007, "b": 242.76269134039728, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 244.75506135139813, "r": 477.4709207833008, "b": 254.71765140640582, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 256.71008141740685, "r": 477.4658807832926, "b": 266.6726614724146, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 268.6660714834211, "r": 477.47586078330903, "b": 278.6286615384289, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 280.62109154942993, "r": 351.4767205766048, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 292.5761116154388, "r": 477.4710707833011, "b": 302.5386916704465, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 304.5310616814471, "r": 477.47293078330415, "b": 314.4936517364549, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 316.48608174745607, "r": 477.47482078330734, "b": 326.4486618024637, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 328.4411018134648, "r": 477.472810783304, "b": 338.40368186847246, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "sed diam nonummy nibh euismod tincidunt.", "bbox": {"l": 133.76801021944917, "t": 340.3970618794788, "r": 326.20752053515014, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "a", "bbox": {"l": 280.5539904602546, "t": 364.3070620114962, "r": 285.8142404688841, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "2", "bbox": {"l": 285.8200104688936, "t": 362.4346620011579, "r": 289.78809047540335, "b": 369.40844203966316, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "+ 8 = 12", "bbox": {"l": 292.50400047985886, "t": 364.3070620114962, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201024396512, "t": 382.24005211051195, "r": 477.4698807832991, "b": 392.2026621655199, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801021944917, "t": 394.19506217652076, "r": 477.47580078330884, "b": 404.15768223152867, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801021944917, "t": 406.15005224252945, "r": 477.47580078330884, "b": 416.1126722975373, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801021944917, "t": 418.10507230853824, "r": 477.47284078330404, "b": 428.06768236354606, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801021944917, "t": 430.0600523745468, "r": 477.47589078330907, "b": 440.0226724295547, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801021944917, "t": 442.01605244056105, "r": 477.4717707833023, "b": 451.97866249556887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801021944917, "t": 453.9710625065698, "r": 477.47388078330573, "b": 463.93368256157777, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 465.9260525725785, "r": 477.4708307833007, "b": 475.88867262758635, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 477.8810726385873, "r": 477.4709207833008, "b": 487.84368269359516, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 489.8360527045959, "r": 477.4658807832926, "b": 499.7986727596038, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 501.7910427706045, "r": 477.47586078330903, "b": 511.7536628256125, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 513.7470728366188, "r": 351.4767205766048, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 525.7020529026275, "r": 477.4710707833011, "b": 535.6646729576354, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 537.6570729686364, "r": 477.47293078330415, "b": 547.6196930236442, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 549.612063034645, "r": 477.47482078330734, "b": 559.5746730896528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 561.5670431006536, "r": 477.472810783304, "b": 571.5296631556615, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 573.5220631666624, "r": 477.47479078330724, "b": 583.4846832216704, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 585.4780532326765, "r": 173.0565202839028, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 597.4330632986853, "r": 477.4710707833011, "b": 607.3956633536932, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 609.3880633646941, "r": 477.47293078330415, "b": 619.3506634197018, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 621.3430634307027, "r": 477.47482078330734, "b": 631.3056634857105, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 633.2980634967114, "r": 477.472810783304, "b": 643.2606635517193, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 645.2540535627256, "r": 477.47479078330724, "b": 655.2166536177334, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 657.2090636287344, "r": 173.0565202839028, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "1", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 5, "label": "section_header", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}, "confidence": 0.95060133934021, "cells": [{"id": 0, "text": "Formula", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 1, "label": "text", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.4806507833169, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}, "confidence": 0.9878177046775818, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.47687078331063, "b": 159.0766608783307, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801021944917, "t": 161.06909088933185, "r": 477.4778107833122, "b": 171.03167094433945, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801021944917, "t": 173.0241009553406, "r": 477.46985078329914, "b": 182.9866910103483, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801021944917, "t": 184.97906102134914, "r": 477.4718607833024, "b": 194.94165107635683, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801021944917, "t": 196.93511108736357, "r": 477.4699407832993, "b": 206.89770114237137, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801021944917, "t": 208.890071153372, "r": 477.4806507833169, "b": 218.8526612083799, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801021944917, "t": 220.84509121938083, "r": 355.20087058271434, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.6010705948545, "t": 220.84509121938083, "r": 477.4749507833075, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 232.8001112853898, "r": 477.4708307833007, "b": 242.76269134039728, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 244.75506135139813, "r": 477.4709207833008, "b": 254.71765140640582, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 256.71008141740685, "r": 477.4658807832926, "b": 266.6726614724146, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 268.6660714834211, "r": 477.47586078330903, "b": 278.6286615384289, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 280.62109154942993, "r": 351.4767205766048, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 3, "label": "text", "bbox": {"l": 133.76801021944917, "t": 292.5761116154388, "r": 477.47482078330734, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}, "confidence": 0.9855858683586121, "cells": [{"id": 14, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 292.5761116154388, "r": 477.4710707833011, "b": 302.5386916704465, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 304.5310616814471, "r": 477.47293078330415, "b": 314.4936517364549, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 316.48608174745607, "r": 477.47482078330734, "b": 326.4486618024637, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 328.4411018134648, "r": 477.472810783304, "b": 338.40368186847246, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "sed diam nonummy nibh euismod tincidunt.", "bbox": {"l": 133.76801021944917, "t": 340.3970618794788, "r": 326.20752053515014, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 6, "label": "formula", "bbox": {"l": 280.5539904602546, "t": 362.4346620011579, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}, "confidence": 0.8711639046669006, "cells": [{"id": 19, "text": "a", "bbox": {"l": 280.5539904602546, "t": 364.3070620114962, "r": 285.8142404688841, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "2", "bbox": {"l": 285.8200104688936, "t": 362.4346620011579, "r": 289.78809047540335, "b": 369.40844203966316, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "+ 8 = 12", "bbox": {"l": 292.50400047985886, "t": 364.3070620114962, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 0, "label": "text", "bbox": {"l": 133.76801021944917, "t": 382.24005211051195, "r": 477.47589078330907, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}, "confidence": 0.9880034923553467, "cells": [{"id": 22, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201024396512, "t": 382.24005211051195, "r": 477.4698807832991, "b": 392.2026621655199, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801021944917, "t": 394.19506217652076, "r": 477.47580078330884, "b": 404.15768223152867, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801021944917, "t": 406.15005224252945, "r": 477.47580078330884, "b": 416.1126722975373, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801021944917, "t": 418.10507230853824, "r": 477.47284078330404, "b": 428.06768236354606, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801021944917, "t": 430.0600523745468, "r": 477.47589078330907, "b": 440.0226724295547, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801021944917, "t": 442.01605244056105, "r": 477.4717707833023, "b": 451.97866249556887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801021944917, "t": 453.9710625065698, "r": 477.47388078330573, "b": 463.93368256157777, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 465.9260525725785, "r": 477.4708307833007, "b": 475.88867262758635, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 477.8810726385873, "r": 477.4709207833008, "b": 487.84368269359516, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 489.8360527045959, "r": 477.4658807832926, "b": 499.7986727596038, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 501.7910427706045, "r": 477.47586078330903, "b": 511.7536628256125, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 513.7470728366188, "r": 351.4767205766048, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 4, "label": "text", "bbox": {"l": 133.76801021944917, "t": 525.7020529026275, "r": 477.47482078330734, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}, "confidence": 0.9844803214073181, "cells": [{"id": 34, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 525.7020529026275, "r": 477.4710707833011, "b": 535.6646729576354, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 537.6570729686364, "r": 477.47293078330415, "b": 547.6196930236442, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 549.612063034645, "r": 477.47482078330734, "b": 559.5746730896528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 561.5670431006536, "r": 477.472810783304, "b": 571.5296631556615, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 573.5220631666624, "r": 477.47479078330724, "b": 583.4846832216704, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 585.4780532326765, "r": 173.0565202839028, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 2, "label": "text", "bbox": {"l": 133.76801021944917, "t": 597.4330632986853, "r": 477.47482078330734, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}, "confidence": 0.9872003793716431, "cells": [{"id": 40, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 597.4330632986853, "r": 477.4710707833011, "b": 607.3956633536932, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 609.3880633646941, "r": 477.47293078330415, "b": 619.3506634197018, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 621.3430634307027, "r": 477.47482078330734, "b": 631.3056634857105, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 633.2980634967114, "r": 477.472810783304, "b": 643.2606635517193, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 645.2540535627256, "r": 477.47479078330724, "b": 655.2166536177334, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 657.2090636287344, "r": 173.0565202839028, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 7, "label": "page_footer", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}, "confidence": 0.850279688835144, "cells": [{"id": 46, "text": "1", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}}], "children": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "section_header", "id": 5, "page_no": 1, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}, "confidence": 0.95060133934021, "cells": [{"id": 0, "text": "Formula", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Formula"}, {"label": "text", "id": 1, "page_no": 1, "cluster": {"id": 1, "label": "text", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.4806507833169, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}, "confidence": 0.9878177046775818, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.47687078331063, "b": 159.0766608783307, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801021944917, "t": 161.06909088933185, "r": 477.4778107833122, "b": 171.03167094433945, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801021944917, "t": 173.0241009553406, "r": 477.46985078329914, "b": 182.9866910103483, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801021944917, "t": 184.97906102134914, "r": 477.4718607833024, "b": 194.94165107635683, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801021944917, "t": 196.93511108736357, "r": 477.4699407832993, "b": 206.89770114237137, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801021944917, "t": 208.890071153372, "r": 477.4806507833169, "b": 218.8526612083799, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801021944917, "t": 220.84509121938083, "r": 355.20087058271434, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.6010705948545, "t": 220.84509121938083, "r": 477.4749507833075, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 232.8001112853898, "r": 477.4708307833007, "b": 242.76269134039728, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 244.75506135139813, "r": 477.4709207833008, "b": 254.71765140640582, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 256.71008141740685, "r": 477.4658807832926, "b": 266.6726614724146, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 268.6660714834211, "r": 477.47586078330903, "b": 278.6286615384289, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 280.62109154942993, "r": 351.4767205766048, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "text", "id": 3, "page_no": 1, "cluster": {"id": 3, "label": "text", "bbox": {"l": 133.76801021944917, "t": 292.5761116154388, "r": 477.47482078330734, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}, "confidence": 0.9855858683586121, "cells": [{"id": 14, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 292.5761116154388, "r": 477.4710707833011, "b": 302.5386916704465, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 304.5310616814471, "r": 477.47293078330415, "b": 314.4936517364549, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 316.48608174745607, "r": 477.47482078330734, "b": 326.4486618024637, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 328.4411018134648, "r": 477.472810783304, "b": 338.40368186847246, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "sed diam nonummy nibh euismod tincidunt.", "bbox": {"l": 133.76801021944917, "t": 340.3970618794788, "r": 326.20752053515014, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt."}, {"label": "formula", "id": 6, "page_no": 1, "cluster": {"id": 6, "label": "formula", "bbox": {"l": 280.5539904602546, "t": 362.4346620011579, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}, "confidence": 0.8711639046669006, "cells": [{"id": 19, "text": "a", "bbox": {"l": 280.5539904602546, "t": 364.3070620114962, "r": 285.8142404688841, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "2", "bbox": {"l": 285.8200104688936, "t": 362.4346620011579, "r": 289.78809047540335, "b": 369.40844203966316, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "+ 8 = 12", "bbox": {"l": 292.50400047985886, "t": 364.3070620114962, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "a 2 + 8 = 12"}, {"label": "text", "id": 0, "page_no": 1, "cluster": {"id": 0, "label": "text", "bbox": {"l": 133.76801021944917, "t": 382.24005211051195, "r": 477.47589078330907, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}, "confidence": 0.9880034923553467, "cells": [{"id": 22, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201024396512, "t": 382.24005211051195, "r": 477.4698807832991, "b": 392.2026621655199, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801021944917, "t": 394.19506217652076, "r": 477.47580078330884, "b": 404.15768223152867, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801021944917, "t": 406.15005224252945, "r": 477.47580078330884, "b": 416.1126722975373, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801021944917, "t": 418.10507230853824, "r": 477.47284078330404, "b": 428.06768236354606, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801021944917, "t": 430.0600523745468, "r": 477.47589078330907, "b": 440.0226724295547, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801021944917, "t": 442.01605244056105, "r": 477.4717707833023, "b": 451.97866249556887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801021944917, "t": 453.9710625065698, "r": 477.47388078330573, "b": 463.93368256157777, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 465.9260525725785, "r": 477.4708307833007, "b": 475.88867262758635, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 477.8810726385873, "r": 477.4709207833008, "b": 487.84368269359516, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 489.8360527045959, "r": 477.4658807832926, "b": 499.7986727596038, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 501.7910427706045, "r": 477.47586078330903, "b": 511.7536628256125, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 513.7470728366188, "r": 351.4767205766048, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "text", "id": 4, "page_no": 1, "cluster": {"id": 4, "label": "text", "bbox": {"l": 133.76801021944917, "t": 525.7020529026275, "r": 477.47482078330734, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}, "confidence": 0.9844803214073181, "cells": [{"id": 34, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 525.7020529026275, "r": 477.4710707833011, "b": 535.6646729576354, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 537.6570729686364, "r": 477.47293078330415, "b": 547.6196930236442, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 549.612063034645, "r": 477.47482078330734, "b": 559.5746730896528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 561.5670431006536, "r": 477.472810783304, "b": 571.5296631556615, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 573.5220631666624, "r": 477.47479078330724, "b": 583.4846832216704, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 585.4780532326765, "r": 173.0565202839028, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."}, {"label": "text", "id": 2, "page_no": 1, "cluster": {"id": 2, "label": "text", "bbox": {"l": 133.76801021944917, "t": 597.4330632986853, "r": 477.47482078330734, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}, "confidence": 0.9872003793716431, "cells": [{"id": 40, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 597.4330632986853, "r": 477.4710707833011, "b": 607.3956633536932, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 609.3880633646941, "r": 477.47293078330415, "b": 619.3506634197018, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 621.3430634307027, "r": 477.47482078330734, "b": 631.3056634857105, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 633.2980634967114, "r": 477.472810783304, "b": 643.2606635517193, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 645.2540535627256, "r": 477.47479078330724, "b": 655.2166536177334, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 657.2090636287344, "r": 173.0565202839028, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."}, {"label": "page_footer", "id": 7, "page_no": 1, "cluster": {"id": 7, "label": "page_footer", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}, "confidence": 0.850279688835144, "cells": [{"id": 46, "text": "1", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "1"}], "body": [{"label": "section_header", "id": 5, "page_no": 1, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}, "confidence": 0.95060133934021, "cells": [{"id": 0, "text": "Formula", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Formula"}, {"label": "text", "id": 1, "page_no": 1, "cluster": {"id": 1, "label": "text", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.4806507833169, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}, "confidence": 0.9878177046775818, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.47687078331063, "b": 159.0766608783307, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801021944917, "t": 161.06909088933185, "r": 477.4778107833122, "b": 171.03167094433945, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801021944917, "t": 173.0241009553406, "r": 477.46985078329914, "b": 182.9866910103483, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801021944917, "t": 184.97906102134914, "r": 477.4718607833024, "b": 194.94165107635683, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801021944917, "t": 196.93511108736357, "r": 477.4699407832993, "b": 206.89770114237137, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801021944917, "t": 208.890071153372, "r": 477.4806507833169, "b": 218.8526612083799, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801021944917, "t": 220.84509121938083, "r": 355.20087058271434, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.6010705948545, "t": 220.84509121938083, "r": 477.4749507833075, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 232.8001112853898, "r": 477.4708307833007, "b": 242.76269134039728, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 244.75506135139813, "r": 477.4709207833008, "b": 254.71765140640582, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 256.71008141740685, "r": 477.4658807832926, "b": 266.6726614724146, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 268.6660714834211, "r": 477.47586078330903, "b": 278.6286615384289, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 280.62109154942993, "r": 351.4767205766048, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "text", "id": 3, "page_no": 1, "cluster": {"id": 3, "label": "text", "bbox": {"l": 133.76801021944917, "t": 292.5761116154388, "r": 477.47482078330734, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}, "confidence": 0.9855858683586121, "cells": [{"id": 14, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 292.5761116154388, "r": 477.4710707833011, "b": 302.5386916704465, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 304.5310616814471, "r": 477.47293078330415, "b": 314.4936517364549, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 316.48608174745607, "r": 477.47482078330734, "b": 326.4486618024637, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 328.4411018134648, "r": 477.472810783304, "b": 338.40368186847246, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "sed diam nonummy nibh euismod tincidunt.", "bbox": {"l": 133.76801021944917, "t": 340.3970618794788, "r": 326.20752053515014, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt."}, {"label": "formula", "id": 6, "page_no": 1, "cluster": {"id": 6, "label": "formula", "bbox": {"l": 280.5539904602546, "t": 362.4346620011579, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}, "confidence": 0.8711639046669006, "cells": [{"id": 19, "text": "a", "bbox": {"l": 280.5539904602546, "t": 364.3070620114962, "r": 285.8142404688841, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "2", "bbox": {"l": 285.8200104688936, "t": 362.4346620011579, "r": 289.78809047540335, "b": 369.40844203966316, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "+ 8 = 12", "bbox": {"l": 292.50400047985886, "t": 364.3070620114962, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "a 2 + 8 = 12"}, {"label": "text", "id": 0, "page_no": 1, "cluster": {"id": 0, "label": "text", "bbox": {"l": 133.76801021944917, "t": 382.24005211051195, "r": 477.47589078330907, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}, "confidence": 0.9880034923553467, "cells": [{"id": 22, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201024396512, "t": 382.24005211051195, "r": 477.4698807832991, "b": 392.2026621655199, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801021944917, "t": 394.19506217652076, "r": 477.47580078330884, "b": 404.15768223152867, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801021944917, "t": 406.15005224252945, "r": 477.47580078330884, "b": 416.1126722975373, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801021944917, "t": 418.10507230853824, "r": 477.47284078330404, "b": 428.06768236354606, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801021944917, "t": 430.0600523745468, "r": 477.47589078330907, "b": 440.0226724295547, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801021944917, "t": 442.01605244056105, "r": 477.4717707833023, "b": 451.97866249556887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801021944917, "t": 453.9710625065698, "r": 477.47388078330573, "b": 463.93368256157777, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 465.9260525725785, "r": 477.4708307833007, "b": 475.88867262758635, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 477.8810726385873, "r": 477.4709207833008, "b": 487.84368269359516, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 489.8360527045959, "r": 477.4658807832926, "b": 499.7986727596038, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 501.7910427706045, "r": 477.47586078330903, "b": 511.7536628256125, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 513.7470728366188, "r": 351.4767205766048, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "text", "id": 4, "page_no": 1, "cluster": {"id": 4, "label": "text", "bbox": {"l": 133.76801021944917, "t": 525.7020529026275, "r": 477.47482078330734, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}, "confidence": 0.9844803214073181, "cells": [{"id": 34, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 525.7020529026275, "r": 477.4710707833011, "b": 535.6646729576354, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 537.6570729686364, "r": 477.47293078330415, "b": 547.6196930236442, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 549.612063034645, "r": 477.47482078330734, "b": 559.5746730896528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 561.5670431006536, "r": 477.472810783304, "b": 571.5296631556615, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 573.5220631666624, "r": 477.47479078330724, "b": 583.4846832216704, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 585.4780532326765, "r": 173.0565202839028, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."}, {"label": "text", "id": 2, "page_no": 1, "cluster": {"id": 2, "label": "text", "bbox": {"l": 133.76801021944917, "t": 597.4330632986853, "r": 477.47482078330734, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}, "confidence": 0.9872003793716431, "cells": [{"id": 40, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 597.4330632986853, "r": 477.4710707833011, "b": 607.3956633536932, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 609.3880633646941, "r": 477.47293078330415, "b": 619.3506634197018, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 621.3430634307027, "r": 477.47482078330734, "b": 631.3056634857105, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 633.2980634967114, "r": 477.472810783304, "b": 643.2606635517193, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 645.2540535627256, "r": 477.47479078330724, "b": 655.2166536177334, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 657.2090636287344, "r": 173.0565202839028, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."}], "headers": [{"label": "page_footer", "id": 7, "page_no": 1, "cluster": {"id": 7, "label": "page_footer", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}, "confidence": 0.850279688835144, "cells": [{"id": 46, "text": "1", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "1"}]}}] \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/code_and_formula.doctags.txt b/tests/data/groundtruth/docling_v2/code_and_formula.doctags.txt new file mode 100644 index 00000000..ad417540 --- /dev/null +++ b/tests/data/groundtruth/docling_v2/code_and_formula.doctags.txt @@ -0,0 +1,14 @@ + +Java Code Example +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +Listing 1: Simple Java Program +public static void print() { System.out.println( "Java Code" ); } +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +Formula +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt. +a 2 + 8 = 12 +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/code_and_formula.json b/tests/data/groundtruth/docling_v2/code_and_formula.json new file mode 100644 index 00000000..adcc14d1 --- /dev/null +++ b/tests/data/groundtruth/docling_v2/code_and_formula.json @@ -0,0 +1 @@ +{"schema_name": "DoclingDocument", "version": "1.0.0", "name": "code_and_formula", "origin": {"mimetype": "application/pdf", "binary_hash": 2394749058180317456, "filename": "code_and_formula.pdf", "uri": null}, "furniture": {"self_ref": "#/furniture", "parent": null, "children": [], "name": "_root_", "label": "unspecified"}, "body": {"self_ref": "#/body", "parent": null, "children": [{"cref": "#/texts/0"}, {"cref": "#/texts/1"}, {"cref": "#/texts/2"}, {"cref": "#/texts/3"}, {"cref": "#/texts/4"}, {"cref": "#/texts/5"}, {"cref": "#/texts/6"}, {"cref": "#/texts/7"}, {"cref": "#/texts/8"}, {"cref": "#/texts/9"}, {"cref": "#/texts/10"}, {"cref": "#/texts/11"}, {"cref": "#/texts/12"}, {"cref": "#/texts/13"}], "name": "_root_", "label": "unspecified"}, "groups": [], "texts": [{"self_ref": "#/texts/0", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 1, "bbox": {"l": 133.76800537109375, "t": 667.99462890625, "r": 273.4540100097656, "b": 653.6340942382812, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 17]}], "orig": "Java Code Example", "text": "Java Code Example", "level": 1}, {"self_ref": "#/texts/1", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 133.76800537109375, "t": 642.8859252929688, "r": 477.48065185546875, "b": 501.4163513183594, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 887]}], "orig": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"self_ref": "#/texts/2", "parent": {"cref": "#/body"}, "children": [], "label": "paragraph", "prov": [{"page_no": 1, "bbox": {"l": 236.17599487304688, "t": 490.45794677734375, "r": 375.069580078125, "b": 480.4953308105469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 30]}], "orig": "Listing 1: Simple Java Program", "text": "Listing 1: Simple Java Program"}, {"self_ref": "#/texts/3", "parent": {"cref": "#/body"}, "children": [], "label": "code", "prov": [{"page_no": 1, "bbox": {"l": 134.23899841308594, "t": 474.2005310058594, "r": 337.5928649902344, "b": 443.9358215332031, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 65]}], "orig": "public static void print() { System.out.println( \"Java Code\" ); }", "text": "public static void print() { System.out.println( \"Java Code\" ); }", "code_language": "unknown"}, {"self_ref": "#/texts/4", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 1, "bbox": {"l": 133.76800537109375, "t": 432.27593994140625, "r": 477.47589111328125, "b": 290.80633544921875, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 887]}], "orig": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"self_ref": "#/texts/5", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 1, "bbox": {"l": 303.13299560546875, "t": 96.83694458007812, "r": 308.1142883300781, "b": 86.87435150146484, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "1", "text": "1"}, {"self_ref": "#/texts/6", "parent": {"cref": "#/body"}, "children": [], "label": "section_header", "prov": [{"page_no": 2, "bbox": {"l": 133.76800537109375, "t": 717.8846435546875, "r": 191.51429748535156, "b": 703.5241088867188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 7]}], "orig": "Formula", "text": "Formula", "level": 1}, {"self_ref": "#/texts/7", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 2, "bbox": {"l": 133.76800537109375, "t": 692.7759399414062, "r": 477.48065185546875, "b": 551.3063354492188, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 887]}], "orig": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"self_ref": "#/texts/8", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 2, "bbox": {"l": 133.76800537109375, "t": 549.3139038085938, "r": 477.4748229980469, "b": 491.53033447265625, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 369]}], "orig": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt.", "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt."}, {"self_ref": "#/texts/9", "parent": {"cref": "#/body"}, "children": [], "label": "formula", "prov": [{"page_no": 2, "bbox": {"l": 280.5539855957031, "t": 479.4553527832031, "r": 330.69659423828125, "b": 467.6203308105469, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 12]}], "orig": "a 2 + 8 = 12", "text": "a 2 + 8 = 12"}, {"self_ref": "#/texts/10", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 2, "bbox": {"l": 133.76800537109375, "t": 459.64996337890625, "r": 477.47589111328125, "b": 318.1803283691406, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 887]}], "orig": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"self_ref": "#/texts/11", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 2, "bbox": {"l": 133.76800537109375, "t": 316.1879577636719, "r": 477.4748229980469, "b": 246.44935607910156, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 415]}], "orig": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.", "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."}, {"self_ref": "#/texts/12", "parent": {"cref": "#/body"}, "children": [], "label": "text", "prov": [{"page_no": 2, "bbox": {"l": 133.76800537109375, "t": 244.4569549560547, "r": 477.4748229980469, "b": 174.71835327148438, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 415]}], "orig": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.", "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."}, {"self_ref": "#/texts/13", "parent": {"cref": "#/body"}, "children": [], "label": "page_footer", "prov": [{"page_no": 2, "bbox": {"l": 303.13299560546875, "t": 146.7259521484375, "r": 308.1142883300781, "b": 136.7633514404297, "coord_origin": "BOTTOMLEFT"}, "charspan": [0, 1]}], "orig": "1", "text": "1"}], "pictures": [], "tables": [], "key_value_items": [], "pages": {"1": {"size": {"width": 612.0, "height": 792.0}, "image": null, "page_no": 1}, "2": {"size": {"width": 595.2760009765625, "height": 841.8900146484375}, "image": null, "page_no": 2}}} \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/code_and_formula.md b/tests/data/groundtruth/docling_v2/code_and_formula.md new file mode 100644 index 00000000..2e2636a3 --- /dev/null +++ b/tests/data/groundtruth/docling_v2/code_and_formula.md @@ -0,0 +1,25 @@ +## Java Code Example + +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Listing 1: Simple Java Program + +``` +public static void print() { System.out.println( "Java Code" ); } +``` + +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +## Formula + +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt. + +a 2 + 8 = 12 + +Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. + +Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. \ No newline at end of file diff --git a/tests/data/groundtruth/docling_v2/code_and_formula.pages.json b/tests/data/groundtruth/docling_v2/code_and_formula.pages.json new file mode 100644 index 00000000..27682fdd --- /dev/null +++ b/tests/data/groundtruth/docling_v2/code_and_formula.pages.json @@ -0,0 +1 @@ +[{"page_no": 0, "size": {"width": 612.0, "height": 792.0}, "cells": [{"id": 0, "text": "Java Code Example", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.47687, "b": 159.07665999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801, "t": 161.06908999999996, "r": 477.47781000000003, "b": 171.03168000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801, "t": 173.02405, "r": 477.46985, "b": 182.98663, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801, "t": 184.97906, "r": 477.47186, "b": 194.94164999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801, "t": 196.93408, "r": 477.46993999999995, "b": 206.89666999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801, "t": 208.88909999999998, "r": 477.4806500000001, "b": 218.85168, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801, "t": 220.84509000000003, "r": 355.20087, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.60107, "t": 220.84509000000003, "r": 477.47495000000004, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 232.80005000000006, "r": 477.47083, "b": 242.76262999999994, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 244.75507000000005, "r": 477.47092, "b": 254.71765000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 256.71007999999995, "r": 477.46588, "b": 266.67267000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 268.66510000000005, "r": 477.47586, "b": 278.62769000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 280.62103, "r": 351.47672, "b": 290.58365, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Listing 1: Simple Java Program", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "public static void", "bbox": {"l": 134.575, "t": 317.79947000000004, "r": 235.44695, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "print() {", "bbox": {"l": 241.8759, "t": 317.79947000000004, "r": 292.24908, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "System.out.println(", "bbox": {"l": 157.17101, "t": 328.75745, "r": 264.02368, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "\"Java Code\"", "bbox": {"l": 264.15811, "t": 328.75745, "r": 325.35376, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ");", "bbox": {"l": 326.2952, "t": 328.75745, "r": 337.59286, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "}", "bbox": {"l": 134.239, "t": 339.71646, "r": 138.94637, "b": 348.06418, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201, "t": 359.72406, "r": 477.46985, "b": 369.68667999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801, "t": 371.67905, "r": 477.4758, "b": 381.64166000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801, "t": 383.63403, "r": 477.4758, "b": 393.59665, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801, "t": 395.58905, "r": 477.47284, "b": 405.55167, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801, "t": 407.54404, "r": 477.47589, "b": 417.50665, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801, "t": 419.50003000000004, "r": 477.47177000000005, "b": 429.46265, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801, "t": 431.45505, "r": 477.47387999999995, "b": 441.41766000000007, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 443.41003, "r": 477.47083, "b": 453.37265, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 455.36505, "r": 477.47092, "b": 465.32767, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 467.32004, "r": 477.46585, "b": 477.28265, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 479.27603, "r": 477.47586, "b": 489.23865, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 491.23105, "r": 351.47672, "b": 501.19366, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "1", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 2, "label": "section_header", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9581764936447144, "cells": [{"id": 0, "text": "Java Code Example", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 0, "label": "text", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.4806500000001, "b": 290.58365, "coord_origin": "TOPLEFT"}, "confidence": 0.9872456789016724, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.47687, "b": 159.07665999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801, "t": 161.06908999999996, "r": 477.47781000000003, "b": 171.03168000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801, "t": 173.02405, "r": 477.46985, "b": 182.98663, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801, "t": 184.97906, "r": 477.47186, "b": 194.94164999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801, "t": 196.93408, "r": 477.46993999999995, "b": 206.89666999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801, "t": 208.88909999999998, "r": 477.4806500000001, "b": 218.85168, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801, "t": 220.84509000000003, "r": 355.20087, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.60107, "t": 220.84509000000003, "r": 477.47495000000004, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 232.80005000000006, "r": 477.47083, "b": 242.76262999999994, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 244.75507000000005, "r": 477.47092, "b": 254.71765000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 256.71007999999995, "r": 477.46588, "b": 266.67267000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 268.66510000000005, "r": 477.47586, "b": 278.62769000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 280.62103, "r": 351.47672, "b": 290.58365, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 5, "label": "caption", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}, "confidence": 0.5425266027450562, "cells": [{"id": 14, "text": "Listing 1: Simple Java Program", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 4, "label": "code", "bbox": {"l": 134.239, "t": 317.79947000000004, "r": 337.59286, "b": 348.06418, "coord_origin": "TOPLEFT"}, "confidence": 0.6383119821548462, "cells": [{"id": 15, "text": "public static void", "bbox": {"l": 134.575, "t": 317.79947000000004, "r": 235.44695, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "print() {", "bbox": {"l": 241.8759, "t": 317.79947000000004, "r": 292.24908, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "System.out.println(", "bbox": {"l": 157.17101, "t": 328.75745, "r": 264.02368, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "\"Java Code\"", "bbox": {"l": 264.15811, "t": 328.75745, "r": 325.35376, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ");", "bbox": {"l": 326.2952, "t": 328.75745, "r": 337.59286, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "}", "bbox": {"l": 134.239, "t": 339.71646, "r": 138.94637, "b": 348.06418, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 1, "label": "text", "bbox": {"l": 133.76801, "t": 359.72406, "r": 477.47589, "b": 501.19366, "coord_origin": "TOPLEFT"}, "confidence": 0.9869542717933655, "cells": [{"id": 21, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201, "t": 359.72406, "r": 477.46985, "b": 369.68667999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801, "t": 371.67905, "r": 477.4758, "b": 381.64166000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801, "t": 383.63403, "r": 477.4758, "b": 393.59665, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801, "t": 395.58905, "r": 477.47284, "b": 405.55167, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801, "t": 407.54404, "r": 477.47589, "b": 417.50665, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801, "t": 419.50003000000004, "r": 477.47177000000005, "b": 429.46265, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801, "t": 431.45505, "r": 477.47387999999995, "b": 441.41766000000007, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 443.41003, "r": 477.47083, "b": 453.37265, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 455.36505, "r": 477.47092, "b": 465.32767, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 467.32004, "r": 477.46585, "b": 477.28265, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 479.27603, "r": 477.47586, "b": 489.23865, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 491.23105, "r": 351.47672, "b": 501.19366, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 3, "label": "page_footer", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}, "confidence": 0.8374724984169006, "cells": [{"id": 33, "text": "1", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}}], "children": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "section_header", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9581764936447144, "cells": [{"id": 0, "text": "Java Code Example", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Java Code Example"}, {"label": "text", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "text", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.4806500000001, "b": 290.58365, "coord_origin": "TOPLEFT"}, "confidence": 0.9872456789016724, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.47687, "b": 159.07665999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801, "t": 161.06908999999996, "r": 477.47781000000003, "b": 171.03168000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801, "t": 173.02405, "r": 477.46985, "b": 182.98663, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801, "t": 184.97906, "r": 477.47186, "b": 194.94164999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801, "t": 196.93408, "r": 477.46993999999995, "b": 206.89666999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801, "t": 208.88909999999998, "r": 477.4806500000001, "b": 218.85168, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801, "t": 220.84509000000003, "r": 355.20087, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.60107, "t": 220.84509000000003, "r": 477.47495000000004, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 232.80005000000006, "r": 477.47083, "b": 242.76262999999994, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 244.75507000000005, "r": 477.47092, "b": 254.71765000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 256.71007999999995, "r": 477.46588, "b": 266.67267000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 268.66510000000005, "r": 477.47586, "b": 278.62769000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 280.62103, "r": 351.47672, "b": 290.58365, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "caption", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}, "confidence": 0.5425266027450562, "cells": [{"id": 14, "text": "Listing 1: Simple Java Program", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Listing 1: Simple Java Program"}, {"label": "code", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "code", "bbox": {"l": 134.239, "t": 317.79947000000004, "r": 337.59286, "b": 348.06418, "coord_origin": "TOPLEFT"}, "confidence": 0.6383119821548462, "cells": [{"id": 15, "text": "public static void", "bbox": {"l": 134.575, "t": 317.79947000000004, "r": 235.44695, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "print() {", "bbox": {"l": 241.8759, "t": 317.79947000000004, "r": 292.24908, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "System.out.println(", "bbox": {"l": 157.17101, "t": 328.75745, "r": 264.02368, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "\"Java Code\"", "bbox": {"l": 264.15811, "t": 328.75745, "r": 325.35376, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ");", "bbox": {"l": 326.2952, "t": 328.75745, "r": 337.59286, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "}", "bbox": {"l": 134.239, "t": 339.71646, "r": 138.94637, "b": 348.06418, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "public static void print() { System.out.println( \"Java Code\" ); }"}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 133.76801, "t": 359.72406, "r": 477.47589, "b": 501.19366, "coord_origin": "TOPLEFT"}, "confidence": 0.9869542717933655, "cells": [{"id": 21, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201, "t": 359.72406, "r": 477.46985, "b": 369.68667999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801, "t": 371.67905, "r": 477.4758, "b": 381.64166000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801, "t": 383.63403, "r": 477.4758, "b": 393.59665, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801, "t": 395.58905, "r": 477.47284, "b": 405.55167, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801, "t": 407.54404, "r": 477.47589, "b": 417.50665, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801, "t": 419.50003000000004, "r": 477.47177000000005, "b": 429.46265, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801, "t": 431.45505, "r": 477.47387999999995, "b": 441.41766000000007, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 443.41003, "r": 477.47083, "b": 453.37265, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 455.36505, "r": 477.47092, "b": 465.32767, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 467.32004, "r": 477.46585, "b": 477.28265, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 479.27603, "r": 477.47586, "b": 489.23865, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 491.23105, "r": 351.47672, "b": 501.19366, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "page_footer", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "page_footer", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}, "confidence": 0.8374724984169006, "cells": [{"id": 33, "text": "1", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "1"}], "body": [{"label": "section_header", "id": 2, "page_no": 0, "cluster": {"id": 2, "label": "section_header", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}, "confidence": 0.9581764936447144, "cells": [{"id": 0, "text": "Java Code Example", "bbox": {"l": 133.76801, "t": 124.00536999999997, "r": 273.45401, "b": 138.36590999999999, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Java Code Example"}, {"label": "text", "id": 0, "page_no": 0, "cluster": {"id": 0, "label": "text", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.4806500000001, "b": 290.58365, "coord_origin": "TOPLEFT"}, "confidence": 0.9872456789016724, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801, "t": 149.11406999999997, "r": 477.47687, "b": 159.07665999999995, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801, "t": 161.06908999999996, "r": 477.47781000000003, "b": 171.03168000000005, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801, "t": 173.02405, "r": 477.46985, "b": 182.98663, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801, "t": 184.97906, "r": 477.47186, "b": 194.94164999999998, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801, "t": 196.93408, "r": 477.46993999999995, "b": 206.89666999999997, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801, "t": 208.88909999999998, "r": 477.4806500000001, "b": 218.85168, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801, "t": 220.84509000000003, "r": 355.20087, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.60107, "t": 220.84509000000003, "r": 477.47495000000004, "b": 230.80768, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 232.80005000000006, "r": 477.47083, "b": 242.76262999999994, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 244.75507000000005, "r": 477.47092, "b": 254.71765000000005, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 256.71007999999995, "r": 477.46588, "b": 266.67267000000004, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 268.66510000000005, "r": 477.47586, "b": 278.62769000000003, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 280.62103, "r": 351.47672, "b": 290.58365, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "caption", "id": 5, "page_no": 0, "cluster": {"id": 5, "label": "caption", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}, "confidence": 0.5425266027450562, "cells": [{"id": 14, "text": "Listing 1: Simple Java Program", "bbox": {"l": 236.17598999999998, "t": 301.54204999999996, "r": 375.06958, "b": 311.50467, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Listing 1: Simple Java Program"}, {"label": "code", "id": 4, "page_no": 0, "cluster": {"id": 4, "label": "code", "bbox": {"l": 134.239, "t": 317.79947000000004, "r": 337.59286, "b": 348.06418, "coord_origin": "TOPLEFT"}, "confidence": 0.6383119821548462, "cells": [{"id": 15, "text": "public static void", "bbox": {"l": 134.575, "t": 317.79947000000004, "r": 235.44695, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "print() {", "bbox": {"l": 241.8759, "t": 317.79947000000004, "r": 292.24908, "b": 326.14719, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "System.out.println(", "bbox": {"l": 157.17101, "t": 328.75745, "r": 264.02368, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "\"Java Code\"", "bbox": {"l": 264.15811, "t": 328.75745, "r": 325.35376, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": ");", "bbox": {"l": 326.2952, "t": 328.75745, "r": 337.59286, "b": 337.10516000000007, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "}", "bbox": {"l": 134.239, "t": 339.71646, "r": 138.94637, "b": 348.06418, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "public static void print() { System.out.println( \"Java Code\" ); }"}, {"label": "text", "id": 1, "page_no": 0, "cluster": {"id": 1, "label": "text", "bbox": {"l": 133.76801, "t": 359.72406, "r": 477.47589, "b": 501.19366, "coord_origin": "TOPLEFT"}, "confidence": 0.9869542717933655, "cells": [{"id": 21, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201, "t": 359.72406, "r": 477.46985, "b": 369.68667999999997, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801, "t": 371.67905, "r": 477.4758, "b": 381.64166000000006, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801, "t": 383.63403, "r": 477.4758, "b": 393.59665, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801, "t": 395.58905, "r": 477.47284, "b": 405.55167, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801, "t": 407.54404, "r": 477.47589, "b": 417.50665, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801, "t": 419.50003000000004, "r": 477.47177000000005, "b": 429.46265, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801, "t": 431.45505, "r": 477.47387999999995, "b": 441.41766000000007, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801, "t": 443.41003, "r": 477.47083, "b": 453.37265, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801, "t": 455.36505, "r": 477.47092, "b": 465.32767, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801, "t": 467.32004, "r": 477.46585, "b": 477.28265, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801, "t": 479.27603, "r": 477.47586, "b": 489.23865, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801, "t": 491.23105, "r": 351.47672, "b": 501.19366, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}], "headers": [{"label": "page_footer", "id": 3, "page_no": 0, "cluster": {"id": 3, "label": "page_footer", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}, "confidence": 0.8374724984169006, "cells": [{"id": 33, "text": "1", "bbox": {"l": 303.133, "t": 695.163055, "r": 308.11429, "b": 705.125648, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "1"}]}}, {"page_no": 1, "size": {"width": 595.2760009765625, "height": 841.8900146484375}, "cells": [{"id": 0, "text": "Formula", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}}, {"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.47687078331063, "b": 159.0766608783307, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801021944917, "t": 161.06909088933185, "r": 477.4778107833122, "b": 171.03167094433945, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801021944917, "t": 173.0241009553406, "r": 477.46985078329914, "b": 182.9866910103483, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801021944917, "t": 184.97906102134914, "r": 477.4718607833024, "b": 194.94165107635683, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801021944917, "t": 196.93511108736357, "r": 477.4699407832993, "b": 206.89770114237137, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801021944917, "t": 208.890071153372, "r": 477.4806507833169, "b": 218.8526612083799, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801021944917, "t": 220.84509121938083, "r": 355.20087058271434, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.6010705948545, "t": 220.84509121938083, "r": 477.4749507833075, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 232.8001112853898, "r": 477.4708307833007, "b": 242.76269134039728, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 244.75506135139813, "r": 477.4709207833008, "b": 254.71765140640582, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 256.71008141740685, "r": 477.4658807832926, "b": 266.6726614724146, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 268.6660714834211, "r": 477.47586078330903, "b": 278.6286615384289, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 280.62109154942993, "r": 351.4767205766048, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}}, {"id": 14, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 292.5761116154388, "r": 477.4710707833011, "b": 302.5386916704465, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 304.5310616814471, "r": 477.47293078330415, "b": 314.4936517364549, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 316.48608174745607, "r": 477.47482078330734, "b": 326.4486618024637, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 328.4411018134648, "r": 477.472810783304, "b": 338.40368186847246, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "sed diam nonummy nibh euismod tincidunt.", "bbox": {"l": 133.76801021944917, "t": 340.3970618794788, "r": 326.20752053515014, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}}, {"id": 19, "text": "a", "bbox": {"l": 280.5539904602546, "t": 364.3070620114962, "r": 285.8142404688841, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "2", "bbox": {"l": 285.8200104688936, "t": 362.4346620011579, "r": 289.78809047540335, "b": 369.40844203966316, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "+ 8 = 12", "bbox": {"l": 292.50400047985886, "t": 364.3070620114962, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}, {"id": 22, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201024396512, "t": 382.24005211051195, "r": 477.4698807832991, "b": 392.2026621655199, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801021944917, "t": 394.19506217652076, "r": 477.47580078330884, "b": 404.15768223152867, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801021944917, "t": 406.15005224252945, "r": 477.47580078330884, "b": 416.1126722975373, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801021944917, "t": 418.10507230853824, "r": 477.47284078330404, "b": 428.06768236354606, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801021944917, "t": 430.0600523745468, "r": 477.47589078330907, "b": 440.0226724295547, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801021944917, "t": 442.01605244056105, "r": 477.4717707833023, "b": 451.97866249556887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801021944917, "t": 453.9710625065698, "r": 477.47388078330573, "b": 463.93368256157777, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 465.9260525725785, "r": 477.4708307833007, "b": 475.88867262758635, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 477.8810726385873, "r": 477.4709207833008, "b": 487.84368269359516, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 489.8360527045959, "r": 477.4658807832926, "b": 499.7986727596038, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 501.7910427706045, "r": 477.47586078330903, "b": 511.7536628256125, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 513.7470728366188, "r": 351.4767205766048, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}}, {"id": 34, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 525.7020529026275, "r": 477.4710707833011, "b": 535.6646729576354, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 537.6570729686364, "r": 477.47293078330415, "b": 547.6196930236442, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 549.612063034645, "r": 477.47482078330734, "b": 559.5746730896528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 561.5670431006536, "r": 477.472810783304, "b": 571.5296631556615, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 573.5220631666624, "r": 477.47479078330724, "b": 583.4846832216704, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 585.4780532326765, "r": 173.0565202839028, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}}, {"id": 40, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 597.4330632986853, "r": 477.4710707833011, "b": 607.3956633536932, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 609.3880633646941, "r": 477.47293078330415, "b": 619.3506634197018, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 621.3430634307027, "r": 477.47482078330734, "b": 631.3056634857105, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 633.2980634967114, "r": 477.472810783304, "b": 643.2606635517193, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 645.2540535627256, "r": 477.47479078330724, "b": 655.2166536177334, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 657.2090636287344, "r": 173.0565202839028, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}}, {"id": 46, "text": "1", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}}], "predictions": {"layout": {"clusters": [{"id": 5, "label": "section_header", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}, "confidence": 0.95060133934021, "cells": [{"id": 0, "text": "Formula", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 1, "label": "text", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.4806507833169, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}, "confidence": 0.9878177046775818, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.47687078331063, "b": 159.0766608783307, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801021944917, "t": 161.06909088933185, "r": 477.4778107833122, "b": 171.03167094433945, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801021944917, "t": 173.0241009553406, "r": 477.46985078329914, "b": 182.9866910103483, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801021944917, "t": 184.97906102134914, "r": 477.4718607833024, "b": 194.94165107635683, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801021944917, "t": 196.93511108736357, "r": 477.4699407832993, "b": 206.89770114237137, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801021944917, "t": 208.890071153372, "r": 477.4806507833169, "b": 218.8526612083799, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801021944917, "t": 220.84509121938083, "r": 355.20087058271434, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.6010705948545, "t": 220.84509121938083, "r": 477.4749507833075, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 232.8001112853898, "r": 477.4708307833007, "b": 242.76269134039728, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 244.75506135139813, "r": 477.4709207833008, "b": 254.71765140640582, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 256.71008141740685, "r": 477.4658807832926, "b": 266.6726614724146, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 268.6660714834211, "r": 477.47586078330903, "b": 278.6286615384289, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 280.62109154942993, "r": 351.4767205766048, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 3, "label": "text", "bbox": {"l": 133.76801021944917, "t": 292.5761116154388, "r": 477.47482078330734, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}, "confidence": 0.9855858683586121, "cells": [{"id": 14, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 292.5761116154388, "r": 477.4710707833011, "b": 302.5386916704465, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 304.5310616814471, "r": 477.47293078330415, "b": 314.4936517364549, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 316.48608174745607, "r": 477.47482078330734, "b": 326.4486618024637, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 328.4411018134648, "r": 477.472810783304, "b": 338.40368186847246, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "sed diam nonummy nibh euismod tincidunt.", "bbox": {"l": 133.76801021944917, "t": 340.3970618794788, "r": 326.20752053515014, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 6, "label": "formula", "bbox": {"l": 280.5539904602546, "t": 362.4346620011579, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}, "confidence": 0.8711639046669006, "cells": [{"id": 19, "text": "a", "bbox": {"l": 280.5539904602546, "t": 364.3070620114962, "r": 285.8142404688841, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "2", "bbox": {"l": 285.8200104688936, "t": 362.4346620011579, "r": 289.78809047540335, "b": 369.40844203966316, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "+ 8 = 12", "bbox": {"l": 292.50400047985886, "t": 364.3070620114962, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 0, "label": "text", "bbox": {"l": 133.76801021944917, "t": 382.24005211051195, "r": 477.47589078330907, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}, "confidence": 0.9880034923553467, "cells": [{"id": 22, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201024396512, "t": 382.24005211051195, "r": 477.4698807832991, "b": 392.2026621655199, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801021944917, "t": 394.19506217652076, "r": 477.47580078330884, "b": 404.15768223152867, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801021944917, "t": 406.15005224252945, "r": 477.47580078330884, "b": 416.1126722975373, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801021944917, "t": 418.10507230853824, "r": 477.47284078330404, "b": 428.06768236354606, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801021944917, "t": 430.0600523745468, "r": 477.47589078330907, "b": 440.0226724295547, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801021944917, "t": 442.01605244056105, "r": 477.4717707833023, "b": 451.97866249556887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801021944917, "t": 453.9710625065698, "r": 477.47388078330573, "b": 463.93368256157777, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 465.9260525725785, "r": 477.4708307833007, "b": 475.88867262758635, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 477.8810726385873, "r": 477.4709207833008, "b": 487.84368269359516, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 489.8360527045959, "r": 477.4658807832926, "b": 499.7986727596038, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 501.7910427706045, "r": 477.47586078330903, "b": 511.7536628256125, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 513.7470728366188, "r": 351.4767205766048, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 4, "label": "text", "bbox": {"l": 133.76801021944917, "t": 525.7020529026275, "r": 477.47482078330734, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}, "confidence": 0.9844803214073181, "cells": [{"id": 34, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 525.7020529026275, "r": 477.4710707833011, "b": 535.6646729576354, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 537.6570729686364, "r": 477.47293078330415, "b": 547.6196930236442, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 549.612063034645, "r": 477.47482078330734, "b": 559.5746730896528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 561.5670431006536, "r": 477.472810783304, "b": 571.5296631556615, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 573.5220631666624, "r": 477.47479078330724, "b": 583.4846832216704, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 585.4780532326765, "r": 173.0565202839028, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 2, "label": "text", "bbox": {"l": 133.76801021944917, "t": 597.4330632986853, "r": 477.47482078330734, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}, "confidence": 0.9872003793716431, "cells": [{"id": 40, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 597.4330632986853, "r": 477.4710707833011, "b": 607.3956633536932, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 609.3880633646941, "r": 477.47293078330415, "b": 619.3506634197018, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 621.3430634307027, "r": 477.47482078330734, "b": 631.3056634857105, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 633.2980634967114, "r": 477.472810783304, "b": 643.2606635517193, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 645.2540535627256, "r": 477.47479078330724, "b": 655.2166536177334, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 657.2090636287344, "r": 173.0565202839028, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}}], "children": []}, {"id": 7, "label": "page_footer", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}, "confidence": 0.850279688835144, "cells": [{"id": 46, "text": "1", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}}], "children": []}]}, "tablestructure": {"table_map": {}}, "figures_classification": null, "equations_prediction": null}, "assembled": {"elements": [{"label": "section_header", "id": 5, "page_no": 1, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}, "confidence": 0.95060133934021, "cells": [{"id": 0, "text": "Formula", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Formula"}, {"label": "text", "id": 1, "page_no": 1, "cluster": {"id": 1, "label": "text", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.4806507833169, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}, "confidence": 0.9878177046775818, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.47687078331063, "b": 159.0766608783307, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801021944917, "t": 161.06909088933185, "r": 477.4778107833122, "b": 171.03167094433945, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801021944917, "t": 173.0241009553406, "r": 477.46985078329914, "b": 182.9866910103483, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801021944917, "t": 184.97906102134914, "r": 477.4718607833024, "b": 194.94165107635683, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801021944917, "t": 196.93511108736357, "r": 477.4699407832993, "b": 206.89770114237137, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801021944917, "t": 208.890071153372, "r": 477.4806507833169, "b": 218.8526612083799, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801021944917, "t": 220.84509121938083, "r": 355.20087058271434, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.6010705948545, "t": 220.84509121938083, "r": 477.4749507833075, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 232.8001112853898, "r": 477.4708307833007, "b": 242.76269134039728, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 244.75506135139813, "r": 477.4709207833008, "b": 254.71765140640582, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 256.71008141740685, "r": 477.4658807832926, "b": 266.6726614724146, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 268.6660714834211, "r": 477.47586078330903, "b": 278.6286615384289, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 280.62109154942993, "r": 351.4767205766048, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "text", "id": 3, "page_no": 1, "cluster": {"id": 3, "label": "text", "bbox": {"l": 133.76801021944917, "t": 292.5761116154388, "r": 477.47482078330734, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}, "confidence": 0.9855858683586121, "cells": [{"id": 14, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 292.5761116154388, "r": 477.4710707833011, "b": 302.5386916704465, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 304.5310616814471, "r": 477.47293078330415, "b": 314.4936517364549, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 316.48608174745607, "r": 477.47482078330734, "b": 326.4486618024637, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 328.4411018134648, "r": 477.472810783304, "b": 338.40368186847246, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "sed diam nonummy nibh euismod tincidunt.", "bbox": {"l": 133.76801021944917, "t": 340.3970618794788, "r": 326.20752053515014, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt."}, {"label": "formula", "id": 6, "page_no": 1, "cluster": {"id": 6, "label": "formula", "bbox": {"l": 280.5539904602546, "t": 362.4346620011579, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}, "confidence": 0.8711639046669006, "cells": [{"id": 19, "text": "a", "bbox": {"l": 280.5539904602546, "t": 364.3070620114962, "r": 285.8142404688841, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "2", "bbox": {"l": 285.8200104688936, "t": 362.4346620011579, "r": 289.78809047540335, "b": 369.40844203966316, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "+ 8 = 12", "bbox": {"l": 292.50400047985886, "t": 364.3070620114962, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "a 2 + 8 = 12"}, {"label": "text", "id": 0, "page_no": 1, "cluster": {"id": 0, "label": "text", "bbox": {"l": 133.76801021944917, "t": 382.24005211051195, "r": 477.47589078330907, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}, "confidence": 0.9880034923553467, "cells": [{"id": 22, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201024396512, "t": 382.24005211051195, "r": 477.4698807832991, "b": 392.2026621655199, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801021944917, "t": 394.19506217652076, "r": 477.47580078330884, "b": 404.15768223152867, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801021944917, "t": 406.15005224252945, "r": 477.47580078330884, "b": 416.1126722975373, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801021944917, "t": 418.10507230853824, "r": 477.47284078330404, "b": 428.06768236354606, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801021944917, "t": 430.0600523745468, "r": 477.47589078330907, "b": 440.0226724295547, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801021944917, "t": 442.01605244056105, "r": 477.4717707833023, "b": 451.97866249556887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801021944917, "t": 453.9710625065698, "r": 477.47388078330573, "b": 463.93368256157777, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 465.9260525725785, "r": 477.4708307833007, "b": 475.88867262758635, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 477.8810726385873, "r": 477.4709207833008, "b": 487.84368269359516, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 489.8360527045959, "r": 477.4658807832926, "b": 499.7986727596038, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 501.7910427706045, "r": 477.47586078330903, "b": 511.7536628256125, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 513.7470728366188, "r": 351.4767205766048, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "text", "id": 4, "page_no": 1, "cluster": {"id": 4, "label": "text", "bbox": {"l": 133.76801021944917, "t": 525.7020529026275, "r": 477.47482078330734, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}, "confidence": 0.9844803214073181, "cells": [{"id": 34, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 525.7020529026275, "r": 477.4710707833011, "b": 535.6646729576354, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 537.6570729686364, "r": 477.47293078330415, "b": 547.6196930236442, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 549.612063034645, "r": 477.47482078330734, "b": 559.5746730896528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 561.5670431006536, "r": 477.472810783304, "b": 571.5296631556615, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 573.5220631666624, "r": 477.47479078330724, "b": 583.4846832216704, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 585.4780532326765, "r": 173.0565202839028, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."}, {"label": "text", "id": 2, "page_no": 1, "cluster": {"id": 2, "label": "text", "bbox": {"l": 133.76801021944917, "t": 597.4330632986853, "r": 477.47482078330734, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}, "confidence": 0.9872003793716431, "cells": [{"id": 40, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 597.4330632986853, "r": 477.4710707833011, "b": 607.3956633536932, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 609.3880633646941, "r": 477.47293078330415, "b": 619.3506634197018, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 621.3430634307027, "r": 477.47482078330734, "b": 631.3056634857105, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 633.2980634967114, "r": 477.472810783304, "b": 643.2606635517193, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 645.2540535627256, "r": 477.47479078330724, "b": 655.2166536177334, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 657.2090636287344, "r": 173.0565202839028, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."}, {"label": "page_footer", "id": 7, "page_no": 1, "cluster": {"id": 7, "label": "page_footer", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}, "confidence": 0.850279688835144, "cells": [{"id": 46, "text": "1", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "1"}], "body": [{"label": "section_header", "id": 5, "page_no": 1, "cluster": {"id": 5, "label": "section_header", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}, "confidence": 0.95060133934021, "cells": [{"id": 0, "text": "Formula", "bbox": {"l": 133.76801021944917, "t": 124.00537068468714, "r": 191.51430031418315, "b": 138.36590076397772, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Formula"}, {"label": "text", "id": 1, "page_no": 1, "cluster": {"id": 1, "label": "text", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.4806507833169, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}, "confidence": 0.9878177046775818, "cells": [{"id": 1, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eir-", "bbox": {"l": 133.76801021944917, "t": 149.114070823323, "r": 477.47687078331063, "b": 159.0766608783307, "coord_origin": "TOPLEFT"}}, {"id": 2, "text": "mod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam volup-", "bbox": {"l": 133.76801021944917, "t": 161.06909088933185, "r": 477.4778107833122, "b": 171.03167094433945, "coord_origin": "TOPLEFT"}}, {"id": 3, "text": "tua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd", "bbox": {"l": 133.76801021944917, "t": 173.0241009553406, "r": 477.46985078329914, "b": 182.9866910103483, "coord_origin": "TOPLEFT"}}, {"id": 4, "text": "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ip-", "bbox": {"l": 133.76801021944917, "t": 184.97906102134914, "r": 477.4718607833024, "b": 194.94165107635683, "coord_origin": "TOPLEFT"}}, {"id": 5, "text": "sum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor", "bbox": {"l": 133.76801021944917, "t": 196.93511108736357, "r": 477.4699407832993, "b": 206.89770114237137, "coord_origin": "TOPLEFT"}}, {"id": 6, "text": "invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero", "bbox": {"l": 133.76801021944917, "t": 208.890071153372, "r": 477.4806507833169, "b": 218.8526612083799, "coord_origin": "TOPLEFT"}}, {"id": 7, "text": "eos et accusam et justo duo dolores et ea rebum.", "bbox": {"l": 133.76801021944917, "t": 220.84509121938083, "r": 355.20087058271434, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 8, "text": "Stet clita kasd gubergren,", "bbox": {"l": 362.6010705948545, "t": 220.84509121938083, "r": 477.4749507833075, "b": 230.80767127438855, "coord_origin": "TOPLEFT"}}, {"id": 9, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 232.8001112853898, "r": 477.4708307833007, "b": 242.76269134039728, "coord_origin": "TOPLEFT"}}, {"id": 10, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 244.75506135139813, "r": 477.4709207833008, "b": 254.71765140640582, "coord_origin": "TOPLEFT"}}, {"id": 11, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 256.71008141740685, "r": 477.4658807832926, "b": 266.6726614724146, "coord_origin": "TOPLEFT"}}, {"id": 12, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 268.6660714834211, "r": 477.47586078330903, "b": 278.6286615384289, "coord_origin": "TOPLEFT"}}, {"id": 13, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 280.62109154942993, "r": 351.4767205766048, "b": 290.58367160443765, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "text", "id": 3, "page_no": 1, "cluster": {"id": 3, "label": "text", "bbox": {"l": 133.76801021944917, "t": 292.5761116154388, "r": 477.47482078330734, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}, "confidence": 0.9855858683586121, "cells": [{"id": 14, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 292.5761116154388, "r": 477.4710707833011, "b": 302.5386916704465, "coord_origin": "TOPLEFT"}}, {"id": 15, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 304.5310616814471, "r": 477.47293078330415, "b": 314.4936517364549, "coord_origin": "TOPLEFT"}}, {"id": 16, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 316.48608174745607, "r": 477.47482078330734, "b": 326.4486618024637, "coord_origin": "TOPLEFT"}}, {"id": 17, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 328.4411018134648, "r": 477.472810783304, "b": 338.40368186847246, "coord_origin": "TOPLEFT"}}, {"id": 18, "text": "sed diam nonummy nibh euismod tincidunt.", "bbox": {"l": 133.76801021944917, "t": 340.3970618794788, "r": 326.20752053515014, "b": 350.3596819344868, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt."}, {"label": "formula", "id": 6, "page_no": 1, "cluster": {"id": 6, "label": "formula", "bbox": {"l": 280.5539904602546, "t": 362.4346620011579, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}, "confidence": 0.8711639046669006, "cells": [{"id": 19, "text": "a", "bbox": {"l": 280.5539904602546, "t": 364.3070620114962, "r": 285.8142404688841, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}, {"id": 20, "text": "2", "bbox": {"l": 285.8200104688936, "t": 362.4346620011579, "r": 289.78809047540335, "b": 369.40844203966316, "coord_origin": "TOPLEFT"}}, {"id": 21, "text": "+ 8 = 12", "bbox": {"l": 292.50400047985886, "t": 364.3070620114962, "r": 330.6965905425146, "b": 374.2696820665041, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "a 2 + 8 = 12"}, {"label": "text", "id": 0, "page_no": 1, "cluster": {"id": 0, "label": "text", "bbox": {"l": 133.76801021944917, "t": 382.24005211051195, "r": 477.47589078330907, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}, "confidence": 0.9880034923553467, "cells": [{"id": 22, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy", "bbox": {"l": 148.71201024396512, "t": 382.24005211051195, "r": 477.4698807832991, "b": 392.2026621655199, "coord_origin": "TOPLEFT"}}, {"id": 23, "text": "eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam", "bbox": {"l": 133.76801021944917, "t": 394.19506217652076, "r": 477.47580078330884, "b": 404.15768223152867, "coord_origin": "TOPLEFT"}}, {"id": 24, "text": "voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita", "bbox": {"l": 133.76801021944917, "t": 406.15005224252945, "r": 477.47580078330884, "b": 416.1126722975373, "coord_origin": "TOPLEFT"}}, {"id": 25, "text": "kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem", "bbox": {"l": 133.76801021944917, "t": 418.10507230853824, "r": 477.47284078330404, "b": 428.06768236354606, "coord_origin": "TOPLEFT"}}, {"id": 26, "text": "ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod", "bbox": {"l": 133.76801021944917, "t": 430.0600523745468, "r": 477.47589078330907, "b": 440.0226724295547, "coord_origin": "TOPLEFT"}}, {"id": 27, "text": "tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At", "bbox": {"l": 133.76801021944917, "t": 442.01605244056105, "r": 477.4717707833023, "b": 451.97866249556887, "coord_origin": "TOPLEFT"}}, {"id": 28, "text": "vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,", "bbox": {"l": 133.76801021944917, "t": 453.9710625065698, "r": 477.47388078330573, "b": 463.93368256157777, "coord_origin": "TOPLEFT"}}, {"id": 29, "text": "no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor", "bbox": {"l": 133.76801021944917, "t": 465.9260525725785, "r": 477.4708307833007, "b": 475.88867262758635, "coord_origin": "TOPLEFT"}}, {"id": 30, "text": "sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt", "bbox": {"l": 133.76801021944917, "t": 477.8810726385873, "r": 477.4709207833008, "b": 487.84368269359516, "coord_origin": "TOPLEFT"}}, {"id": 31, "text": "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et", "bbox": {"l": 133.76801021944917, "t": 489.8360527045959, "r": 477.4658807832926, "b": 499.7986727596038, "coord_origin": "TOPLEFT"}}, {"id": 32, "text": "accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea", "bbox": {"l": 133.76801021944917, "t": 501.7910427706045, "r": 477.47586078330903, "b": 511.7536628256125, "coord_origin": "TOPLEFT"}}, {"id": 33, "text": "takimata sanctus est Lorem ipsum dolor sit amet.", "bbox": {"l": 133.76801021944917, "t": 513.7470728366188, "r": 351.4767205766048, "b": 523.7096828916267, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."}, {"label": "text", "id": 4, "page_no": 1, "cluster": {"id": 4, "label": "text", "bbox": {"l": 133.76801021944917, "t": 525.7020529026275, "r": 477.47482078330734, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}, "confidence": 0.9844803214073181, "cells": [{"id": 34, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 525.7020529026275, "r": 477.4710707833011, "b": 535.6646729576354, "coord_origin": "TOPLEFT"}}, {"id": 35, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 537.6570729686364, "r": 477.47293078330415, "b": 547.6196930236442, "coord_origin": "TOPLEFT"}}, {"id": 36, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 549.612063034645, "r": 477.47482078330734, "b": 559.5746730896528, "coord_origin": "TOPLEFT"}}, {"id": 37, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 561.5670431006536, "r": 477.472810783304, "b": 571.5296631556615, "coord_origin": "TOPLEFT"}}, {"id": 38, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 573.5220631666624, "r": 477.47479078330724, "b": 583.4846832216704, "coord_origin": "TOPLEFT"}}, {"id": 39, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 585.4780532326765, "r": 173.0565202839028, "b": 595.4406532876844, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."}, {"label": "text", "id": 2, "page_no": 1, "cluster": {"id": 2, "label": "text", "bbox": {"l": 133.76801021944917, "t": 597.4330632986853, "r": 477.47482078330734, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}, "confidence": 0.9872003793716431, "cells": [{"id": 40, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie", "bbox": {"l": 148.71201024396512, "t": 597.4330632986853, "r": 477.4710707833011, "b": 607.3956633536932, "coord_origin": "TOPLEFT"}}, {"id": 41, "text": "consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et", "bbox": {"l": 133.76801021944917, "t": 609.3880633646941, "r": 477.47293078330415, "b": 619.3506634197018, "coord_origin": "TOPLEFT"}}, {"id": 42, "text": "iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore", "bbox": {"l": 133.76801021944917, "t": 621.3430634307027, "r": 477.47482078330734, "b": 631.3056634857105, "coord_origin": "TOPLEFT"}}, {"id": 43, "text": "te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit,", "bbox": {"l": 133.76801021944917, "t": 633.2980634967114, "r": 477.472810783304, "b": 643.2606635517193, "coord_origin": "TOPLEFT"}}, {"id": 44, "text": "sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat", "bbox": {"l": 133.76801021944917, "t": 645.2540535627256, "r": 477.47479078330724, "b": 655.2166536177334, "coord_origin": "TOPLEFT"}}, {"id": 45, "text": "volutpat.", "bbox": {"l": 133.76801021944917, "t": 657.2090636287344, "r": 173.0565202839028, "b": 667.1716636837423, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat."}], "headers": [{"label": "page_footer", "id": 7, "page_no": 1, "cluster": {"id": 7, "label": "page_footer", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}, "confidence": 0.850279688835144, "cells": [{"id": 46, "text": "1", "bbox": {"l": 303.13300049729594, "t": 695.1640638383003, "r": 308.1142905054678, "b": 705.1266638933081, "coord_origin": "TOPLEFT"}}], "children": []}, "text": "1"}]}}] \ No newline at end of file diff --git a/tests/test_code_formula.py b/tests/test_code_formula.py new file mode 100644 index 00000000..05e87246 --- /dev/null +++ b/tests/test_code_formula.py @@ -0,0 +1,66 @@ +from pathlib import Path + +from docling_core.types.doc import CodeItem, TextItem +from docling_core.types.doc.labels import CodeLanguageLabel, DocItemLabel + +from docling.backend.docling_parse_backend import DoclingParseDocumentBackend +from docling.backend.docling_parse_v2_backend import DoclingParseV2DocumentBackend +from docling.datamodel.base_models import InputFormat +from docling.datamodel.document import ConversionResult +from docling.datamodel.pipeline_options import PdfPipelineOptions +from docling.document_converter import DocumentConverter, PdfFormatOption +from docling.pipeline.standard_pdf_pipeline import StandardPdfPipeline + + +def get_converter(): + + pipeline_options = PdfPipelineOptions() + pipeline_options.generate_page_images = True + + pipeline_options.do_ocr = False + pipeline_options.do_table_structure = False + pipeline_options.do_code_enrichment = True + pipeline_options.do_formula_enrichment = True + + converter = DocumentConverter( + format_options={ + InputFormat.PDF: PdfFormatOption( + backend=DoclingParseV2DocumentBackend, + pipeline_cls=StandardPdfPipeline, + pipeline_options=pipeline_options, + ) + } + ) + + return converter + + +def test_code_and_formula_conversion(): + pdf_path = Path("tests/data/code_and_formula.pdf") + converter = get_converter() + + print(f"converting {pdf_path}") + + doc_result: ConversionResult = converter.convert(pdf_path) + + results = doc_result.document.texts + + code_blocks = [el for el in results if isinstance(el, CodeItem)] + assert len(code_blocks) == 1 + + gt = 'public static void print() {\n System.out.println("Java Code");\n}' + + predicted = code_blocks[0].text.strip() + assert predicted == gt, f"mismatch in text {predicted=}, {gt=}" + assert code_blocks[0].code_language == CodeLanguageLabel.JAVA + + formula_blocks = [ + el + for el in results + if isinstance(el, TextItem) and el.label == DocItemLabel.FORMULA + ] + assert len(formula_blocks) == 1 + + gt = "a ^ { 2 } + 8 = 1 2" + predicted = formula_blocks[0].text + assert predicted == gt, f"mismatch in text {predicted=}, {gt=}"