From 5b3403526124c3155fa79f2e1cd65483a55a354c Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Wed, 4 Jun 2025 11:35:54 -0500 Subject: [PATCH 01/30] Remove v1 result file code paths --- indico_toolkit/results/__init__.py | 6 +- indico_toolkit/results/document.py | 29 +- indico_toolkit/results/model.py | 34 +- indico_toolkit/results/normalization.py | 84 +- indico_toolkit/results/predictionlist.py | 43 +- .../results/predictions/__init__.py | 35 +- .../results/predictions/classification.py | 10 +- .../results/predictions/documentextraction.py | 72 +- .../results/predictions/formextraction.py | 10 +- .../results/predictions/prediction.py | 10 +- .../results/predictions/summarization.py | 8 +- .../results/predictions/unbundling.py | 8 +- indico_toolkit/results/result.py | 66 +- tests/data/results/2910_v1_unreviewed.json | 364 ----- tests/data/results/2911_v1_accepted.json | 1353 ----------------- tests/data/results/2912_v1_rejected.json | 749 --------- tests/results/test_document.py | 24 +- 17 files changed, 56 insertions(+), 2849 deletions(-) delete mode 100644 tests/data/results/2910_v1_unreviewed.json delete mode 100644 tests/data/results/2911_v1_accepted.json delete mode 100644 tests/data/results/2912_v1_rejected.json diff --git a/indico_toolkit/results/__init__.py b/indico_toolkit/results/__init__.py index 93872c5..54d7aa5 100644 --- a/indico_toolkit/results/__init__.py +++ b/indico_toolkit/results/__init__.py @@ -96,9 +96,7 @@ def _load(result: object) -> Result: file_version = get(result, int, "file_version") - if file_version == 1: - return Result.from_v1_dict(result) - elif file_version == 3: - return Result.from_v3_dict(result) + if file_version == 3: + return Result.from_dict(result) else: raise ResultError(f"unsupported file version `{file_version}`") diff --git a/indico_toolkit/results/document.py b/indico_toolkit/results/document.py index 2e69597..ca3aab6 100644 --- a/indico_toolkit/results/document.py +++ b/indico_toolkit/results/document.py @@ -22,30 +22,9 @@ class Document: _component_sections: "frozenset[str]" @staticmethod - def from_v1_dict(result: object) -> "Document": + def from_dict(document: object) -> "Document": """ - Create a `Document` from a v1 result file dictionary. - """ - document_results = get(result, dict, "results", "document", "results") - model_names = frozenset(document_results.keys()) - etl_output_uri = get(result, str, "etl_output") - - return Document( - # v1 result files don't include document IDs or filenames. - id=None, # type: ignore[arg-type] - name=None, # type: ignore[arg-type] - etl_output_uri=etl_output_uri, - failed=False, - error="", - traceback="", - _model_sections=model_names, - _component_sections=frozenset(), - ) - - @staticmethod - def from_v3_dict(document: object) -> "Document": - """ - Create a `Document` from a v3 document dictionary. + Create a `Document` from a document dictionary. """ model_results = get(document, dict, "model_results", "ORIGINAL") component_results = get(document, dict, "component_results", "ORIGINAL") @@ -65,9 +44,9 @@ def from_v3_dict(document: object) -> "Document": ) @staticmethod - def from_v3_errored_file(errored_file: object) -> "Document": + def from_errored_file_dict(errored_file: object) -> "Document": """ - Create a `Document` from a v3 errored file dictionary. + Create a `Document` from an errored file dictionary. """ traceback = get(errored_file, str, "error") error = traceback.split("\n")[-1].strip() diff --git a/indico_toolkit/results/model.py b/indico_toolkit/results/model.py index 951464e..c111c55 100644 --- a/indico_toolkit/results/model.py +++ b/indico_toolkit/results/model.py @@ -1,7 +1,7 @@ from dataclasses import dataclass from enum import Enum -from .utils import get, has +from .utils import get class ModelGroupType(Enum): @@ -21,37 +21,9 @@ class ModelGroup: type: ModelGroupType @staticmethod - def from_v1_section(section: "tuple[str, object]") -> "ModelGroup": + def from_dict(model_group: object) -> "ModelGroup": """ - Create a `ModelGroup` from a v1 prediction section. - Use a heuristic on the first prediction of the model to determine its type. - """ - name, predictions = section - - if has(predictions, dict, "pre_review", 0): - prediction = get(predictions, dict, "pre_review", 0) - - if has(prediction, str, "type"): - type = ModelGroupType.FORM_EXTRACTION - elif has(prediction, str, "text"): - type = ModelGroupType.DOCUMENT_EXTRACTION - else: - type = ModelGroupType.CLASSIFICATION - else: - # Likely an extraction model that produced no predictions. - type = ModelGroupType.DOCUMENT_EXTRACTION - - return ModelGroup( - # v1 result files don't include model IDs. - id=None, # type: ignore[arg-type] - name=name, - type=type, - ) - - @staticmethod - def from_v3_dict(model_group: object) -> "ModelGroup": - """ - Create a `ModelGroup` from a v3 model group dictionary. + Create a `ModelGroup` from a model group dictionary. """ return ModelGroup( id=get(model_group, int, "id"), diff --git a/indico_toolkit/results/normalization.py b/indico_toolkit/results/normalization.py index b96dff0..d541d55 100644 --- a/indico_toolkit/results/normalization.py +++ b/indico_toolkit/results/normalization.py @@ -9,83 +9,9 @@ from typing import Any -def normalize_v1_result(result: "Any") -> None: +def normalize_result_dict(result: "Any") -> None: """ - Fix inconsistencies observed in v1 result files. - """ - submission_results = get(result, dict, "results", "document", "results") - - for model_name, model_results in tuple(submission_results.items()): - # Incomplete and unreviewed submissions don't have review sections. - if not has(model_results, list, "post_reviews"): - submission_results[model_name] = model_results = { - "pre_review": model_results, - "post_reviews": [], - } - - # Classifications aren't wrapped in lists like other prediction types. - if has(model_results, dict, "pre_review"): - model_results["pre_review"] = [model_results["pre_review"]] - model_results["post_reviews"] = [ - [prediction] for prediction in model_results["post_reviews"] - ] - - predictions: "Any" = ( - prediction - for review in ( - [get(model_results, list, "pre_review")] - + get(model_results, list, "post_reviews") - ) - if review is not None - for prediction in review - if prediction is not None - ) - - for prediction in predictions: - # Predictions added in review lack a `confidence` section. - if "confidence" not in prediction: - prediction["confidence"] = {prediction["label"]: 0} - - # Form Extractions added in review may lack bounding boxes. - # Set values that will equal `NULL_BOX`. - if "type" in prediction and "top" not in prediction: - prediction["page_num"] = 0 - prediction["top"] = 0 - prediction["left"] = 0 - prediction["right"] = 0 - prediction["bottom"] = 0 - - # Prior to 6.11, some Extractions lack a `normalized` section after review. - if "text" in prediction and "normalized" not in prediction: - prediction["normalized"] = {"formatted": prediction["text"]} - - # Document Extractions that didn't go through a linked labels transformer - # lack a `groupings` section. - if ( - "text" in prediction - and "type" not in prediction - and "groupings" not in prediction - ): - prediction["groupings"] = [] - - # Incomplete and unreviewed submissions don't include a `reviews_meta` section. - if not has(result, list, "reviews_meta"): - result["reviews_meta"] = [] - - # Incomplete and unreviewed submissions retrieved with `SubmissionResult()` have a - # single `{"review_id": None}` review. - if not has(result, int, "reviews_meta", 0, "review_id"): - result["reviews_meta"] = [] - - # Review notes are `None` unless the reviewer enters a reason for rejection. - for review_dict in get(result, list, "reviews_meta"): - if not has(review_dict, str, "review_notes"): - review_dict["review_notes"] = "" - - -def normalize_v3_result(result: "Any") -> None: - """ - Fix inconsistencies observed in v3 result files. + Fix inconsistencies observed in result files. """ task_type_by_model_group_id = { model_group_id: model_group["task_type"] @@ -146,11 +72,11 @@ def normalize_v3_result(result: "Any") -> None: if task_type == "summarization" and "citations" not in prediction: prediction["citations"] = [] - # Prior to 7.2, v3 result files don't include a `component_metadata` section. + # Prior to 7.2, result files don't include a `component_metadata` section. if not has(result, dict, "component_metadata"): result["component_metadata"] = {} - # Prior to 6.8, v3 result files don't include a `reviews` section. + # Prior to 6.8, result files don't include a `reviews` section. if not has(result, dict, "reviews"): result["reviews"] = {} @@ -159,7 +85,7 @@ def normalize_v3_result(result: "Any") -> None: if not has(review_dict, str, "review_notes"): review_dict["review_notes"] = "" - # Prior to 7.0, v3 result files don't include an `errored_files` section. + # Prior to 7.0, result files don't include an `errored_files` section. if not has(result, dict, "errored_files"): result["errored_files"] = {} diff --git a/indico_toolkit/results/predictionlist.py b/indico_toolkit/results/predictionlist.py index 34db0b6..7e43f24 100644 --- a/indico_toolkit/results/predictionlist.py +++ b/indico_toolkit/results/predictionlist.py @@ -327,45 +327,14 @@ def unreject(self) -> "Self": self.oftype(Extraction).apply(Extraction.unreject) return self - def to_changes(self, result: "Result") -> "Any": + def to_changes(self, result: "Result") -> "list[dict[str, Any]]": """ - Create a dict or list for the `changes` argument of `SubmitReview` based on the - predictions in this prediction list and the documents and version of `result`. - """ - if result.version == 1: - return self.to_v1_changes(result.documents[0]) - elif result.version == 3: - return self.to_v3_changes(result.documents) - else: - raise ValueError(f"unsupported file version `{result.version}`") - - def to_v1_changes(self, document: "Document") -> "dict[str, Any]": - """ - Create a v1 dict for the `changes` argument of `SubmitReview`. - """ - changes: "dict[str, Any]" = {} - - for model, predictions in self.groupby(attrgetter("model")).items(): - if model.type == ModelGroupType.CLASSIFICATION: - changes[model.name] = predictions[0].to_v1_dict() - else: - changes[model.name] = [ - prediction.to_v1_dict() for prediction in predictions - ] - - for model_name in document._model_sections: - if model_name not in changes: - changes[model_name] = [] - - return changes - - def to_v3_changes(self, documents: "Iterable[Document]") -> "list[dict[str, Any]]": - """ - Create a v3 list for the `changes` argument of `SubmitReview`. + Create a list for the `changes` argument of `SubmitReview` based on the + predictions in this prediction list and the documents in `result`. """ changes: "list[dict[str, Any]]" = [] - for document in documents: + for document in result.documents: if document.failed: continue @@ -380,9 +349,7 @@ def to_v3_changes(self, documents: "Iterable[Document]") -> "list[dict[str, Any] for model, predictions in predictions_by_model.items(): model_id = str(model.id) - prediction_dicts = [ - prediction.to_v3_dict() for prediction in predictions - ] + prediction_dicts = [prediction.to_dict() for prediction in predictions] if model_id in document._model_sections: model_results[model_id] = prediction_dicts diff --git a/indico_toolkit/results/predictions/__init__.py b/indico_toolkit/results/predictions/__init__.py index b385c80..2ea64c1 100644 --- a/indico_toolkit/results/predictions/__init__.py +++ b/indico_toolkit/results/predictions/__init__.py @@ -46,43 +46,24 @@ UNBUNDLING = ModelGroupType.UNBUNDLING -def from_v1_dict( +def from_dict( document: "Document", model: "ModelGroup", review: "Review | None", prediction: object, ) -> "Prediction": """ - Create a `Prediction` subclass from a v1 prediction dictionary. - """ - if model.type == CLASSIFICATION: - return Classification.from_v1_dict(document, model, review, prediction) - elif model.type == DOCUMENT_EXTRACTION: - return DocumentExtraction.from_v1_dict(document, model, review, prediction) - elif model.type == FORM_EXTRACTION: - return FormExtraction.from_v1_dict(document, model, review, prediction) - else: - raise ResultError(f"unsupported v1 model type {model.type!r}") - - -def from_v3_dict( - document: "Document", - model: "ModelGroup", - review: "Review | None", - prediction: object, -) -> "Prediction": - """ - Create a `Prediction` subclass from a v3 prediction dictionary. + Create a `Prediction` subclass from a prediction dictionary. """ if model.type in (CLASSIFICATION, GENAI_CLASSIFICATION): - return Classification.from_v3_dict(document, model, review, prediction) + return Classification.from_dict(document, model, review, prediction) elif model.type in (DOCUMENT_EXTRACTION, GENAI_EXTRACTION): - return DocumentExtraction.from_v3_dict(document, model, review, prediction) + return DocumentExtraction.from_dict(document, model, review, prediction) elif model.type == FORM_EXTRACTION: - return FormExtraction.from_v3_dict(document, model, review, prediction) + return FormExtraction.from_dict(document, model, review, prediction) elif model.type == GENAI_SUMMARIZATION: - return Summarization.from_v3_dict(document, model, review, prediction) + return Summarization.from_dict(document, model, review, prediction) elif model.type == UNBUNDLING: - return Unbundling.from_v3_dict(document, model, review, prediction) + return Unbundling.from_dict(document, model, review, prediction) else: - raise ResultError(f"unsupported v3 model type {model.type!r}") + raise ResultError(f"unsupported model type {model.type!r}") diff --git a/indico_toolkit/results/predictions/classification.py b/indico_toolkit/results/predictions/classification.py index 6f6b6b4..1cf3171 100644 --- a/indico_toolkit/results/predictions/classification.py +++ b/indico_toolkit/results/predictions/classification.py @@ -15,7 +15,7 @@ @dataclass class Classification(Prediction): @staticmethod - def _from_dict( + def from_dict( document: "Document", model: "ModelGroup", review: "Review | None", @@ -33,10 +33,7 @@ def _from_dict( extras=omit(prediction, "label", "confidence"), ) - from_v1_dict = _from_dict - from_v3_dict = _from_dict - - def _to_dict(self) -> "dict[str, Any]": + def to_dict(self) -> "dict[str, Any]": """ Create a prediction dictionary for auto review changes. """ @@ -45,6 +42,3 @@ def _to_dict(self) -> "dict[str, Any]": "label": self.label, "confidence": self.confidences, } - - to_v1_dict = _to_dict - to_v3_dict = _to_dict diff --git a/indico_toolkit/results/predictions/documentextraction.py b/indico_toolkit/results/predictions/documentextraction.py index a7c36bd..58f769e 100644 --- a/indico_toolkit/results/predictions/documentextraction.py +++ b/indico_toolkit/results/predictions/documentextraction.py @@ -40,52 +40,14 @@ def span(self, span: Span) -> None: self.spans = [span] @staticmethod - def from_v1_dict( + def from_dict( document: "Document", model: "ModelGroup", review: "Review | None", prediction: object, ) -> "DocumentExtraction": """ - Create a `DocumentExtraction` from a v1 prediction dictionary. - """ - return DocumentExtraction( - document=document, - model=model, - review=review, - label=get(prediction, str, "label"), - confidences=get(prediction, dict, "confidence"), - text=get(prediction, str, "normalized", "formatted"), - accepted=( - has(prediction, bool, "accepted") and get(prediction, bool, "accepted") - ), - rejected=( - has(prediction, bool, "rejected") and get(prediction, bool, "rejected") - ), - groups=set(map(Group.from_dict, get(prediction, list, "groupings"))), - spans=[Span.from_dict(prediction)] if has(prediction, int, "start") else [], - extras=omit( - prediction, - "label", - "confidence", - "accepted", - "rejected", - "groupings", - "page_num", - "start", - "end", - ), - ) - - @staticmethod - def from_v3_dict( - document: "Document", - model: "ModelGroup", - review: "Review | None", - prediction: object, - ) -> "DocumentExtraction": - """ - Create a `DocumentExtraction` from a v3 prediction dictionary. + Create a `DocumentExtraction` from a prediction dictionary. """ return DocumentExtraction( document=document, @@ -113,35 +75,9 @@ def from_v3_dict( ), ) - def to_v1_dict(self) -> "dict[str, Any]": - """ - Create a prediction dictionary for v1 auto review changes. - """ - prediction = { - **self.extras, - "label": self.label, - "confidence": self.confidences, - "groupings": [group.to_dict() for group in self.groups], - "page_num": self.span.page, - "start": self.span.start, - "end": self.span.end, - } - - if self.text != get(prediction, str, "normalized", "formatted"): - prediction["normalized"]["formatted"] = self.text - prediction["normalized"]["text"] = self.text - prediction["text"] = self.text - - if self.accepted: - prediction["accepted"] = True - elif self.rejected: - prediction["rejected"] = True - - return prediction - - def to_v3_dict(self) -> "dict[str, Any]": + def to_dict(self) -> "dict[str, Any]": """ - Create a prediction dictionary for v3 auto review changes. + Create a prediction dictionary for auto review changes. """ prediction = { **self.extras, diff --git a/indico_toolkit/results/predictions/formextraction.py b/indico_toolkit/results/predictions/formextraction.py index 14166bf..57a0a40 100644 --- a/indico_toolkit/results/predictions/formextraction.py +++ b/indico_toolkit/results/predictions/formextraction.py @@ -28,7 +28,7 @@ class FormExtraction(Extraction): signed: bool @staticmethod - def _from_dict( + def from_dict( document: "Document", model: "ModelGroup", review: "Review | None", @@ -77,10 +77,7 @@ def _from_dict( ), ) - from_v1_dict = _from_dict - from_v3_dict = _from_dict - - def _to_dict(self) -> "dict[str, Any]": + def to_dict(self) -> "dict[str, Any]": """ Create a prediction dictionary for auto review changes. """ @@ -121,6 +118,3 @@ def _to_dict(self) -> "dict[str, Any]": prediction["rejected"] = True return prediction - - to_v1_dict = _to_dict - to_v3_dict = _to_dict diff --git a/indico_toolkit/results/predictions/prediction.py b/indico_toolkit/results/predictions/prediction.py index 69186a2..9e00ce4 100644 --- a/indico_toolkit/results/predictions/prediction.py +++ b/indico_toolkit/results/predictions/prediction.py @@ -28,14 +28,8 @@ def confidence(self) -> float: def confidence(self, value: float) -> None: self.confidences[self.label] = value - def to_v1_dict(self) -> "dict[str, Any]": + def to_dict(self) -> "dict[str, Any]": """ - Create a prediction dictionary for v1 auto review changes. - """ - raise NotImplementedError() - - def to_v3_dict(self) -> "dict[str, Any]": - """ - Create a prediction dictionary for v3 auto review changes. + Create a prediction dictionary for auto review changes. """ raise NotImplementedError() diff --git a/indico_toolkit/results/predictions/summarization.py b/indico_toolkit/results/predictions/summarization.py index 43ba9c3..4a723ef 100644 --- a/indico_toolkit/results/predictions/summarization.py +++ b/indico_toolkit/results/predictions/summarization.py @@ -47,14 +47,14 @@ def span(self, span: "Span") -> None: self.citations = [Citation(self.citation.start, self.citation.end, span)] @staticmethod - def from_v3_dict( + def from_dict( document: "Document", model: "ModelGroup", review: "Review | None", prediction: object, ) -> "Summarization": """ - Create a `Summarization` from a v3 prediction dictionary. + Create a `Summarization` from a prediction dictionary. """ return Summarization( document=document, @@ -83,9 +83,9 @@ def from_v3_dict( ), ) - def to_v3_dict(self) -> "dict[str, Any]": + def to_dict(self) -> "dict[str, Any]": """ - Create a prediction dictionary for v3 auto review changes. + Create a prediction dictionary for auto review changes. """ prediction = { **self.extras, diff --git a/indico_toolkit/results/predictions/unbundling.py b/indico_toolkit/results/predictions/unbundling.py index c651232..5466a61 100644 --- a/indico_toolkit/results/predictions/unbundling.py +++ b/indico_toolkit/results/predictions/unbundling.py @@ -25,14 +25,14 @@ def pages(self) -> "tuple[int, ...]": return tuple(span.page for span in self.spans) @staticmethod - def from_v3_dict( + def from_dict( document: "Document", model: "ModelGroup", review: "Review | None", prediction: object, ) -> "Unbundling": """ - Create an `Unbundling` from a v3 prediction dictionary. + Create an `Unbundling` from a prediction dictionary. """ return Unbundling( document=document, @@ -44,9 +44,9 @@ def from_v3_dict( extras=omit(prediction, "confidence", "label", "spans"), ) - def to_v3_dict(self) -> "dict[str, Any]": + def to_dict(self) -> "dict[str, Any]": """ - Create a prediction dictionary for v3 auto review changes. + Create a prediction dictionary for auto review changes. """ return { **self.extras, diff --git a/indico_toolkit/results/result.py b/indico_toolkit/results/result.py index 6325c71..8756f77 100644 --- a/indico_toolkit/results/result.py +++ b/indico_toolkit/results/result.py @@ -7,7 +7,7 @@ from .document import Document from .errors import ResultError from .model import ModelGroup -from .normalization import normalize_v1_result, normalize_v3_result +from .normalization import normalize_result_dict from .predictionlist import PredictionList from .predictions import Prediction from .review import Review, ReviewType @@ -51,57 +51,11 @@ def final(self) -> "PredictionList[Prediction]": return self.predictions.where(review=self.reviews[-1] if self.reviews else None) @staticmethod - def from_v1_dict(result: object) -> "Result": + def from_dict(result: object) -> "Result": """ - Create a `Result` from a v1 result file dictionary. + Create a `Result` from a result file dictionary. """ - normalize_v1_result(result) - - version = get(result, int, "file_version") - submission_id = get(result, int, "submission_id") - submission_results = get(result, dict, "results", "document", "results") - review_metadata = get(result, list, "reviews_meta") - - document = Document.from_v1_dict(result) - models = sorted(map(ModelGroup.from_v1_section, submission_results.items())) - predictions: "PredictionList[Prediction]" = PredictionList() - # Reviews must be sorted after parsing predictions, as they match positionally - # with prediction lists in `post_reviews`. - reviews = list(map(Review.from_dict, review_metadata)) - - for model_name, model_predictions in submission_results.items(): - model = next(filter(lambda model: model.name == model_name, models)) - reviewed_model_predictions: "list[tuple[Review | None, Any]]" = [ - (None, get(model_predictions, list, "pre_review")), - *filter( - lambda review_predictions: not review_predictions[0].rejected, - zip(reviews, get(model_predictions, list, "post_reviews")), - ), - ] - - for review, model_predictions in reviewed_model_predictions: - predictions.extend( - map( - partial(prediction.from_v1_dict, document, model, review), - model_predictions, - ) - ) - - return Result( - version=version, - submission_id=submission_id, - documents=(document,), - models=tuple(models), - predictions=predictions, - reviews=tuple(sorted(reviews)), - ) - - @staticmethod - def from_v3_dict(result: object) -> "Result": - """ - Create a `Result` from a v3 result file dictionary. - """ - normalize_v3_result(result) + normalize_result_dict(result) version = get(result, int, "file_version") submission_id = get(result, int, "submission_id") @@ -120,14 +74,14 @@ def from_v3_dict(result: object) -> "Result": documents = sorted( chain( - map(Document.from_v3_dict, submission_results), - map(Document.from_v3_errored_file, errored_files), + map(Document.from_dict, submission_results), + map(Document.from_errored_file_dict, errored_files), ) ) models = sorted( chain( - map(ModelGroup.from_v3_dict, modelgroup_metadata.values()), - map(ModelGroup.from_v3_dict, static_model_components), + map(ModelGroup.from_dict, modelgroup_metadata.values()), + map(ModelGroup.from_dict, static_model_components), ) ) reviews = sorted(map(Review.from_dict, review_metadata.values())) @@ -161,7 +115,7 @@ def from_v3_dict(result: object) -> "Result": ) predictions.extend( map( - partial(prediction.from_v3_dict, document, model, review), + partial(prediction.from_dict, document, model, review), model_predictions, ) ) @@ -188,7 +142,7 @@ def from_v3_dict(result: object) -> "Result": predictions.extend( map( - partial(prediction.from_v3_dict, document, model, review), + partial(prediction.from_dict, document, model, review), component_predictions, ) ) diff --git a/tests/data/results/2910_v1_unreviewed.json b/tests/data/results/2910_v1_unreviewed.json deleted file mode 100644 index 3e7fc9e..0000000 --- a/tests/data/results/2910_v1_unreviewed.json +++ /dev/null @@ -1,364 +0,0 @@ -{ - "file_version": 1, - "submission_id": 2910, - "etl_output": "indico-file:///storage/submission/113/2910/2919/etl_output.json", - "results": { - "document": { - "results": { - "Tax Classification": { - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - }, - "label": "1040" - }, - "1040 Form Extraction": [ - { - "start": null, - "end": null, - "label": "Filing Status: Single", - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "field_id": 691, - "top": 782, - "bottom": 813, - "left": 400, - "right": 434, - "page_num": 0, - "checked": true, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": true - }, - "formatted": "Checked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": null, - "end": null, - "label": "Filing Status: Married", - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "field_id": 692, - "top": 828, - "bottom": 862, - "left": 400, - "right": 434, - "page_num": 0, - "checked": false, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": false - }, - "formatted": "Unchecked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 6433, - "end": 6441, - "label": "Signature", - "confidence": { - "Signature": 0.620139473705776 - }, - "field_id": 693, - "page_num": 1, - "top": 1805, - "bottom": 1925, - "left": 357, - "right": 1071, - "type": "signature", - "text": "John Doe", - "signed": true, - "normalized": { - "text": "John Doe", - "start": 6433, - "end": 6441, - "structured": { - "signed": true - }, - "formatted": "Signed", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 6442, - "end": 6452, - "label": "Date", - "confidence": { - "Date": 1.0 - }, - "field_id": 694, - "page_num": 1, - "top": 1805, - "bottom": 1924, - "left": 1072, - "right": 1269, - "type": "text", - "text": "2024-04-15", - "normalized": { - "text": "2024-04-15", - "start": 6442, - "end": 6452, - "structured": { - "day": 15, - "month": 4, - "year": 2024 - }, - "formatted": "April 15, 2024", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ], - "1040 Document Extraction": [ - { - "start": 352, - "end": 356, - "label": "First Name", - "confidence": { - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: Relationship": 5.558660731708187e-08, - "First Name": 0.9999988079071045, - "Last Name": 4.0229687670034764e-07 - }, - "field_id": 686, - "page_num": 0, - "text": "John", - "normalized": { - "text": "John", - "start": 352, - "end": 356, - "structured": null, - "formatted": "John", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 357, - "end": 360, - "label": "Last Name", - "confidence": { - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: Relationship": 1.5769572314638935e-07, - "First Name": 3.913502268915181e-07, - "Last Name": 0.9999991655349731 - }, - "field_id": 687, - "page_num": 0, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 357, - "end": 360, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 2011, - "end": 2015, - "label": "Dependent: First Name", - "confidence": { - "Dependent: First Name": 0.9999992847442627, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: Relationship": 1.606294404155051e-07, - "First Name": 9.299924386141356e-08, - "Last Name": 1.4796071923228737e-07 - }, - "field_id": 688, - "page_num": 0, - "text": "Jane", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Jane", - "start": 2011, - "end": 2015, - "structured": null, - "formatted": "Jane", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 2016, - "end": 2019, - "label": "Dependent: Last Name", - "confidence": { - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: Relationship": 4.189759295059048e-08, - "First Name": 6.380826533813888e-08, - "Last Name": 1.2290360018596402e-07 - }, - "field_id": 689, - "page_num": 0, - "text": "Doe", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Doe", - "start": 2016, - "end": 2019, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 2020, - "end": 2028, - "label": "Dependent: Relationship", - "confidence": { - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: Relationship": 0.9999996423721313, - "First Name": 5.3535529787041014e-08, - "Last Name": 7.563556891909684e-08 - }, - "field_id": 690, - "page_num": 0, - "text": "Daughter", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Daughter", - "start": 2020, - "end": 2028, - "structured": null, - "formatted": "Daughter", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 6438, - "end": 6441, - "label": "Last Name", - "confidence": { - "Dependent: First Name": 0.00020139692060183734, - "Dependent: Last Name": 0.10477288067340851, - "Dependent: Relationship": 8.520398841938004e-05, - "First Name": 8.379091741517186e-05, - "Last Name": 0.44778338074684143 - }, - "field_id": 687, - "page_num": 1, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 6438, - "end": 6441, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ] - }, - "rejected": { - "Tax Classification": [], - "1040 Form Extraction": [], - "1040 Document Extraction": [] - } - } - } -} diff --git a/tests/data/results/2911_v1_accepted.json b/tests/data/results/2911_v1_accepted.json deleted file mode 100644 index 8f0724a..0000000 --- a/tests/data/results/2911_v1_accepted.json +++ /dev/null @@ -1,1353 +0,0 @@ -{ - "file_version": 1, - "submission_id": 2911, - "etl_output": "indico-file:///storage/submission/113/2911/2920/etl_output.json", - "results": { - "document": { - "results": { - "1040 Document Extraction": { - "pre_review": [ - { - "start": 352, - "end": 356, - "label": "First Name", - "confidence": { - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: Relationship": 5.558660731708187e-08, - "First Name": 0.9999988079071045, - "Last Name": 4.0229687670034764e-07 - }, - "field_id": 686, - "page_num": 0, - "text": "John", - "normalized": { - "text": "John", - "start": 352, - "end": 356, - "structured": null, - "formatted": "John", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 357, - "end": 360, - "label": "Last Name", - "confidence": { - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: Relationship": 1.5769572314638935e-07, - "First Name": 3.913502268915181e-07, - "Last Name": 0.9999991655349731 - }, - "field_id": 687, - "page_num": 0, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 357, - "end": 360, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 2011, - "end": 2015, - "label": "Dependent: First Name", - "confidence": { - "Dependent: First Name": 0.9999992847442627, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: Relationship": 1.606294404155051e-07, - "First Name": 9.299924386141356e-08, - "Last Name": 1.4796071923228737e-07 - }, - "field_id": 688, - "page_num": 0, - "text": "Jane", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Jane", - "start": 2011, - "end": 2015, - "structured": null, - "formatted": "Jane", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 2016, - "end": 2019, - "label": "Dependent: Last Name", - "confidence": { - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: Relationship": 4.189759295059048e-08, - "First Name": 6.380826533813888e-08, - "Last Name": 1.2290360018596402e-07 - }, - "field_id": 689, - "page_num": 0, - "text": "Doe", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Doe", - "start": 2016, - "end": 2019, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 2020, - "end": 2028, - "label": "Dependent: Relationship", - "confidence": { - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: Relationship": 0.9999996423721313, - "First Name": 5.3535529787041014e-08, - "Last Name": 7.563556891909684e-08 - }, - "field_id": 690, - "page_num": 0, - "text": "Daughter", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Daughter", - "start": 2020, - "end": 2028, - "structured": null, - "formatted": "Daughter", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 6438, - "end": 6441, - "label": "Last Name", - "confidence": { - "Dependent: First Name": 0.00020139692060183734, - "Dependent: Last Name": 0.10477288067340851, - "Dependent: Relationship": 8.520398841938004e-05, - "First Name": 8.379091741517186e-05, - "Last Name": 0.44778338074684143 - }, - "field_id": 687, - "page_num": 1, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 6438, - "end": 6441, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ], - "post_reviews": [ - [ - { - "end": 356, - "text": "John", - "label": "First Name", - "start": 352, - "field_id": 686, - "page_num": 0, - "confidence": { - "Last Name": 4.0229687670034764e-07, - "First Name": 0.9999988079071045, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Relationship": 5.558660731708187e-08 - }, - "normalized": { - "end": 356, - "text": "John", - "start": 352, - "status": "SUCCESS", - "formatted": "John", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 360, - "text": "Doe", - "label": "Last Name", - "start": 357, - "field_id": 687, - "page_num": 0, - "confidence": { - "Last Name": 0.9999991655349731, - "First Name": 3.913502268915181e-07, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Relationship": 1.5769572314638935e-07 - }, - "normalized": { - "end": 360, - "text": "Doe", - "start": 357, - "status": "SUCCESS", - "formatted": "Doe", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2015, - "text": "Jane", - "label": "Dependent: First Name", - "start": 2011, - "field_id": 688, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 1 - } - ], - "confidence": { - "Last Name": 1.4796071923228737e-07, - "First Name": 9.299924386141356e-08, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: First Name": 0.9999992847442627, - "Dependent: Relationship": 1.606294404155051e-07 - }, - "normalized": { - "end": 2015, - "text": "Jane", - "start": 2011, - "status": "SUCCESS", - "formatted": "Jane", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2019, - "text": "Doe", - "label": "Dependent: Last Name", - "start": 2016, - "field_id": 689, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 1 - } - ], - "confidence": { - "Last Name": 1.2290360018596402e-07, - "First Name": 6.380826533813888e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Relationship": 4.189759295059048e-08 - }, - "normalized": { - "end": 2019, - "text": "Doe", - "start": 2016, - "status": "SUCCESS", - "formatted": "Doe", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2028, - "text": "Daughter", - "label": "Dependent: Relationship", - "start": 2020, - "field_id": 690, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 1 - } - ], - "confidence": { - "Last Name": 7.563556891909684e-08, - "First Name": 5.3535529787041014e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Relationship": 0.9999996423721313 - }, - "normalized": { - "end": 2028, - "text": "Daughter", - "start": 2020, - "status": "SUCCESS", - "formatted": "Daughter", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - } - ], - [ - { - "end": 356, - "text": "John", - "label": "First Name", - "start": 352, - "field_id": 686, - "page_num": 0, - "confidence": { - "Last Name": 4.0229687670034764e-07, - "First Name": 0.9999988079071045, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Relationship": 5.558660731708187e-08 - }, - "normalized": { - "end": 356, - "text": "John", - "start": 352, - "status": "SUCCESS", - "formatted": "John", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 360, - "text": "Doe", - "label": "Last Name", - "start": 357, - "field_id": 687, - "page_num": 0, - "confidence": { - "Last Name": 0.9999991655349731, - "First Name": 3.913502268915181e-07, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Relationship": 1.5769572314638935e-07 - }, - "normalized": { - "end": 360, - "text": "Doe", - "start": 357, - "status": "SUCCESS", - "formatted": "Doe", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2015, - "text": "Jane", - "label": "Dependent: First Name", - "start": 2011, - "field_id": 688, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 2 - } - ], - "confidence": { - "Last Name": 1.4796071923228737e-07, - "First Name": 9.299924386141356e-08, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: First Name": 0.9999992847442627, - "Dependent: Relationship": 1.606294404155051e-07 - }, - "normalized": { - "end": 2015, - "text": "Jane", - "start": 2011, - "status": "SUCCESS", - "formatted": "Jane", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2019, - "text": "Doe", - "label": "Dependent: Last Name", - "start": 2016, - "field_id": 689, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 2 - } - ], - "confidence": { - "Last Name": 1.2290360018596402e-07, - "First Name": 6.380826533813888e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Relationship": 4.189759295059048e-08 - }, - "normalized": { - "end": 2019, - "text": "Doe", - "start": 2016, - "status": "SUCCESS", - "formatted": "Doe", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2028, - "text": "Daughter", - "label": "Dependent: Relationship", - "start": 2020, - "field_id": 690, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 2 - } - ], - "confidence": { - "Last Name": 7.563556891909684e-08, - "First Name": 5.3535529787041014e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Relationship": 0.9999996423721313 - }, - "normalized": { - "end": 2028, - "text": "Daughter", - "start": 2020, - "status": "SUCCESS", - "formatted": "Daughter", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 6441, - "text": "Doe", - "label": "Last Name", - "start": 6438, - "field_id": 687, - "page_num": 1, - "confidence": { - "Last Name": 0.44778338074684143, - "First Name": 8.379091741517186e-05, - "Dependent: Last Name": 0.10477288067340851, - "Dependent: First Name": 0.00020139692060183734, - "Dependent: Relationship": 8.520398841938004e-05 - }, - "normalized": { - "end": 6441, - "text": "Doe", - "start": 6438, - "status": "SUCCESS", - "formatted": "Doe", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - }, - "rejected": true - } - ] - ], - "final": [ - { - "end": 356, - "text": "John", - "label": "First Name", - "start": 352, - "field_id": 686, - "page_num": 0, - "confidence": { - "Last Name": 4.0229687670034764e-07, - "First Name": 0.9999988079071045, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Relationship": 5.558660731708187e-08 - }, - "normalized": { - "end": 356, - "text": "John", - "start": 352, - "status": "SUCCESS", - "formatted": "John", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 360, - "text": "Doe", - "label": "Last Name", - "start": 357, - "field_id": 687, - "page_num": 0, - "confidence": { - "Last Name": 0.9999991655349731, - "First Name": 3.913502268915181e-07, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Relationship": 1.5769572314638935e-07 - }, - "normalized": { - "end": 360, - "text": "Doe", - "start": 357, - "status": "SUCCESS", - "formatted": "Doe", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2015, - "text": "Jane", - "label": "Dependent: First Name", - "start": 2011, - "field_id": 688, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 1 - } - ], - "confidence": { - "Last Name": 1.4796071923228737e-07, - "First Name": 9.299924386141356e-08, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: First Name": 0.9999992847442627, - "Dependent: Relationship": 1.606294404155051e-07 - }, - "normalized": { - "end": 2015, - "text": "Jane", - "start": 2011, - "status": "SUCCESS", - "formatted": "Jane", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2019, - "text": "Doe", - "label": "Dependent: Last Name", - "start": 2016, - "field_id": 689, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 1 - } - ], - "confidence": { - "Last Name": 1.2290360018596402e-07, - "First Name": 6.380826533813888e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Relationship": 4.189759295059048e-08 - }, - "normalized": { - "end": 2019, - "text": "Doe", - "start": 2016, - "status": "SUCCESS", - "formatted": "Doe", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2028, - "text": "Daughter", - "label": "Dependent: Relationship", - "start": 2020, - "field_id": 690, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 1 - } - ], - "confidence": { - "Last Name": 7.563556891909684e-08, - "First Name": 5.3535529787041014e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Relationship": 0.9999996423721313 - }, - "normalized": { - "end": 2028, - "text": "Daughter", - "start": 2020, - "status": "SUCCESS", - "formatted": "Daughter", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - } - ] - }, - "1040 Form Extraction": { - "pre_review": [ - { - "start": null, - "end": null, - "label": "Filing Status: Single", - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "field_id": 691, - "top": 782, - "bottom": 813, - "left": 400, - "right": 434, - "page_num": 0, - "checked": true, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": true - }, - "formatted": "Checked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": null, - "end": null, - "label": "Filing Status: Married", - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "field_id": 692, - "top": 828, - "bottom": 862, - "left": 400, - "right": 434, - "page_num": 0, - "checked": false, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": false - }, - "formatted": "Unchecked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 6433, - "end": 6441, - "label": "Signature", - "confidence": { - "Signature": 0.620139473705776 - }, - "field_id": 693, - "page_num": 1, - "top": 1805, - "bottom": 1925, - "left": 357, - "right": 1071, - "type": "signature", - "text": "John Doe", - "signed": true, - "normalized": { - "text": "John Doe", - "start": 6433, - "end": 6441, - "structured": { - "signed": true - }, - "formatted": "Signed", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 6442, - "end": 6452, - "label": "Date", - "confidence": { - "Date": 1.0 - }, - "field_id": 694, - "page_num": 1, - "top": 1805, - "bottom": 1924, - "left": 1072, - "right": 1269, - "type": "text", - "text": "2024-04-15", - "normalized": { - "text": "2024-04-15", - "start": 6442, - "end": 6452, - "structured": { - "day": 15, - "month": 4, - "year": 2024 - }, - "formatted": "April 15, 2024", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ], - "post_reviews": [ - [ - { - "end": 6452, - "top": 1805, - "left": 1072, - "text": "2024-04-15", - "type": "text", - "label": "Date", - "right": 1269, - "start": 6442, - "bottom": 1924, - "field_id": 694, - "page_num": 1, - "confidence": { - "Date": 1.0 - }, - "normalized": { - "text": "2024-04-15", - "status": "SUCCESS", - "formatted": "April 15, 2024", - "structured": { - "day": 15, - "year": 2024, - "month": 4 - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 6441, - "top": 1805, - "left": 357, - "text": "John Doe", - "type": "signature", - "label": "Signature", - "right": 1071, - "start": 6433, - "bottom": 1925, - "field_id": 693, - "page_num": 1, - "confidence": { - "Signature": 0.620139473705776 - }, - "normalized": { - "text": "John Doe", - "status": "SUCCESS", - "formatted": "Signed", - "structured": { - "signed": true - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "top": 828, - "left": 400, - "text": "", - "type": "checkbox", - "label": "Filing Status: Married", - "right": 434, - "bottom": 862, - "field_id": 692, - "page_num": 0, - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "normalized": { - "text": "", - "status": "SUCCESS", - "formatted": "Unchecked", - "structured": { - "checked": false - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "top": 782, - "left": 400, - "text": "", - "type": "checkbox", - "label": "Filing Status: Single", - "right": 434, - "bottom": 813, - "field_id": 691, - "page_num": 0, - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "normalized": { - "text": "", - "status": "SUCCESS", - "formatted": "Checked", - "structured": { - "checked": true - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - } - ], - [ - { - "end": null, - "top": 782, - "left": 400, - "type": "checkbox", - "label": "Filing Status: Single", - "right": 434, - "start": null, - "bottom": 813, - "field_id": 691, - "page_num": 0, - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "normalized": { - "end": null, - "text": "", - "start": null, - "status": "SUCCESS", - "formatted": "Checked", - "structured": { - "checked": true - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": null, - "top": 828, - "left": 400, - "type": "checkbox", - "label": "Filing Status: Married", - "right": 434, - "start": null, - "bottom": 862, - "field_id": 692, - "page_num": 0, - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "normalized": { - "end": null, - "text": "", - "start": null, - "status": "SUCCESS", - "formatted": "Unchecked", - "structured": { - "checked": false - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 6441, - "top": 1805, - "left": 357, - "text": "John Doe", - "type": "signature", - "label": "Signature", - "right": 1071, - "start": 6433, - "bottom": 1925, - "field_id": 693, - "page_num": 1, - "confidence": { - "Signature": 0.620139473705776 - }, - "normalized": { - "end": 6441, - "text": "John Doe", - "start": 6433, - "status": "SUCCESS", - "formatted": "Signed", - "structured": { - "signed": true - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 6452, - "top": 1805, - "left": 1072, - "text": "2024-04-15", - "type": "text", - "label": "Date", - "right": 1269, - "start": 6442, - "bottom": 1924, - "field_id": 694, - "page_num": 1, - "confidence": { - "Date": 1.0 - }, - "normalized": { - "end": 6452, - "text": "2024-04-15", - "start": 6442, - "status": "SUCCESS", - "formatted": "April 15, 2024", - "structured": { - "day": 15, - "year": 2024, - "month": 4 - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - } - ] - ], - "final": [ - { - "end": 6452, - "top": 1805, - "left": 1072, - "text": "2024-04-15", - "type": "text", - "label": "Date", - "right": 1269, - "start": 6442, - "bottom": 1924, - "field_id": 694, - "page_num": 1, - "confidence": { - "Date": 1.0 - }, - "normalized": { - "text": "2024-04-15", - "status": "SUCCESS", - "formatted": "April 15, 2024", - "structured": { - "day": 15, - "year": 2024, - "month": 4 - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 6441, - "top": 1805, - "left": 357, - "text": "John Doe", - "type": "signature", - "label": "Signature", - "right": 1071, - "start": 6433, - "bottom": 1925, - "field_id": 693, - "page_num": 1, - "confidence": { - "Signature": 0.620139473705776 - }, - "normalized": { - "text": "John Doe", - "status": "SUCCESS", - "formatted": "Signed", - "structured": { - "signed": true - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "top": 828, - "left": 400, - "text": "", - "type": "checkbox", - "label": "Filing Status: Married", - "right": 434, - "bottom": 862, - "field_id": 692, - "page_num": 0, - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "normalized": { - "text": "", - "status": "SUCCESS", - "formatted": "Unchecked", - "structured": { - "checked": false - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "top": 782, - "left": 400, - "text": "", - "type": "checkbox", - "label": "Filing Status: Single", - "right": 434, - "bottom": 813, - "field_id": 691, - "page_num": 0, - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "normalized": { - "text": "", - "status": "SUCCESS", - "formatted": "Checked", - "structured": { - "checked": true - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - } - ] - }, - "Tax Classification": { - "pre_review": { - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - }, - "label": "1040" - }, - "post_reviews": [ - { - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - }, - "label": "1040" - }, - { - "label": "1040", - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - } - } - ], - "final": { - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - }, - "label": "1040" - } - } - }, - "rejected": { - "1040 Document Extraction": [], - "1040 Form Extraction": [], - "Tax Classification": [] - } - } - }, - "reviews_meta": [ - { - "review_id": 1304, - "reviewer_id": 5, - "review_notes": null, - "review_rejected": false, - "review_type": "manual" - }, - { - "review_id": 1302, - "reviewer_id": 5, - "review_notes": null, - "review_rejected": false, - "review_type": "auto" - } - ], - "review_id": 1304, - "reviewer_id": 5, - "review_notes": null, - "review_rejected": false, - "review_type": "manual" -} diff --git a/tests/data/results/2912_v1_rejected.json b/tests/data/results/2912_v1_rejected.json deleted file mode 100644 index ca271b3..0000000 --- a/tests/data/results/2912_v1_rejected.json +++ /dev/null @@ -1,749 +0,0 @@ -{ - "file_version": 1, - "submission_id": 2912, - "etl_output": "indico-file:///storage/submission/113/2912/2921/etl_output.json", - "results": { - "document": { - "results": { - "1040 Form Extraction": { - "pre_review": [ - { - "start": null, - "end": null, - "label": "Filing Status: Single", - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "field_id": 691, - "top": 782, - "bottom": 813, - "left": 400, - "right": 434, - "page_num": 0, - "checked": true, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": true - }, - "formatted": "Checked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": null, - "end": null, - "label": "Filing Status: Married", - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "field_id": 692, - "top": 828, - "bottom": 862, - "left": 400, - "right": 434, - "page_num": 0, - "checked": false, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": false - }, - "formatted": "Unchecked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 6433, - "end": 6441, - "label": "Signature", - "confidence": { - "Signature": 0.620139473705776 - }, - "field_id": 693, - "page_num": 1, - "top": 1805, - "bottom": 1925, - "left": 357, - "right": 1071, - "type": "signature", - "text": "John Doe", - "signed": true, - "normalized": { - "text": "John Doe", - "start": 6433, - "end": 6441, - "structured": { - "signed": true - }, - "formatted": "Signed", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 6442, - "end": 6452, - "label": "Date", - "confidence": { - "Date": 1.0 - }, - "field_id": 694, - "page_num": 1, - "top": 1805, - "bottom": 1924, - "left": 1072, - "right": 1269, - "type": "text", - "text": "2024-04-15", - "normalized": { - "text": "2024-04-15", - "start": 6442, - "end": 6452, - "structured": { - "day": 15, - "month": 4, - "year": 2024 - }, - "formatted": "April 15, 2024", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ], - "post_reviews": [ - null, - [ - { - "end": null, - "top": 782, - "left": 400, - "type": "checkbox", - "label": "Filing Status: Single", - "right": 434, - "start": null, - "bottom": 813, - "field_id": 691, - "page_num": 0, - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "normalized": { - "end": null, - "text": "", - "start": null, - "status": "SUCCESS", - "formatted": "Checked", - "structured": { - "checked": true - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": null, - "top": 828, - "left": 400, - "type": "checkbox", - "label": "Filing Status: Married", - "right": 434, - "start": null, - "bottom": 862, - "field_id": 692, - "page_num": 0, - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "normalized": { - "end": null, - "text": "", - "start": null, - "status": "SUCCESS", - "formatted": "Unchecked", - "structured": { - "checked": false - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 6441, - "top": 1805, - "left": 357, - "text": "John Doe", - "type": "signature", - "label": "Signature", - "right": 1071, - "start": 6433, - "bottom": 1925, - "field_id": 693, - "page_num": 1, - "confidence": { - "Signature": 0.620139473705776 - }, - "normalized": { - "end": 6441, - "text": "John Doe", - "start": 6433, - "status": "SUCCESS", - "formatted": "Signed", - "structured": { - "signed": true - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 6452, - "top": 1805, - "left": 1072, - "text": "2024-04-15", - "type": "text", - "label": "Date", - "right": 1269, - "start": 6442, - "bottom": 1924, - "field_id": 694, - "page_num": 1, - "confidence": { - "Date": 1.0 - }, - "normalized": { - "end": 6452, - "text": "2024-04-15", - "start": 6442, - "status": "SUCCESS", - "formatted": "April 15, 2024", - "structured": { - "day": 15, - "year": 2024, - "month": 4 - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - } - ] - ], - "final": null - }, - "Tax Classification": { - "pre_review": { - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - }, - "label": "1040" - }, - "post_reviews": [ - null, - { - "label": "1040", - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - } - } - ], - "final": null - }, - "1040 Document Extraction": { - "pre_review": [ - { - "start": 352, - "end": 356, - "label": "First Name", - "confidence": { - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: Relationship": 5.558660731708187e-08, - "First Name": 0.9999988079071045, - "Last Name": 4.0229687670034764e-07 - }, - "field_id": 686, - "page_num": 0, - "text": "John", - "normalized": { - "text": "John", - "start": 352, - "end": 356, - "structured": null, - "formatted": "John", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 357, - "end": 360, - "label": "Last Name", - "confidence": { - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: Relationship": 1.5769572314638935e-07, - "First Name": 3.913502268915181e-07, - "Last Name": 0.9999991655349731 - }, - "field_id": 687, - "page_num": 0, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 357, - "end": 360, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 2011, - "end": 2015, - "label": "Dependent: First Name", - "confidence": { - "Dependent: First Name": 0.9999992847442627, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: Relationship": 1.606294404155051e-07, - "First Name": 9.299924386141356e-08, - "Last Name": 1.4796071923228737e-07 - }, - "field_id": 688, - "page_num": 0, - "text": "Jane", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Jane", - "start": 2011, - "end": 2015, - "structured": null, - "formatted": "Jane", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 2016, - "end": 2019, - "label": "Dependent: Last Name", - "confidence": { - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: Relationship": 4.189759295059048e-08, - "First Name": 6.380826533813888e-08, - "Last Name": 1.2290360018596402e-07 - }, - "field_id": 689, - "page_num": 0, - "text": "Doe", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Doe", - "start": 2016, - "end": 2019, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 2020, - "end": 2028, - "label": "Dependent: Relationship", - "confidence": { - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: Relationship": 0.9999996423721313, - "First Name": 5.3535529787041014e-08, - "Last Name": 7.563556891909684e-08 - }, - "field_id": 690, - "page_num": 0, - "text": "Daughter", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Daughter", - "start": 2020, - "end": 2028, - "structured": null, - "formatted": "Daughter", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "start": 6438, - "end": 6441, - "label": "Last Name", - "confidence": { - "Dependent: First Name": 0.00020139692060183734, - "Dependent: Last Name": 0.10477288067340851, - "Dependent: Relationship": 8.520398841938004e-05, - "First Name": 8.379091741517186e-05, - "Last Name": 0.44778338074684143 - }, - "field_id": 687, - "page_num": 1, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 6438, - "end": 6441, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ], - "post_reviews": [ - null, - [ - { - "end": 356, - "text": "John", - "label": "First Name", - "start": 352, - "field_id": 686, - "page_num": 0, - "confidence": { - "Last Name": 4.0229687670034764e-07, - "First Name": 0.9999988079071045, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Relationship": 5.558660731708187e-08 - }, - "normalized": { - "end": 356, - "text": "John", - "start": 352, - "status": "SUCCESS", - "formatted": "John", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 360, - "text": "Doe", - "label": "Last Name", - "start": 357, - "field_id": 687, - "page_num": 0, - "confidence": { - "Last Name": 0.9999991655349731, - "First Name": 3.913502268915181e-07, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Relationship": 1.5769572314638935e-07 - }, - "normalized": { - "end": 360, - "text": "Doe", - "start": 357, - "status": "SUCCESS", - "formatted": "Doe", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2015, - "text": "Jane", - "label": "Dependent: First Name", - "start": 2011, - "field_id": 688, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 2 - } - ], - "confidence": { - "Last Name": 1.4796071923228737e-07, - "First Name": 9.299924386141356e-08, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: First Name": 0.9999992847442627, - "Dependent: Relationship": 1.606294404155051e-07 - }, - "normalized": { - "end": 2015, - "text": "Jane", - "start": 2011, - "status": "SUCCESS", - "formatted": "Jane", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2019, - "text": "Doe", - "label": "Dependent: Last Name", - "start": 2016, - "field_id": 689, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 2 - } - ], - "confidence": { - "Last Name": 1.2290360018596402e-07, - "First Name": 6.380826533813888e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Relationship": 4.189759295059048e-08 - }, - "normalized": { - "end": 2019, - "text": "Doe", - "start": 2016, - "status": "SUCCESS", - "formatted": "Doe", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 2028, - "text": "Daughter", - "label": "Dependent: Relationship", - "start": 2020, - "field_id": 690, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 2 - } - ], - "confidence": { - "Last Name": 7.563556891909684e-08, - "First Name": 5.3535529787041014e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Relationship": 0.9999996423721313 - }, - "normalized": { - "end": 2028, - "text": "Daughter", - "start": 2020, - "status": "SUCCESS", - "formatted": "Daughter", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "end": 6441, - "text": "Doe", - "label": "Last Name", - "start": 6438, - "field_id": 687, - "page_num": 1, - "confidence": { - "Last Name": 0.44778338074684143, - "First Name": 8.379091741517186e-05, - "Dependent: Last Name": 0.10477288067340851, - "Dependent: First Name": 0.00020139692060183734, - "Dependent: Relationship": 8.520398841938004e-05 - }, - "normalized": { - "end": 6441, - "text": "Doe", - "start": 6438, - "status": "SUCCESS", - "formatted": "Doe", - "structured": null, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - }, - "rejected": true - } - ] - ], - "final": null - } - }, - "rejected": { - "1040 Form Extraction": [], - "Tax Classification": [], - "1040 Document Extraction": [] - } - } - }, - "reviews_meta": [ - { - "review_id": 1305, - "reviewer_id": 5, - "review_notes": "Reason for rejection", - "review_rejected": true, - "review_type": "manual" - }, - { - "review_id": 1303, - "reviewer_id": 5, - "review_notes": null, - "review_rejected": false, - "review_type": "auto" - } - ], - "review_id": 1305, - "reviewer_id": 5, - "review_notes": "Reason for rejection", - "review_rejected": true, - "review_type": "manual" -} diff --git a/tests/results/test_document.py b/tests/results/test_document.py index 6e71855..75c5ca5 100644 --- a/tests/results/test_document.py +++ b/tests/results/test_document.py @@ -1,29 +1,7 @@ from indico_toolkit import results -def test_empy_v1_sections() -> None: - result = results.load( - """ - { - "file_version": 1, - "submission_id": 0, - "etl_output": "", - "results": { - "document": { - "results": { - "Empty Model Section": [] - } - } - } - } - """ - ) - assert result.predictions.to_changes(result) == { - "Empty Model Section": [], - } - - -def test_empy_v3_sections() -> None: +def test_empty_sections() -> None: result = results.load( """ { From 052c37f94d08465a619d80c88dc6974db4748dab Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Fri, 6 Jun 2025 10:02:46 -0500 Subject: [PATCH 02/30] Remove v1 code paths and load tables automatically when available --- indico_toolkit/etloutput/__init__.py | 136 +++++---------------------- indico_toolkit/polling/autoreview.py | 2 +- 2 files changed, 24 insertions(+), 114 deletions(-) diff --git a/indico_toolkit/etloutput/__init__.py b/indico_toolkit/etloutput/__init__.py index 4ee328b..0b006a6 100644 --- a/indico_toolkit/etloutput/__init__.py +++ b/indico_toolkit/etloutput/__init__.py @@ -38,7 +38,7 @@ def load( reader: "Callable[..., Any]", text: bool = True, tokens: bool = True, - tables: bool = False, + tables: bool = True, ) -> EtlOutput: """ Load `etl_output_uri` as an ETL Output dataclass. A `reader` function must be @@ -56,12 +56,24 @@ def load( ``` """ etl_output = reader(etl_output_uri) - tables_uri = etl_output_uri.replace("etl_output.json", "tables.json") + pages = get(etl_output, list, "pages") + + if text and has(pages, str, 0, "text"): + text_by_page = map(lambda page: reader(get(page, str, "text")), pages) + else: + text_by_page = () # type: ignore[assignment] + + if tokens and has(pages, str, 0, "tokens"): + tokens_by_page = map(lambda page: reader(get(page, str, "tokens")), pages) + else: + tokens_by_page = () # type: ignore[assignment] - if has(etl_output, str, "pages", 0, "page_info"): - return _load_v1(etl_output, tables_uri, reader, text, tokens, tables) + if tables and has(pages, str, 0, "tables"): + tables_by_page = map(lambda page: reader(get(page, str, "tables")), pages) else: - return _load_v3(etl_output, tables_uri, reader, text, tokens, tables) + tables_by_page = () # type: ignore[assignment] + + return EtlOutput.from_pages(text_by_page, tokens_by_page, tables_by_page) async def load_async( @@ -70,7 +82,7 @@ async def load_async( reader: "Callable[..., Awaitable[Any]]", text: bool = True, tokens: bool = True, - tables: bool = False, + tables: bool = True, ) -> EtlOutput: """ Load `etl_output_uri` as an ETL Output dataclass. A `reader` coroutine must be @@ -88,123 +100,21 @@ async def load_async( ``` """ etl_output = await reader(etl_output_uri) - tables_uri = etl_output_uri.replace("etl_output.json", "tables.json") - - if has(etl_output, str, "pages", 0, "page_info"): - return await _load_v1_async( - etl_output, tables_uri, reader, text, tokens, tables - ) - else: - return await _load_v3_async( - etl_output, tables_uri, reader, text, tokens, tables - ) - - -def _load_v1( - etl_output: "Any", - tables_uri: str, - reader: "Callable[..., Any]", - text: bool, - tokens: bool, - tables: bool, -) -> EtlOutput: - if text or tokens: - pages = tuple( - reader(get(page, str, "page_info")) - for page in get(etl_output, list, "pages") - ) - text_by_page = map(lambda page: get(page, str, "pages", 0, "text"), pages) - tokens_by_page = map(lambda page: get(page, list, "tokens"), pages) - else: - text_by_page = () # type: ignore[assignment] - tokens_by_page = () # type: ignore[assignment] - - if tables: - tables_by_page = reader(tables_uri) - else: - tables_by_page = () - - return EtlOutput.from_pages(text_by_page, tokens_by_page, tables_by_page) - - -def _load_v3( - etl_output: "Any", - tables_uri: str, - reader: "Callable[..., Any]", - text: bool, - tokens: bool, - tables: bool, -) -> EtlOutput: - pages = get(etl_output, list, "pages") - - if text or tokens: - text_by_page = map(lambda page: reader(get(page, str, "text")), pages) - else: - text_by_page = () # type: ignore[assignment] - - if tokens: - tokens_by_page = map(lambda page: reader(get(page, str, "tokens")), pages) - else: - tokens_by_page = () # type: ignore[assignment] - - if tables: - tables_by_page = reader(tables_uri) - else: - tables_by_page = () - - return EtlOutput.from_pages(text_by_page, tokens_by_page, tables_by_page) - - -async def _load_v1_async( - etl_output: "Any", - tables_uri: str, - reader: "Callable[..., Awaitable[Any]]", - text: bool, - tokens: bool, - tables: bool, -) -> EtlOutput: - if text or tokens: - pages = [ - await reader(get(page, str, "page_info")) - for page in get(etl_output, list, "pages") - ] - text_by_page = map(lambda page: get(page, str, "pages", 0, "text"), pages) - tokens_by_page = map(lambda page: get(page, list, "tokens"), pages) - else: - text_by_page = () # type: ignore[assignment] - tokens_by_page = () # type: ignore[assignment] - - if tables: - tables_by_page = await reader(tables_uri) - else: - tables_by_page = () - - return EtlOutput.from_pages(text_by_page, tokens_by_page, tables_by_page) - - -async def _load_v3_async( - etl_output: "Any", - tables_uri: str, - reader: "Callable[..., Awaitable[Any]]", - text: bool, - tokens: bool, - tables: bool, -) -> EtlOutput: pages = get(etl_output, list, "pages") - if text or tokens: + if text and has(pages, str, 0, "text"): text_by_page = [await reader(get(page, str, "text")) for page in pages] else: text_by_page = () # type: ignore[assignment] - if tokens: + if tokens and has(pages, str, 0, "tokens"): tokens_by_page = [await reader(get(page, str, "tokens")) for page in pages] else: tokens_by_page = () # type: ignore[assignment] - if tables: - tables_by_page = await reader(tables_uri) + if tables and has(pages, str, 0, "tables"): + tables_by_page = [await reader(get(page, str, "tables")) for page in pages] else: - tables_by_page = () + tables_by_page = () # type: ignore[assignment] return EtlOutput.from_pages(text_by_page, tokens_by_page, tables_by_page) diff --git a/indico_toolkit/polling/autoreview.py b/indico_toolkit/polling/autoreview.py index 460d077..8656110 100644 --- a/indico_toolkit/polling/autoreview.py +++ b/indico_toolkit/polling/autoreview.py @@ -53,7 +53,7 @@ def __init__( # type: ignore[no-any-unimported] load_etl_output: bool = True, load_text: bool = True, load_tokens: bool = True, - load_tables: bool = False, + load_tables: bool = True, retry_count: int = 4, retry_wait: float = 1, retry_backoff: float = 4, From 3e9403b23a2185b32aff1fafb961a61c26aa9b2a Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Fri, 6 Jun 2025 10:04:46 -0500 Subject: [PATCH 03/30] Update unit tests with 7.2 ETL Output JSON files --- .../4288/107455/101154/etl_output.json | 54 - .../4288/107455/101154/page_info_0.json | 2968 ------------- .../4288/107455/101154/page_info_1.json | 1050 ----- .../4288/107455/101154/page_info_2.json | 2324 ---------- .../4288/107455/101154/page_info_3.json | 2128 --------- .../4288/107455/101154/page_info_4.json | 1162 ----- .../4288/107455/101154/page_info_5.json | 3724 ---------------- .../4288/107455/submission_107455_result.json | 15 - .../4288/107456/101155/etl_output.json | 133 - .../4288/107456/101155/page_0_text.txt | 47 - .../4288/107456/101155/page_0_tokens.json | 2956 ------------- .../4288/107456/101155/page_1_text.txt | 29 - .../4288/107456/101155/page_1_tokens.json | 1038 ----- .../4288/107456/101155/page_2_text.txt | 54 - .../4288/107456/101155/page_2_tokens.json | 2312 ---------- .../4288/107456/101155/page_3_text.txt | 49 - .../4288/107456/101155/page_3_tokens.json | 2116 --------- .../4288/107456/101155/page_4_text.txt | 33 - .../4288/107456/101155/page_4_tokens.json | 1150 ----- .../4288/107456/101155/page_5_text.txt | 42 - .../4288/107456/101155/page_5_tokens.json | 3712 ---------------- .../4288/107456/submission_107456_result.json | 39 - .../4289/107457/101156/etl_output.json | 54 - .../4289/107457/101156/page_info_0.json | 2982 ------------- .../4289/107457/101156/page_info_1.json | 1134 ----- .../4289/107457/101156/page_info_2.json | 2464 ----------- .../4289/107457/101156/page_info_3.json | 2156 ---------- .../4289/107457/101156/page_info_4.json | 1232 ------ .../4289/107457/101156/page_info_5.json | 3808 ----------------- .../etloutput/4289/107457/101156/tables.json | 3302 -------------- .../4289/107457/submission_107457_result.json | 15 - .../4289/107458/101157/etl_output.json | 133 - .../4289/107458/101157/page_0_text.txt | 40 - .../4289/107458/101157/page_0_tokens.json | 2970 ------------- .../4289/107458/101157/page_1_text.txt | 20 - .../4289/107458/101157/page_1_tokens.json | 1122 ----- .../4289/107458/101157/page_2_text.txt | 25 - .../4289/107458/101157/page_2_tokens.json | 2452 ----------- .../4289/107458/101157/page_3_text.txt | 40 - .../4289/107458/101157/page_3_tokens.json | 2144 ---------- .../4289/107458/101157/page_4_text.txt | 22 - .../4289/107458/101157/page_4_tokens.json | 1220 ------ .../4289/107458/101157/page_5_text.txt | 27 - .../4289/107458/101157/page_5_tokens.json | 3796 ---------------- .../etloutput/4289/107458/101157/tables.json | 3302 -------------- .../4289/107458/submission_107458_result.json | 39 - .../4723/111922/110237/etl_output.json | 1 + .../4723/111922/110237/page_0_text.txt | 60 + .../4723/111922/110237/page_0_tokens.json | 1 + .../4723/111922/110237/page_1_text.txt | 62 + .../4723/111922/110237/page_1_tokens.json | 1 + .../4724/111923/110238/etl_output.json | 1 + .../4724/111923/110238/page_0_text.txt | 61 + .../4724/111923/110238/page_0_tokens.json | 1 + .../4724/111923/110238/page_1_text.txt | 62 + .../4724/111923/110238/page_1_tokens.json | 1 + .../4725/111924/110239/etl_output.json | 1 + .../4725/111924/110239/page_0_text.txt | 37 + .../4725/111924/110239/page_0_tokens.json | 1 + .../4725/111924/110239/page_1_text.txt | 35 + .../4725/111924/110239/page_1_tokens.json | 1 + .../4725/111924/110239/tables_0.json | 1 + .../4725/111924/110239/tables_1.json | 1 + tests/etloutput/test_files.py | 18 +- 64 files changed, 335 insertions(+), 61645 deletions(-) delete mode 100644 tests/data/etloutput/4288/107455/101154/etl_output.json delete mode 100644 tests/data/etloutput/4288/107455/101154/page_info_0.json delete mode 100644 tests/data/etloutput/4288/107455/101154/page_info_1.json delete mode 100644 tests/data/etloutput/4288/107455/101154/page_info_2.json delete mode 100644 tests/data/etloutput/4288/107455/101154/page_info_3.json delete mode 100644 tests/data/etloutput/4288/107455/101154/page_info_4.json delete mode 100644 tests/data/etloutput/4288/107455/101154/page_info_5.json delete mode 100644 tests/data/etloutput/4288/107455/submission_107455_result.json delete mode 100644 tests/data/etloutput/4288/107456/101155/etl_output.json delete mode 100644 tests/data/etloutput/4288/107456/101155/page_0_text.txt delete mode 100644 tests/data/etloutput/4288/107456/101155/page_0_tokens.json delete mode 100644 tests/data/etloutput/4288/107456/101155/page_1_text.txt delete mode 100644 tests/data/etloutput/4288/107456/101155/page_1_tokens.json delete mode 100644 tests/data/etloutput/4288/107456/101155/page_2_text.txt delete mode 100644 tests/data/etloutput/4288/107456/101155/page_2_tokens.json delete mode 100644 tests/data/etloutput/4288/107456/101155/page_3_text.txt delete mode 100644 tests/data/etloutput/4288/107456/101155/page_3_tokens.json delete mode 100644 tests/data/etloutput/4288/107456/101155/page_4_text.txt delete mode 100644 tests/data/etloutput/4288/107456/101155/page_4_tokens.json delete mode 100644 tests/data/etloutput/4288/107456/101155/page_5_text.txt delete mode 100644 tests/data/etloutput/4288/107456/101155/page_5_tokens.json delete mode 100644 tests/data/etloutput/4288/107456/submission_107456_result.json delete mode 100644 tests/data/etloutput/4289/107457/101156/etl_output.json delete mode 100644 tests/data/etloutput/4289/107457/101156/page_info_0.json delete mode 100644 tests/data/etloutput/4289/107457/101156/page_info_1.json delete mode 100644 tests/data/etloutput/4289/107457/101156/page_info_2.json delete mode 100644 tests/data/etloutput/4289/107457/101156/page_info_3.json delete mode 100644 tests/data/etloutput/4289/107457/101156/page_info_4.json delete mode 100644 tests/data/etloutput/4289/107457/101156/page_info_5.json delete mode 100644 tests/data/etloutput/4289/107457/101156/tables.json delete mode 100644 tests/data/etloutput/4289/107457/submission_107457_result.json delete mode 100644 tests/data/etloutput/4289/107458/101157/etl_output.json delete mode 100644 tests/data/etloutput/4289/107458/101157/page_0_text.txt delete mode 100644 tests/data/etloutput/4289/107458/101157/page_0_tokens.json delete mode 100644 tests/data/etloutput/4289/107458/101157/page_1_text.txt delete mode 100644 tests/data/etloutput/4289/107458/101157/page_1_tokens.json delete mode 100644 tests/data/etloutput/4289/107458/101157/page_2_text.txt delete mode 100644 tests/data/etloutput/4289/107458/101157/page_2_tokens.json delete mode 100644 tests/data/etloutput/4289/107458/101157/page_3_text.txt delete mode 100644 tests/data/etloutput/4289/107458/101157/page_3_tokens.json delete mode 100644 tests/data/etloutput/4289/107458/101157/page_4_text.txt delete mode 100644 tests/data/etloutput/4289/107458/101157/page_4_tokens.json delete mode 100644 tests/data/etloutput/4289/107458/101157/page_5_text.txt delete mode 100644 tests/data/etloutput/4289/107458/101157/page_5_tokens.json delete mode 100644 tests/data/etloutput/4289/107458/101157/tables.json delete mode 100644 tests/data/etloutput/4289/107458/submission_107458_result.json create mode 100644 tests/data/etloutput/4723/111922/110237/etl_output.json create mode 100644 tests/data/etloutput/4723/111922/110237/page_0_text.txt create mode 100644 tests/data/etloutput/4723/111922/110237/page_0_tokens.json create mode 100644 tests/data/etloutput/4723/111922/110237/page_1_text.txt create mode 100644 tests/data/etloutput/4723/111922/110237/page_1_tokens.json create mode 100644 tests/data/etloutput/4724/111923/110238/etl_output.json create mode 100644 tests/data/etloutput/4724/111923/110238/page_0_text.txt create mode 100644 tests/data/etloutput/4724/111923/110238/page_0_tokens.json create mode 100644 tests/data/etloutput/4724/111923/110238/page_1_text.txt create mode 100644 tests/data/etloutput/4724/111923/110238/page_1_tokens.json create mode 100644 tests/data/etloutput/4725/111924/110239/etl_output.json create mode 100644 tests/data/etloutput/4725/111924/110239/page_0_text.txt create mode 100644 tests/data/etloutput/4725/111924/110239/page_0_tokens.json create mode 100644 tests/data/etloutput/4725/111924/110239/page_1_text.txt create mode 100644 tests/data/etloutput/4725/111924/110239/page_1_tokens.json create mode 100644 tests/data/etloutput/4725/111924/110239/tables_0.json create mode 100644 tests/data/etloutput/4725/111924/110239/tables_1.json diff --git a/tests/data/etloutput/4288/107455/101154/etl_output.json b/tests/data/etloutput/4288/107455/101154/etl_output.json deleted file mode 100644 index 8e10bdb..0000000 --- a/tests/data/etloutput/4288/107455/101154/etl_output.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "pages": [ - { - "page_num": 0, - "image": "indico-file:///storage/submission/4288/107455/101154/original_page_0.png", - "thumbnail": "indico-file:///storage/submission/4288/107455/101154/original_thumbnail_0.png", - "doc_start_offset": 0, - "doc_end_offset": 1359, - "page_info": "indico-file:///storage/submission/4288/107455/101154/page_info_0.json" - }, - { - "page_num": 1, - "image": "indico-file:///storage/submission/4288/107455/101154/original_page_1.png", - "thumbnail": "indico-file:///storage/submission/4288/107455/101154/original_thumbnail_1.png", - "doc_start_offset": 1360, - "doc_end_offset": 1838, - "page_info": "indico-file:///storage/submission/4288/107455/101154/page_info_1.json" - }, - { - "page_num": 2, - "image": "indico-file:///storage/submission/4288/107455/101154/original_page_2.png", - "thumbnail": "indico-file:///storage/submission/4288/107455/101154/original_thumbnail_2.png", - "doc_start_offset": 1839, - "doc_end_offset": 3125, - "page_info": "indico-file:///storage/submission/4288/107455/101154/page_info_2.json" - }, - { - "page_num": 3, - "image": "indico-file:///storage/submission/4288/107455/101154/original_page_3.png", - "thumbnail": "indico-file:///storage/submission/4288/107455/101154/original_thumbnail_3.png", - "doc_start_offset": 3126, - "doc_end_offset": 4167, - "page_info": "indico-file:///storage/submission/4288/107455/101154/page_info_3.json" - }, - { - "page_num": 4, - "image": "indico-file:///storage/submission/4288/107455/101154/original_page_4.png", - "thumbnail": "indico-file:///storage/submission/4288/107455/101154/original_thumbnail_4.png", - "doc_start_offset": 4168, - "doc_end_offset": 4706, - "page_info": "indico-file:///storage/submission/4288/107455/101154/page_info_4.json" - }, - { - "page_num": 5, - "image": "indico-file:///storage/submission/4288/107455/101154/original_page_5.png", - "thumbnail": "indico-file:///storage/submission/4288/107455/101154/original_thumbnail_5.png", - "doc_start_offset": 4707, - "doc_end_offset": 6466, - "page_info": "indico-file:///storage/submission/4288/107455/101154/page_info_5.json" - } - ], - "num_pages": 6, - "metadata": {} -} \ No newline at end of file diff --git a/tests/data/etloutput/4288/107455/101154/page_info_0.json b/tests/data/etloutput/4288/107455/101154/page_info_0.json deleted file mode 100644 index 8c72193..0000000 --- a/tests/data/etloutput/4288/107455/101154/page_info_0.json +++ /dev/null @@ -1,2968 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 0, - "end": 1359 - }, - "page_num": 0, - "text": "Indico Metrics Integration Data Model\nThis document covers the intermediate data model used to pull Data Intake metrics\nfrom Indico to be aggregated and displayed within Metrics.\nThis document assumes that a single integration process is run on a schedule and\nuses 4 discrete GraphQL queries to download low-level metrics using the Indico\nGraphQL API. Scheduling recommendations are provided below.\nThese metrics are lightly processed and denormalized to match the intermediate\ndata model defined below. The integration will produce data in a consumable\nformat, such as SQL UPSERT queries, an importable CSV file, or an importable\nJSON file.\nContents\n1 Entities\n1.1 Workflow\n1.2 Model\n1.3 Submission\n1.4 Submission File\n1.5 Reviewer\n1.6 Prediction\nOnce imported, Metrics can filter and aggregate the intermediate data as described below to display higher-\nlevel data points to fulfill the reporting requirements defined elsewhere.\n1\nEntities\n1.1\nWorkflow\nColumn\nType\nGraphQL Source\nid\nint\nworkflow.id\nname\nstr\nworkflow.name\nExample GraphQL Query\nquery Workflows {\nworkflows {\nworkflows {\nid\nname\n}\n}\n}\nScheduled Process Logic\nThis is a lightweight query. All workflows will be pulled every time the integration is run.\nData Reconciliation\nThe output will include the primary key id needed to update existing rows and insert new rows into the\nMetrics database." - } - ], - "tokens": [ - { - "doc_offset": { - "start": 0, - "end": 6 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 172, - "bottom": 235, - "left": 409, - "right": 691 - } - }, - { - "doc_offset": { - "start": 7, - "end": 14 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 172, - "bottom": 235, - "left": 730, - "right": 1051 - } - }, - { - "doc_offset": { - "start": 15, - "end": 26 - }, - "page_num": 0, - "text": "Integration", - "position": { - "top": 172, - "bottom": 250, - "left": 1087, - "right": 1599 - } - }, - { - "doc_offset": { - "start": 27, - "end": 31 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 175, - "bottom": 235, - "left": 1640, - "right": 1839 - } - }, - { - "doc_offset": { - "start": 32, - "end": 37 - }, - "page_num": 0, - "text": "Model", - "position": { - "top": 172, - "bottom": 235, - "left": 1881, - "right": 2138 - } - }, - { - "doc_offset": { - "start": 38, - "end": 42 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 391, - "bottom": 423, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 43, - "end": 51 - }, - "page_num": 0, - "text": "document", - "position": { - "top": 391, - "bottom": 423, - "left": 308, - "right": 503 - } - }, - { - "doc_offset": { - "start": 52, - "end": 58 - }, - "page_num": 0, - "text": "covers", - "position": { - "top": 399, - "bottom": 423, - "left": 519, - "right": 647 - } - }, - { - "doc_offset": { - "start": 59, - "end": 62 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 391, - "bottom": 423, - "left": 662, - "right": 722 - } - }, - { - "doc_offset": { - "start": 63, - "end": 75 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 391, - "bottom": 423, - "left": 739, - "right": 978 - } - }, - { - "doc_offset": { - "start": 76, - "end": 80 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 391, - "bottom": 423, - "left": 994, - "right": 1079 - } - }, - { - "doc_offset": { - "start": 81, - "end": 86 - }, - "page_num": 0, - "text": "model", - "position": { - "top": 391, - "bottom": 423, - "left": 1095, - "right": 1211 - } - }, - { - "doc_offset": { - "start": 87, - "end": 91 - }, - "page_num": 0, - "text": "used", - "position": { - "top": 391, - "bottom": 423, - "left": 1230, - "right": 1320 - } - }, - { - "doc_offset": { - "start": 92, - "end": 94 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 393, - "bottom": 423, - "left": 1337, - "right": 1374 - } - }, - { - "doc_offset": { - "start": 95, - "end": 99 - }, - "page_num": 0, - "text": "pull", - "position": { - "top": 391, - "bottom": 431, - "left": 1392, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 100, - "end": 104 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 391, - "bottom": 423, - "left": 1475, - "right": 1563 - } - }, - { - "doc_offset": { - "start": 105, - "end": 111 - }, - "page_num": 0, - "text": "Intake", - "position": { - "top": 391, - "bottom": 423, - "left": 1580, - "right": 1695 - } - }, - { - "doc_offset": { - "start": 112, - "end": 119 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 391, - "bottom": 423, - "left": 1712, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 120, - "end": 124 - }, - "page_num": 0, - "text": "from", - "position": { - "top": 452, - "bottom": 484, - "left": 213, - "right": 298 - } - }, - { - "doc_offset": { - "start": 125, - "end": 131 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 453, - "bottom": 484, - "left": 317, - "right": 432 - } - }, - { - "doc_offset": { - "start": 132, - "end": 134 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 454, - "bottom": 484, - "left": 446, - "right": 483 - } - }, - { - "doc_offset": { - "start": 135, - "end": 137 - }, - "page_num": 0, - "text": "be", - "position": { - "top": 453, - "bottom": 484, - "left": 500, - "right": 545 - } - }, - { - "doc_offset": { - "start": 138, - "end": 148 - }, - "page_num": 0, - "text": "aggregated", - "position": { - "top": 453, - "bottom": 493, - "left": 560, - "right": 778 - } - }, - { - "doc_offset": { - "start": 149, - "end": 152 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 453, - "bottom": 484, - "left": 795, - "right": 864 - } - }, - { - "doc_offset": { - "start": 153, - "end": 162 - }, - "page_num": 0, - "text": "displayed", - "position": { - "top": 453, - "bottom": 493, - "left": 881, - "right": 1064 - } - }, - { - "doc_offset": { - "start": 163, - "end": 169 - }, - "page_num": 0, - "text": "within", - "position": { - "top": 453, - "bottom": 484, - "left": 1080, - "right": 1191 - } - }, - { - "doc_offset": { - "start": 170, - "end": 178 - }, - "page_num": 0, - "text": "Metrics.", - "position": { - "top": 453, - "bottom": 484, - "left": 1210, - "right": 1360 - } - }, - { - "doc_offset": { - "start": 179, - "end": 183 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 558, - "bottom": 589, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 184, - "end": 192 - }, - "page_num": 0, - "text": "document", - "position": { - "top": 558, - "bottom": 589, - "left": 309, - "right": 504 - } - }, - { - "doc_offset": { - "start": 193, - "end": 200 - }, - "page_num": 0, - "text": "assumes", - "position": { - "top": 566, - "bottom": 589, - "left": 522, - "right": 694 - } - }, - { - "doc_offset": { - "start": 201, - "end": 205 - }, - "page_num": 0, - "text": "that", - "position": { - "top": 558, - "bottom": 589, - "left": 710, - "right": 784 - } - }, - { - "doc_offset": { - "start": 206, - "end": 207 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 566, - "bottom": 589, - "left": 802, - "right": 823 - } - }, - { - "doc_offset": { - "start": 208, - "end": 214 - }, - "page_num": 0, - "text": "single", - "position": { - "top": 558, - "bottom": 598, - "left": 840, - "right": 952 - } - }, - { - "doc_offset": { - "start": 215, - "end": 226 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 558, - "bottom": 598, - "left": 971, - "right": 1172 - } - }, - { - "doc_offset": { - "start": 227, - "end": 234 - }, - "page_num": 0, - "text": "process", - "position": { - "top": 566, - "bottom": 597, - "left": 1193, - "right": 1344 - } - }, - { - "doc_offset": { - "start": 235, - "end": 237 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 558, - "bottom": 589, - "left": 1364, - "right": 1391 - } - }, - { - "doc_offset": { - "start": 238, - "end": 241 - }, - "page_num": 0, - "text": "run", - "position": { - "top": 566, - "bottom": 589, - "left": 1410, - "right": 1467 - } - }, - { - "doc_offset": { - "start": 242, - "end": 244 - }, - "page_num": 0, - "text": "on", - "position": { - "top": 566, - "bottom": 589, - "left": 1487, - "right": 1532 - } - }, - { - "doc_offset": { - "start": 245, - "end": 246 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 566, - "bottom": 589, - "left": 1551, - "right": 1572 - } - }, - { - "doc_offset": { - "start": 247, - "end": 255 - }, - "page_num": 0, - "text": "schedule", - "position": { - "top": 558, - "bottom": 589, - "left": 1589, - "right": 1764 - } - }, - { - "doc_offset": { - "start": 256, - "end": 259 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 558, - "bottom": 589, - "left": 1781, - "right": 1850 - } - }, - { - "doc_offset": { - "start": 260, - "end": 264 - }, - "page_num": 0, - "text": "uses", - "position": { - "top": 627, - "bottom": 651, - "left": 215, - "right": 302 - } - }, - { - "doc_offset": { - "start": 265, - "end": 266 - }, - "page_num": 0, - "text": "4", - "position": { - "top": 619, - "bottom": 650, - "left": 324, - "right": 345 - } - }, - { - "doc_offset": { - "start": 267, - "end": 275 - }, - "page_num": 0, - "text": "discrete", - "position": { - "top": 619, - "bottom": 651, - "left": 368, - "right": 521 - } - }, - { - "doc_offset": { - "start": 276, - "end": 283 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 618, - "bottom": 659, - "left": 543, - "right": 720 - } - }, - { - "doc_offset": { - "start": 284, - "end": 291 - }, - "page_num": 0, - "text": "queries", - "position": { - "top": 619, - "bottom": 659, - "left": 741, - "right": 881 - } - }, - { - "doc_offset": { - "start": 292, - "end": 294 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 621, - "bottom": 651, - "left": 902, - "right": 939 - } - }, - { - "doc_offset": { - "start": 295, - "end": 303 - }, - "page_num": 0, - "text": "download", - "position": { - "top": 619, - "bottom": 651, - "left": 962, - "right": 1150 - } - }, - { - "doc_offset": { - "start": 304, - "end": 313 - }, - "page_num": 0, - "text": "low-level", - "position": { - "top": 619, - "bottom": 651, - "left": 1175, - "right": 1342 - } - }, - { - "doc_offset": { - "start": 314, - "end": 321 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 619, - "bottom": 651, - "left": 1367, - "right": 1508 - } - }, - { - "doc_offset": { - "start": 322, - "end": 327 - }, - "page_num": 0, - "text": "using", - "position": { - "top": 619, - "bottom": 659, - "left": 1531, - "right": 1631 - } - }, - { - "doc_offset": { - "start": 328, - "end": 331 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 619, - "bottom": 651, - "left": 1653, - "right": 1713 - } - }, - { - "doc_offset": { - "start": 332, - "end": 338 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 619, - "bottom": 651, - "left": 1737, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 339, - "end": 346 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 679, - "bottom": 720, - "left": 214, - "right": 391 - } - }, - { - "doc_offset": { - "start": 347, - "end": 351 - }, - "page_num": 0, - "text": "API.", - "position": { - "top": 680, - "bottom": 711, - "left": 403, - "right": 480 - } - }, - { - "doc_offset": { - "start": 352, - "end": 362 - }, - "page_num": 0, - "text": "Scheduling", - "position": { - "top": 679, - "bottom": 720, - "left": 497, - "right": 712 - } - }, - { - "doc_offset": { - "start": 363, - "end": 378 - }, - "page_num": 0, - "text": "recommendations", - "position": { - "top": 680, - "bottom": 712, - "left": 729, - "right": 1078 - } - }, - { - "doc_offset": { - "start": 379, - "end": 382 - }, - "page_num": 0, - "text": "are", - "position": { - "top": 688, - "bottom": 712, - "left": 1093, - "right": 1151 - } - }, - { - "doc_offset": { - "start": 383, - "end": 391 - }, - "page_num": 0, - "text": "provided", - "position": { - "top": 680, - "bottom": 720, - "left": 1167, - "right": 1333 - } - }, - { - "doc_offset": { - "start": 392, - "end": 398 - }, - "page_num": 0, - "text": "below.", - "position": { - "top": 680, - "bottom": 712, - "left": 1351, - "right": 1472 - } - }, - { - "doc_offset": { - "start": 399, - "end": 404 - }, - "page_num": 0, - "text": "These", - "position": { - "top": 785, - "bottom": 817, - "left": 212, - "right": 329 - } - }, - { - "doc_offset": { - "start": 405, - "end": 412 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 785, - "bottom": 817, - "left": 353, - "right": 493 - } - }, - { - "doc_offset": { - "start": 413, - "end": 416 - }, - "page_num": 0, - "text": "are", - "position": { - "top": 793, - "bottom": 817, - "left": 515, - "right": 573 - } - }, - { - "doc_offset": { - "start": 417, - "end": 424 - }, - "page_num": 0, - "text": "lightly", - "position": { - "top": 785, - "bottom": 825, - "left": 597, - "right": 708 - } - }, - { - "doc_offset": { - "start": 425, - "end": 434 - }, - "page_num": 0, - "text": "processed", - "position": { - "top": 785, - "bottom": 825, - "left": 730, - "right": 930 - } - }, - { - "doc_offset": { - "start": 435, - "end": 438 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 785, - "bottom": 817, - "left": 954, - "right": 1023 - } - }, - { - "doc_offset": { - "start": 439, - "end": 451 - }, - "page_num": 0, - "text": "denormalized", - "position": { - "top": 785, - "bottom": 817, - "left": 1047, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 452, - "end": 454 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 787, - "bottom": 817, - "left": 1329, - "right": 1366 - } - }, - { - "doc_offset": { - "start": 455, - "end": 460 - }, - "page_num": 0, - "text": "match", - "position": { - "top": 785, - "bottom": 817, - "left": 1390, - "right": 1507 - } - }, - { - "doc_offset": { - "start": 461, - "end": 464 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 785, - "bottom": 817, - "left": 1529, - "right": 1590 - } - }, - { - "doc_offset": { - "start": 465, - "end": 477 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 785, - "bottom": 817, - "left": 1613, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 478, - "end": 482 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 846, - "bottom": 878, - "left": 214, - "right": 298 - } - }, - { - "doc_offset": { - "start": 483, - "end": 488 - }, - "page_num": 0, - "text": "model", - "position": { - "top": 846, - "bottom": 878, - "left": 326, - "right": 442 - } - }, - { - "doc_offset": { - "start": 489, - "end": 496 - }, - "page_num": 0, - "text": "defined", - "position": { - "top": 846, - "bottom": 878, - "left": 471, - "right": 613 - } - }, - { - "doc_offset": { - "start": 497, - "end": 503 - }, - "page_num": 0, - "text": "below.", - "position": { - "top": 846, - "bottom": 878, - "left": 643, - "right": 764 - } - }, - { - "doc_offset": { - "start": 504, - "end": 507 - }, - "page_num": 0, - "text": "The", - "position": { - "top": 846, - "bottom": 878, - "left": 792, - "right": 864 - } - }, - { - "doc_offset": { - "start": 508, - "end": 519 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 846, - "bottom": 887, - "left": 893, - "right": 1094 - } - }, - { - "doc_offset": { - "start": 520, - "end": 524 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 846, - "bottom": 878, - "left": 1123, - "right": 1181 - } - }, - { - "doc_offset": { - "start": 525, - "end": 532 - }, - "page_num": 0, - "text": "produce", - "position": { - "top": 846, - "bottom": 886, - "left": 1212, - "right": 1370 - } - }, - { - "doc_offset": { - "start": 533, - "end": 537 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 846, - "bottom": 878, - "left": 1397, - "right": 1482 - } - }, - { - "doc_offset": { - "start": 538, - "end": 540 - }, - "page_num": 0, - "text": "in", - "position": { - "top": 846, - "bottom": 878, - "left": 1510, - "right": 1539 - } - }, - { - "doc_offset": { - "start": 541, - "end": 542 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 854, - "bottom": 878, - "left": 1568, - "right": 1589 - } - }, - { - "doc_offset": { - "start": 543, - "end": 553 - }, - "page_num": 0, - "text": "consumable", - "position": { - "top": 846, - "bottom": 878, - "left": 1616, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 554, - "end": 561 - }, - "page_num": 0, - "text": "format,", - "position": { - "top": 907, - "bottom": 945, - "left": 213, - "right": 348 - } - }, - { - "doc_offset": { - "start": 562, - "end": 566 - }, - "page_num": 0, - "text": "such", - "position": { - "top": 908, - "bottom": 939, - "left": 373, - "right": 463 - } - }, - { - "doc_offset": { - "start": 567, - "end": 569 - }, - "page_num": 0, - "text": "as", - "position": { - "top": 916, - "bottom": 939, - "left": 488, - "right": 530 - } - }, - { - "doc_offset": { - "start": 570, - "end": 573 - }, - "page_num": 0, - "text": "SQL", - "position": { - "top": 907, - "bottom": 942, - "left": 554, - "right": 638 - } - }, - { - "doc_offset": { - "start": 574, - "end": 580 - }, - "page_num": 0, - "text": "UPSERT", - "position": { - "top": 910, - "bottom": 940, - "left": 676, - "right": 806 - } - }, - { - "doc_offset": { - "start": 581, - "end": 589 - }, - "page_num": 0, - "text": "queries,", - "position": { - "top": 908, - "bottom": 947, - "left": 845, - "right": 995 - } - }, - { - "doc_offset": { - "start": 590, - "end": 592 - }, - "page_num": 0, - "text": "an", - "position": { - "top": 916, - "bottom": 939, - "left": 1021, - "right": 1064 - } - }, - { - "doc_offset": { - "start": 593, - "end": 603 - }, - "page_num": 0, - "text": "importable", - "position": { - "top": 908, - "bottom": 947, - "left": 1091, - "right": 1296 - } - }, - { - "doc_offset": { - "start": 604, - "end": 607 - }, - "page_num": 0, - "text": "CSV", - "position": { - "top": 907, - "bottom": 940, - "left": 1320, - "right": 1405 - } - }, - { - "doc_offset": { - "start": 608, - "end": 613 - }, - "page_num": 0, - "text": "file,", - "position": { - "top": 907, - "bottom": 945, - "left": 1426, - "right": 1490 - } - }, - { - "doc_offset": { - "start": 614, - "end": 616 - }, - "page_num": 0, - "text": "or", - "position": { - "top": 916, - "bottom": 939, - "left": 1516, - "right": 1554 - } - }, - { - "doc_offset": { - "start": 617, - "end": 619 - }, - "page_num": 0, - "text": "an", - "position": { - "top": 916, - "bottom": 939, - "left": 1577, - "right": 1620 - } - }, - { - "doc_offset": { - "start": 620, - "end": 630 - }, - "page_num": 0, - "text": "importable", - "position": { - "top": 908, - "bottom": 947, - "left": 1647, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 631, - "end": 635 - }, - "page_num": 0, - "text": "JSON", - "position": { - "top": 968, - "bottom": 1001, - "left": 213, - "right": 325 - } - }, - { - "doc_offset": { - "start": 636, - "end": 641 - }, - "page_num": 0, - "text": "file.", - "position": { - "top": 969, - "bottom": 1001, - "left": 341, - "right": 404 - } - }, - { - "doc_offset": { - "start": 642, - "end": 650 - }, - "page_num": 0, - "text": "Contents", - "position": { - "top": 438, - "bottom": 466, - "left": 2067, - "right": 2251 - } - }, - { - "doc_offset": { - "start": 651, - "end": 652 - }, - "page_num": 0, - "text": "1", - "position": { - "top": 574, - "bottom": 595, - "left": 1983, - "right": 1998 - } - }, - { - "doc_offset": { - "start": 653, - "end": 661 - }, - "page_num": 0, - "text": "Entities", - "position": { - "top": 566, - "bottom": 595, - "left": 2019, - "right": 2167 - } - }, - { - "doc_offset": { - "start": 662, - "end": 665 - }, - "page_num": 0, - "text": "1.1", - "position": { - "top": 623, - "bottom": 644, - "left": 2009, - "right": 2048 - } - }, - { - "doc_offset": { - "start": 666, - "end": 674 - }, - "page_num": 0, - "text": "Workflow", - "position": { - "top": 615, - "bottom": 644, - "left": 2067, - "right": 2231 - } - }, - { - "doc_offset": { - "start": 675, - "end": 678 - }, - "page_num": 0, - "text": "1.2", - "position": { - "top": 672, - "bottom": 693, - "left": 2009, - "right": 2052 - } - }, - { - "doc_offset": { - "start": 679, - "end": 684 - }, - "page_num": 0, - "text": "Model", - "position": { - "top": 664, - "bottom": 693, - "left": 2073, - "right": 2176 - } - }, - { - "doc_offset": { - "start": 685, - "end": 688 - }, - "page_num": 0, - "text": "1.3", - "position": { - "top": 721, - "bottom": 748, - "left": 2009, - "right": 2052 - } - }, - { - "doc_offset": { - "start": 689, - "end": 699 - }, - "page_num": 0, - "text": "Submission", - "position": { - "top": 713, - "bottom": 742, - "left": 2073, - "right": 2264 - } - }, - { - "doc_offset": { - "start": 700, - "end": 703 - }, - "page_num": 0, - "text": "1.4", - "position": { - "top": 770, - "bottom": 797, - "left": 2009, - "right": 2053 - } - }, - { - "doc_offset": { - "start": 704, - "end": 714 - }, - "page_num": 0, - "text": "Submission", - "position": { - "top": 762, - "bottom": 791, - "left": 2074, - "right": 2265 - } - }, - { - "doc_offset": { - "start": 715, - "end": 719 - }, - "page_num": 0, - "text": "File", - "position": { - "top": 762, - "bottom": 791, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 720, - "end": 723 - }, - "page_num": 0, - "text": "1.5", - "position": { - "top": 819, - "bottom": 846, - "left": 2009, - "right": 2051 - } - }, - { - "doc_offset": { - "start": 724, - "end": 732 - }, - "page_num": 0, - "text": "Reviewer", - "position": { - "top": 812, - "bottom": 840, - "left": 2073, - "right": 2224 - } - }, - { - "doc_offset": { - "start": 733, - "end": 736 - }, - "page_num": 0, - "text": "1.6", - "position": { - "top": 862, - "bottom": 889, - "left": 2009, - "right": 2053 - } - }, - { - "doc_offset": { - "start": 737, - "end": 747 - }, - "page_num": 0, - "text": "Prediction", - "position": { - "top": 860, - "bottom": 889, - "left": 2074, - "right": 2244 - } - }, - { - "doc_offset": { - "start": 748, - "end": 752 - }, - "page_num": 0, - "text": "Once", - "position": { - "top": 1073, - "bottom": 1106, - "left": 214, - "right": 316 - } - }, - { - "doc_offset": { - "start": 753, - "end": 762 - }, - "page_num": 0, - "text": "imported,", - "position": { - "top": 1074, - "bottom": 1114, - "left": 333, - "right": 514 - } - }, - { - "doc_offset": { - "start": 763, - "end": 770 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 1074, - "bottom": 1106, - "left": 535, - "right": 675 - } - }, - { - "doc_offset": { - "start": 771, - "end": 774 - }, - "page_num": 0, - "text": "can", - "position": { - "top": 1082, - "bottom": 1106, - "left": 691, - "right": 758 - } - }, - { - "doc_offset": { - "start": 775, - "end": 781 - }, - "page_num": 0, - "text": "filter", - "position": { - "top": 1074, - "bottom": 1106, - "left": 775, - "right": 858 - } - }, - { - "doc_offset": { - "start": 782, - "end": 785 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 1074, - "bottom": 1106, - "left": 873, - "right": 942 - } - }, - { - "doc_offset": { - "start": 786, - "end": 795 - }, - "page_num": 0, - "text": "aggregate", - "position": { - "top": 1076, - "bottom": 1114, - "left": 960, - "right": 1154 - } - }, - { - "doc_offset": { - "start": 796, - "end": 799 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 1074, - "bottom": 1106, - "left": 1169, - "right": 1229 - } - }, - { - "doc_offset": { - "start": 800, - "end": 812 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 1074, - "bottom": 1106, - "left": 1247, - "right": 1486 - } - }, - { - "doc_offset": { - "start": 813, - "end": 817 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 1074, - "bottom": 1106, - "left": 1502, - "right": 1586 - } - }, - { - "doc_offset": { - "start": 818, - "end": 820 - }, - "page_num": 0, - "text": "as", - "position": { - "top": 1082, - "bottom": 1106, - "left": 1602, - "right": 1644 - } - }, - { - "doc_offset": { - "start": 821, - "end": 830 - }, - "page_num": 0, - "text": "described", - "position": { - "top": 1074, - "bottom": 1106, - "left": 1660, - "right": 1850 - } - }, - { - "doc_offset": { - "start": 831, - "end": 836 - }, - "page_num": 0, - "text": "below", - "position": { - "top": 1074, - "bottom": 1106, - "left": 1869, - "right": 1983 - } - }, - { - "doc_offset": { - "start": 837, - "end": 839 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 1076, - "bottom": 1106, - "left": 1997, - "right": 2034 - } - }, - { - "doc_offset": { - "start": 840, - "end": 847 - }, - "page_num": 0, - "text": "display", - "position": { - "top": 1074, - "bottom": 1114, - "left": 2051, - "right": 2187 - } - }, - { - "doc_offset": { - "start": 848, - "end": 855 - }, - "page_num": 0, - "text": "higher-", - "position": { - "top": 1074, - "bottom": 1114, - "left": 2204, - "right": 2335 - } - }, - { - "doc_offset": { - "start": 856, - "end": 861 - }, - "page_num": 0, - "text": "level", - "position": { - "top": 1135, - "bottom": 1167, - "left": 215, - "right": 297 - } - }, - { - "doc_offset": { - "start": 862, - "end": 866 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 1135, - "bottom": 1167, - "left": 314, - "right": 398 - } - }, - { - "doc_offset": { - "start": 867, - "end": 873 - }, - "page_num": 0, - "text": "points", - "position": { - "top": 1135, - "bottom": 1175, - "left": 414, - "right": 531 - } - }, - { - "doc_offset": { - "start": 874, - "end": 876 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 1137, - "bottom": 1167, - "left": 545, - "right": 582 - } - }, - { - "doc_offset": { - "start": 877, - "end": 884 - }, - "page_num": 0, - "text": "fulfill", - "position": { - "top": 1135, - "bottom": 1167, - "left": 596, - "right": 681 - } - }, - { - "doc_offset": { - "start": 885, - "end": 888 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 1135, - "bottom": 1167, - "left": 697, - "right": 757 - } - }, - { - "doc_offset": { - "start": 889, - "end": 898 - }, - "page_num": 0, - "text": "reporting", - "position": { - "top": 1135, - "bottom": 1175, - "left": 773, - "right": 943 - } - }, - { - "doc_offset": { - "start": 899, - "end": 911 - }, - "page_num": 0, - "text": "requirements", - "position": { - "top": 1135, - "bottom": 1175, - "left": 961, - "right": 1212 - } - }, - { - "doc_offset": { - "start": 912, - "end": 919 - }, - "page_num": 0, - "text": "defined", - "position": { - "top": 1135, - "bottom": 1167, - "left": 1228, - "right": 1369 - } - }, - { - "doc_offset": { - "start": 920, - "end": 930 - }, - "page_num": 0, - "text": "elsewhere.", - "position": { - "top": 1135, - "bottom": 1167, - "left": 1386, - "right": 1589 - } - }, - { - "doc_offset": { - "start": 931, - "end": 932 - }, - "page_num": 0, - "text": "1", - "position": { - "top": 1324, - "bottom": 1370, - "left": 220, - "right": 250 - } - }, - { - "doc_offset": { - "start": 933, - "end": 941 - }, - "page_num": 0, - "text": "Entities", - "position": { - "top": 1322, - "bottom": 1370, - "left": 315, - "right": 572 - } - }, - { - "doc_offset": { - "start": 942, - "end": 945 - }, - "page_num": 0, - "text": "1.1", - "position": { - "top": 1536, - "bottom": 1577, - "left": 219, - "right": 307 - } - }, - { - "doc_offset": { - "start": 946, - "end": 954 - }, - "page_num": 0, - "text": "Workflow", - "position": { - "top": 1534, - "bottom": 1578, - "left": 365, - "right": 666 - } - }, - { - "doc_offset": { - "start": 955, - "end": 961 - }, - "page_num": 0, - "text": "Column", - "position": { - "top": 1693, - "bottom": 1725, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 962, - "end": 966 - }, - "page_num": 0, - "text": "Type", - "position": { - "top": 1693, - "bottom": 1733, - "left": 873, - "right": 968 - } - }, - { - "doc_offset": { - "start": 967, - "end": 974 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 1693, - "bottom": 1733, - "left": 1328, - "right": 1514 - } - }, - { - "doc_offset": { - "start": 975, - "end": 981 - }, - "page_num": 0, - "text": "Source", - "position": { - "top": 1693, - "bottom": 1725, - "left": 1528, - "right": 1673 - } - }, - { - "doc_offset": { - "start": 982, - "end": 984 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 1794, - "bottom": 1826, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 985, - "end": 988 - }, - "page_num": 0, - "text": "int", - "position": { - "top": 1794, - "bottom": 1826, - "left": 876, - "right": 919 - } - }, - { - "doc_offset": { - "start": 989, - "end": 1000 - }, - "page_num": 0, - "text": "workflow.id", - "position": { - "top": 1794, - "bottom": 1824, - "left": 1342, - "right": 1584 - } - }, - { - "doc_offset": { - "start": 1001, - "end": 1005 - }, - "page_num": 0, - "text": "name", - "position": { - "top": 1895, - "bottom": 1918, - "left": 264, - "right": 369 - } - }, - { - "doc_offset": { - "start": 1006, - "end": 1009 - }, - "page_num": 0, - "text": "str", - "position": { - "top": 1889, - "bottom": 1918, - "left": 874, - "right": 923 - } - }, - { - "doc_offset": { - "start": 1010, - "end": 1023 - }, - "page_num": 0, - "text": "workflow.name", - "position": { - "top": 1886, - "bottom": 1917, - "left": 1342, - "right": 1629 - } - }, - { - "doc_offset": { - "start": 1024, - "end": 1031 - }, - "page_num": 0, - "text": "Example", - "position": { - "top": 2017, - "bottom": 2056, - "left": 215, - "right": 391 - } - }, - { - "doc_offset": { - "start": 1032, - "end": 1039 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 2016, - "bottom": 2056, - "left": 406, - "right": 591 - } - }, - { - "doc_offset": { - "start": 1040, - "end": 1045 - }, - "page_num": 0, - "text": "Query", - "position": { - "top": 2016, - "bottom": 2056, - "left": 606, - "right": 729 - } - }, - { - "doc_offset": { - "start": 1046, - "end": 1051 - }, - "page_num": 0, - "text": "query", - "position": { - "top": 2140, - "bottom": 2175, - "left": 244, - "right": 374 - } - }, - { - "doc_offset": { - "start": 1052, - "end": 1061 - }, - "page_num": 0, - "text": "Workflows", - "position": { - "top": 2129, - "bottom": 2165, - "left": 402, - "right": 639 - } - }, - { - "doc_offset": { - "start": 1062, - "end": 1063 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2129, - "bottom": 2173, - "left": 674, - "right": 693 - } - }, - { - "doc_offset": { - "start": 1064, - "end": 1073 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2191, - "bottom": 2228, - "left": 331, - "right": 568 - } - }, - { - "doc_offset": { - "start": 1074, - "end": 1075 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2191, - "bottom": 2235, - "left": 603, - "right": 622 - } - }, - { - "doc_offset": { - "start": 1076, - "end": 1085 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2254, - "bottom": 2290, - "left": 438, - "right": 675 - } - }, - { - "doc_offset": { - "start": 1086, - "end": 1087 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2254, - "bottom": 2298, - "left": 710, - "right": 729 - } - }, - { - "doc_offset": { - "start": 1088, - "end": 1090 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 2316, - "bottom": 2353, - "left": 548, - "right": 595 - } - }, - { - "doc_offset": { - "start": 1091, - "end": 1095 - }, - "page_num": 0, - "text": "name", - "position": { - "top": 2390, - "bottom": 2415, - "left": 548, - "right": 649 - } - }, - { - "doc_offset": { - "start": 1096, - "end": 1097 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2441, - "bottom": 2485, - "left": 440, - "right": 460 - } - }, - { - "doc_offset": { - "start": 1098, - "end": 1099 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2504, - "bottom": 2548, - "left": 333, - "right": 352 - } - }, - { - "doc_offset": { - "start": 1100, - "end": 1101 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2566, - "bottom": 2610, - "left": 226, - "right": 245 - } - }, - { - "doc_offset": { - "start": 1102, - "end": 1111 - }, - "page_num": 0, - "text": "Scheduled", - "position": { - "top": 2687, - "bottom": 2720, - "left": 213, - "right": 430 - } - }, - { - "doc_offset": { - "start": 1112, - "end": 1119 - }, - "page_num": 0, - "text": "Process", - "position": { - "top": 2688, - "bottom": 2720, - "left": 448, - "right": 613 - } - }, - { - "doc_offset": { - "start": 1120, - "end": 1125 - }, - "page_num": 0, - "text": "Logic", - "position": { - "top": 2688, - "bottom": 2728, - "left": 629, - "right": 741 - } - }, - { - "doc_offset": { - "start": 1126, - "end": 1130 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 2792, - "bottom": 2823, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 1131, - "end": 1133 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 2792, - "bottom": 2823, - "left": 308, - "right": 335 - } - }, - { - "doc_offset": { - "start": 1134, - "end": 1135 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 2800, - "bottom": 2823, - "left": 351, - "right": 372 - } - }, - { - "doc_offset": { - "start": 1136, - "end": 1147 - }, - "page_num": 0, - "text": "lightweight", - "position": { - "top": 2792, - "bottom": 2832, - "left": 388, - "right": 595 - } - }, - { - "doc_offset": { - "start": 1148, - "end": 1154 - }, - "page_num": 0, - "text": "query.", - "position": { - "top": 2800, - "bottom": 2832, - "left": 611, - "right": 724 - } - }, - { - "doc_offset": { - "start": 1155, - "end": 1158 - }, - "page_num": 0, - "text": "All", - "position": { - "top": 2792, - "bottom": 2823, - "left": 740, - "right": 785 - } - }, - { - "doc_offset": { - "start": 1159, - "end": 1168 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2791, - "bottom": 2823, - "left": 801, - "right": 997 - } - }, - { - "doc_offset": { - "start": 1169, - "end": 1173 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 2792, - "bottom": 2823, - "left": 1011, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 1174, - "end": 1176 - }, - "page_num": 0, - "text": "be", - "position": { - "top": 2792, - "bottom": 2823, - "left": 1088, - "right": 1134 - } - }, - { - "doc_offset": { - "start": 1177, - "end": 1183 - }, - "page_num": 0, - "text": "pulled", - "position": { - "top": 2792, - "bottom": 2832, - "left": 1150, - "right": 1263 - } - }, - { - "doc_offset": { - "start": 1184, - "end": 1189 - }, - "page_num": 0, - "text": "every", - "position": { - "top": 2800, - "bottom": 2832, - "left": 1280, - "right": 1383 - } - }, - { - "doc_offset": { - "start": 1190, - "end": 1194 - }, - "page_num": 0, - "text": "time", - "position": { - "top": 2792, - "bottom": 2823, - "left": 1396, - "right": 1479 - } - }, - { - "doc_offset": { - "start": 1195, - "end": 1198 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 2792, - "bottom": 2823, - "left": 1492, - "right": 1553 - } - }, - { - "doc_offset": { - "start": 1199, - "end": 1210 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 2792, - "bottom": 2832, - "left": 1569, - "right": 1770 - } - }, - { - "doc_offset": { - "start": 1211, - "end": 1213 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 2792, - "bottom": 2823, - "left": 1788, - "right": 1816 - } - }, - { - "doc_offset": { - "start": 1214, - "end": 1218 - }, - "page_num": 0, - "text": "run.", - "position": { - "top": 2800, - "bottom": 2823, - "left": 1832, - "right": 1901 - } - }, - { - "doc_offset": { - "start": 1219, - "end": 1223 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 2898, - "bottom": 2930, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 1224, - "end": 1238 - }, - "page_num": 0, - "text": "Reconciliation", - "position": { - "top": 2898, - "bottom": 2930, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 1239, - "end": 1242 - }, - "page_num": 0, - "text": "The", - "position": { - "top": 3002, - "bottom": 3033, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 1243, - "end": 1249 - }, - "page_num": 0, - "text": "output", - "position": { - "top": 3004, - "bottom": 3042, - "left": 304, - "right": 428 - } - }, - { - "doc_offset": { - "start": 1250, - "end": 1254 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 3002, - "bottom": 3033, - "left": 447, - "right": 506 - } - }, - { - "doc_offset": { - "start": 1255, - "end": 1262 - }, - "page_num": 0, - "text": "include", - "position": { - "top": 3002, - "bottom": 3033, - "left": 529, - "right": 666 - } - }, - { - "doc_offset": { - "start": 1263, - "end": 1266 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 3002, - "bottom": 3033, - "left": 685, - "right": 745 - } - }, - { - "doc_offset": { - "start": 1267, - "end": 1274 - }, - "page_num": 0, - "text": "primary", - "position": { - "top": 3002, - "bottom": 3042, - "left": 766, - "right": 910 - } - }, - { - "doc_offset": { - "start": 1275, - "end": 1278 - }, - "page_num": 0, - "text": "key", - "position": { - "top": 3002, - "bottom": 3042, - "left": 931, - "right": 995 - } - }, - { - "doc_offset": { - "start": 1279, - "end": 1281 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 3003, - "bottom": 3034, - "left": 1031, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 1282, - "end": 1288 - }, - "page_num": 0, - "text": "needed", - "position": { - "top": 3002, - "bottom": 3033, - "left": 1107, - "right": 1248 - } - }, - { - "doc_offset": { - "start": 1289, - "end": 1291 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 3004, - "bottom": 3033, - "left": 1269, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 1292, - "end": 1298 - }, - "page_num": 0, - "text": "update", - "position": { - "top": 3002, - "bottom": 3042, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 1299, - "end": 1307 - }, - "page_num": 0, - "text": "existing", - "position": { - "top": 3002, - "bottom": 3042, - "left": 1481, - "right": 1627 - } - }, - { - "doc_offset": { - "start": 1308, - "end": 1312 - }, - "page_num": 0, - "text": "rows", - "position": { - "top": 3010, - "bottom": 3033, - "left": 1650, - "right": 1740 - } - }, - { - "doc_offset": { - "start": 1313, - "end": 1316 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 3002, - "bottom": 3033, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 1317, - "end": 1323 - }, - "page_num": 0, - "text": "insert", - "position": { - "top": 3002, - "bottom": 3033, - "left": 1853, - "right": 1957 - } - }, - { - "doc_offset": { - "start": 1324, - "end": 1327 - }, - "page_num": 0, - "text": "new", - "position": { - "top": 3010, - "bottom": 3033, - "left": 1978, - "right": 2055 - } - }, - { - "doc_offset": { - "start": 1328, - "end": 1332 - }, - "page_num": 0, - "text": "rows", - "position": { - "top": 3010, - "bottom": 3033, - "left": 2076, - "right": 2166 - } - }, - { - "doc_offset": { - "start": 1333, - "end": 1337 - }, - "page_num": 0, - "text": "into", - "position": { - "top": 3002, - "bottom": 3033, - "left": 2188, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 1338, - "end": 1341 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 3002, - "bottom": 3033, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 1342, - "end": 1349 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 3063, - "bottom": 3095, - "left": 216, - "right": 356 - } - }, - { - "doc_offset": { - "start": 1350, - "end": 1359 - }, - "page_num": 0, - "text": "database.", - "position": { - "top": 3063, - "bottom": 3095, - "left": 371, - "right": 559 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4288/107455/101154/page_info_1.json b/tests/data/etloutput/4288/107455/101154/page_info_1.json deleted file mode 100644 index 3df21cb..0000000 --- a/tests/data/etloutput/4288/107455/101154/page_info_1.json +++ /dev/null @@ -1,1050 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 1360, - "end": 1838 - }, - "page_num": 1, - "text": "1.2\nModel\nColumn\nType\nGraphQL Source\nid\nint\nmodelGroup.id\nname\nstr\nmodelGroup.name\nworkflow_id\nint\nmodelGroup.workflowId\nExample GraphQL Query\nquery Models {\nmodelGroups(limit: 1000) {\nmodelGroups {\nid\nname\nworkflowId\n}\n}\n}\nScheduled Process Logic\nThis is a lightweight query. All models will be pulled every time the integration is run.\nData Reconciliation\nThe output will include the primary key id needed to update existing rows and insert new rows into the\nMetrics database." - } - ], - "tokens": [ - { - "doc_offset": { - "start": 1360, - "end": 1363 - }, - "page_num": 1, - "text": "1.2", - "position": { - "top": 58, - "bottom": 100, - "left": 219, - "right": 309 - } - }, - { - "doc_offset": { - "start": 1364, - "end": 1369 - }, - "page_num": 1, - "text": "Model", - "position": { - "top": 57, - "bottom": 101, - "left": 368, - "right": 546 - } - }, - { - "doc_offset": { - "start": 1370, - "end": 1376 - }, - "page_num": 1, - "text": "Column", - "position": { - "top": 216, - "bottom": 248, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 1377, - "end": 1381 - }, - "page_num": 1, - "text": "Type", - "position": { - "top": 216, - "bottom": 255, - "left": 888, - "right": 983 - } - }, - { - "doc_offset": { - "start": 1382, - "end": 1389 - }, - "page_num": 1, - "text": "GraphQL", - "position": { - "top": 216, - "bottom": 255, - "left": 1253, - "right": 1438 - } - }, - { - "doc_offset": { - "start": 1390, - "end": 1396 - }, - "page_num": 1, - "text": "Source", - "position": { - "top": 216, - "bottom": 248, - "left": 1452, - "right": 1597 - } - }, - { - "doc_offset": { - "start": 1397, - "end": 1399 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 317, - "bottom": 349, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 1400, - "end": 1403 - }, - "page_num": 1, - "text": "int", - "position": { - "top": 317, - "bottom": 348, - "left": 891, - "right": 934 - } - }, - { - "doc_offset": { - "start": 1404, - "end": 1417 - }, - "page_num": 1, - "text": "modelGroup.id", - "position": { - "top": 317, - "bottom": 354, - "left": 1267, - "right": 1553 - } - }, - { - "doc_offset": { - "start": 1418, - "end": 1422 - }, - "page_num": 1, - "text": "name", - "position": { - "top": 418, - "bottom": 441, - "left": 264, - "right": 369 - } - }, - { - "doc_offset": { - "start": 1423, - "end": 1426 - }, - "page_num": 1, - "text": "str", - "position": { - "top": 412, - "bottom": 441, - "left": 889, - "right": 938 - } - }, - { - "doc_offset": { - "start": 1427, - "end": 1442 - }, - "page_num": 1, - "text": "modelGroup.name", - "position": { - "top": 410, - "bottom": 447, - "left": 1267, - "right": 1598 - } - }, - { - "doc_offset": { - "start": 1443, - "end": 1454 - }, - "page_num": 1, - "text": "workflow_id", - "position": { - "top": 502, - "bottom": 539, - "left": 262, - "right": 492 - } - }, - { - "doc_offset": { - "start": 1455, - "end": 1458 - }, - "page_num": 1, - "text": "int", - "position": { - "top": 502, - "bottom": 533, - "left": 891, - "right": 934 - } - }, - { - "doc_offset": { - "start": 1459, - "end": 1480 - }, - "page_num": 1, - "text": "modelGroup.workflowId", - "position": { - "top": 502, - "bottom": 539, - "left": 1267, - "right": 1731 - } - }, - { - "doc_offset": { - "start": 1481, - "end": 1488 - }, - "page_num": 1, - "text": "Example", - "position": { - "top": 632, - "bottom": 671, - "left": 215, - "right": 391 - } - }, - { - "doc_offset": { - "start": 1489, - "end": 1496 - }, - "page_num": 1, - "text": "GraphQL", - "position": { - "top": 631, - "bottom": 671, - "left": 406, - "right": 591 - } - }, - { - "doc_offset": { - "start": 1497, - "end": 1502 - }, - "page_num": 1, - "text": "Query", - "position": { - "top": 631, - "bottom": 671, - "left": 606, - "right": 729 - } - }, - { - "doc_offset": { - "start": 1503, - "end": 1508 - }, - "page_num": 1, - "text": "query", - "position": { - "top": 755, - "bottom": 790, - "left": 244, - "right": 374 - } - }, - { - "doc_offset": { - "start": 1509, - "end": 1515 - }, - "page_num": 1, - "text": "Models", - "position": { - "top": 745, - "bottom": 781, - "left": 403, - "right": 559 - } - }, - { - "doc_offset": { - "start": 1516, - "end": 1517 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 744, - "bottom": 788, - "left": 594, - "right": 613 - } - }, - { - "doc_offset": { - "start": 1518, - "end": 1536 - }, - "page_num": 1, - "text": "modelGroups(limit:", - "position": { - "top": 807, - "bottom": 852, - "left": 332, - "right": 802 - } - }, - { - "doc_offset": { - "start": 1537, - "end": 1542 - }, - "page_num": 1, - "text": "1000)", - "position": { - "top": 807, - "bottom": 851, - "left": 843, - "right": 969 - } - }, - { - "doc_offset": { - "start": 1543, - "end": 1544 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 807, - "bottom": 851, - "left": 1004, - "right": 1024 - } - }, - { - "doc_offset": { - "start": 1545, - "end": 1556 - }, - "page_num": 1, - "text": "modelGroups", - "position": { - "top": 870, - "bottom": 915, - "left": 439, - "right": 728 - } - }, - { - "doc_offset": { - "start": 1557, - "end": 1558 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 869, - "bottom": 913, - "left": 763, - "right": 783 - } - }, - { - "doc_offset": { - "start": 1559, - "end": 1561 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 932, - "bottom": 968, - "left": 548, - "right": 595 - } - }, - { - "doc_offset": { - "start": 1562, - "end": 1566 - }, - "page_num": 1, - "text": "name", - "position": { - "top": 1005, - "bottom": 1031, - "left": 548, - "right": 649 - } - }, - { - "doc_offset": { - "start": 1567, - "end": 1577 - }, - "page_num": 1, - "text": "workflowId", - "position": { - "top": 1057, - "bottom": 1093, - "left": 545, - "right": 809 - } - }, - { - "doc_offset": { - "start": 1578, - "end": 1579 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1119, - "bottom": 1163, - "left": 440, - "right": 460 - } - }, - { - "doc_offset": { - "start": 1580, - "end": 1581 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1182, - "bottom": 1226, - "left": 333, - "right": 352 - } - }, - { - "doc_offset": { - "start": 1582, - "end": 1583 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1244, - "bottom": 1288, - "left": 226, - "right": 245 - } - }, - { - "doc_offset": { - "start": 1584, - "end": 1593 - }, - "page_num": 1, - "text": "Scheduled", - "position": { - "top": 1365, - "bottom": 1398, - "left": 213, - "right": 430 - } - }, - { - "doc_offset": { - "start": 1594, - "end": 1601 - }, - "page_num": 1, - "text": "Process", - "position": { - "top": 1366, - "bottom": 1398, - "left": 448, - "right": 613 - } - }, - { - "doc_offset": { - "start": 1602, - "end": 1607 - }, - "page_num": 1, - "text": "Logic", - "position": { - "top": 1366, - "bottom": 1405, - "left": 629, - "right": 741 - } - }, - { - "doc_offset": { - "start": 1608, - "end": 1612 - }, - "page_num": 1, - "text": "This", - "position": { - "top": 1470, - "bottom": 1501, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 1613, - "end": 1615 - }, - "page_num": 1, - "text": "is", - "position": { - "top": 1470, - "bottom": 1501, - "left": 308, - "right": 335 - } - }, - { - "doc_offset": { - "start": 1616, - "end": 1617 - }, - "page_num": 1, - "text": "a", - "position": { - "top": 1478, - "bottom": 1501, - "left": 351, - "right": 372 - } - }, - { - "doc_offset": { - "start": 1618, - "end": 1629 - }, - "page_num": 1, - "text": "lightweight", - "position": { - "top": 1470, - "bottom": 1510, - "left": 388, - "right": 595 - } - }, - { - "doc_offset": { - "start": 1630, - "end": 1636 - }, - "page_num": 1, - "text": "query.", - "position": { - "top": 1478, - "bottom": 1510, - "left": 611, - "right": 724 - } - }, - { - "doc_offset": { - "start": 1637, - "end": 1640 - }, - "page_num": 1, - "text": "All", - "position": { - "top": 1470, - "bottom": 1501, - "left": 740, - "right": 785 - } - }, - { - "doc_offset": { - "start": 1641, - "end": 1647 - }, - "page_num": 1, - "text": "models", - "position": { - "top": 1470, - "bottom": 1501, - "left": 803, - "right": 942 - } - }, - { - "doc_offset": { - "start": 1648, - "end": 1652 - }, - "page_num": 1, - "text": "will", - "position": { - "top": 1470, - "bottom": 1501, - "left": 957, - "right": 1015 - } - }, - { - "doc_offset": { - "start": 1653, - "end": 1655 - }, - "page_num": 1, - "text": "be", - "position": { - "top": 1470, - "bottom": 1501, - "left": 1033, - "right": 1079 - } - }, - { - "doc_offset": { - "start": 1656, - "end": 1662 - }, - "page_num": 1, - "text": "pulled", - "position": { - "top": 1470, - "bottom": 1510, - "left": 1095, - "right": 1208 - } - }, - { - "doc_offset": { - "start": 1663, - "end": 1668 - }, - "page_num": 1, - "text": "every", - "position": { - "top": 1478, - "bottom": 1510, - "left": 1225, - "right": 1328 - } - }, - { - "doc_offset": { - "start": 1669, - "end": 1673 - }, - "page_num": 1, - "text": "time", - "position": { - "top": 1470, - "bottom": 1501, - "left": 1341, - "right": 1424 - } - }, - { - "doc_offset": { - "start": 1674, - "end": 1677 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1470, - "bottom": 1501, - "left": 1438, - "right": 1498 - } - }, - { - "doc_offset": { - "start": 1678, - "end": 1689 - }, - "page_num": 1, - "text": "integration", - "position": { - "top": 1470, - "bottom": 1510, - "left": 1514, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 1690, - "end": 1692 - }, - "page_num": 1, - "text": "is", - "position": { - "top": 1470, - "bottom": 1501, - "left": 1734, - "right": 1761 - } - }, - { - "doc_offset": { - "start": 1693, - "end": 1697 - }, - "page_num": 1, - "text": "run.", - "position": { - "top": 1478, - "bottom": 1501, - "left": 1777, - "right": 1846 - } - }, - { - "doc_offset": { - "start": 1698, - "end": 1702 - }, - "page_num": 1, - "text": "Data", - "position": { - "top": 1576, - "bottom": 1608, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 1703, - "end": 1717 - }, - "page_num": 1, - "text": "Reconciliation", - "position": { - "top": 1576, - "bottom": 1608, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 1718, - "end": 1721 - }, - "page_num": 1, - "text": "The", - "position": { - "top": 1680, - "bottom": 1711, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 1722, - "end": 1728 - }, - "page_num": 1, - "text": "output", - "position": { - "top": 1682, - "bottom": 1720, - "left": 304, - "right": 428 - } - }, - { - "doc_offset": { - "start": 1729, - "end": 1733 - }, - "page_num": 1, - "text": "will", - "position": { - "top": 1680, - "bottom": 1711, - "left": 447, - "right": 506 - } - }, - { - "doc_offset": { - "start": 1734, - "end": 1741 - }, - "page_num": 1, - "text": "include", - "position": { - "top": 1680, - "bottom": 1711, - "left": 529, - "right": 666 - } - }, - { - "doc_offset": { - "start": 1742, - "end": 1745 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1680, - "bottom": 1711, - "left": 685, - "right": 745 - } - }, - { - "doc_offset": { - "start": 1746, - "end": 1753 - }, - "page_num": 1, - "text": "primary", - "position": { - "top": 1680, - "bottom": 1720, - "left": 766, - "right": 910 - } - }, - { - "doc_offset": { - "start": 1754, - "end": 1757 - }, - "page_num": 1, - "text": "key", - "position": { - "top": 1680, - "bottom": 1720, - "left": 931, - "right": 995 - } - }, - { - "doc_offset": { - "start": 1758, - "end": 1760 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 1681, - "bottom": 1711, - "left": 1031, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 1761, - "end": 1767 - }, - "page_num": 1, - "text": "needed", - "position": { - "top": 1680, - "bottom": 1711, - "left": 1107, - "right": 1248 - } - }, - { - "doc_offset": { - "start": 1768, - "end": 1770 - }, - "page_num": 1, - "text": "to", - "position": { - "top": 1682, - "bottom": 1711, - "left": 1269, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 1771, - "end": 1777 - }, - "page_num": 1, - "text": "update", - "position": { - "top": 1680, - "bottom": 1720, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 1778, - "end": 1786 - }, - "page_num": 1, - "text": "existing", - "position": { - "top": 1680, - "bottom": 1720, - "left": 1481, - "right": 1627 - } - }, - { - "doc_offset": { - "start": 1787, - "end": 1791 - }, - "page_num": 1, - "text": "rows", - "position": { - "top": 1688, - "bottom": 1711, - "left": 1650, - "right": 1740 - } - }, - { - "doc_offset": { - "start": 1792, - "end": 1795 - }, - "page_num": 1, - "text": "and", - "position": { - "top": 1680, - "bottom": 1711, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 1796, - "end": 1802 - }, - "page_num": 1, - "text": "insert", - "position": { - "top": 1680, - "bottom": 1711, - "left": 1853, - "right": 1957 - } - }, - { - "doc_offset": { - "start": 1803, - "end": 1806 - }, - "page_num": 1, - "text": "new", - "position": { - "top": 1688, - "bottom": 1711, - "left": 1978, - "right": 2055 - } - }, - { - "doc_offset": { - "start": 1807, - "end": 1811 - }, - "page_num": 1, - "text": "rows", - "position": { - "top": 1688, - "bottom": 1711, - "left": 2076, - "right": 2166 - } - }, - { - "doc_offset": { - "start": 1812, - "end": 1816 - }, - "page_num": 1, - "text": "into", - "position": { - "top": 1680, - "bottom": 1711, - "left": 2188, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 1817, - "end": 1820 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1680, - "bottom": 1711, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 1821, - "end": 1828 - }, - "page_num": 1, - "text": "Metrics", - "position": { - "top": 1741, - "bottom": 1773, - "left": 216, - "right": 356 - } - }, - { - "doc_offset": { - "start": 1829, - "end": 1838 - }, - "page_num": 1, - "text": "database.", - "position": { - "top": 1741, - "bottom": 1773, - "left": 371, - "right": 559 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4288/107455/101154/page_info_2.json b/tests/data/etloutput/4288/107455/101154/page_info_2.json deleted file mode 100644 index 7ba2d59..0000000 --- a/tests/data/etloutput/4288/107455/101154/page_info_2.json +++ /dev/null @@ -1,2324 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 1839, - "end": 3125 - }, - "page_num": 2, - "text": "1.3\nSubmission\nColumn\nType\nGraphQL Source\nid\ncreated_at\ndatetime\nsubmission.createdAt\nprocessed_at\ndatetime\nreviewer_id\nint\nreview_started_at\ndatetime\nsubmission.review.startedAt 2\nreview_completed_at\ndatetime\nrejected\nbool\nrejection_reason\nstr\ncompleted_at\ndatetime\nretrieved_at\ndatetime\nfailed\nbool\nstatus\nenum\nworkflow_id\nint\nsubmission.id\nint\nsubmission.review.completedAt 1\nsubmission.review.createdBy 2\nsubmission.review.completedAt 2\nsubmission.review.rejected 2\nsubmission.review.notes 2\nsubmission.completedAt\nsubmission.updatedAt 3\nsubmission.status 4\nsubmission.status\nsubmission.workflowId\n1 The timestamp for submission processing being completed is not directly available on the submission object.\nInstead it's approximated by the completion time of Auto Review in the reviews list\n(where reviewType == \u201cAUTO\u201d).\n2 The HITL review data points must come from the Manual Review in the reviews list\n(where reviewType == \u201cMANUAL\u201d).\n3 The time of retrieval is not directly available on the submission object. Instead it's approximated by the last\nupdate time of the submission once the retrieved flag is set.\n4 The failure status is not directly available on the submission object as a boolean. Instead it's derived using the\nstatus\nof the submission (where status == \u201cFAILED\u201d)." - } - ], - "tokens": [ - { - "doc_offset": { - "start": 1839, - "end": 1842 - }, - "page_num": 2, - "text": "1.3", - "position": { - "top": 141, - "bottom": 183, - "left": 219, - "right": 308 - } - }, - { - "doc_offset": { - "start": 1843, - "end": 1853 - }, - "page_num": 2, - "text": "Submission", - "position": { - "top": 140, - "bottom": 184, - "left": 366, - "right": 721 - } - }, - { - "doc_offset": { - "start": 1854, - "end": 1860 - }, - "page_num": 2, - "text": "Column", - "position": { - "top": 298, - "bottom": 331, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 1861, - "end": 1865 - }, - "page_num": 2, - "text": "Type", - "position": { - "top": 299, - "bottom": 338, - "left": 951, - "right": 1046 - } - }, - { - "doc_offset": { - "start": 1866, - "end": 1873 - }, - "page_num": 2, - "text": "GraphQL", - "position": { - "top": 298, - "bottom": 338, - "left": 1312, - "right": 1497 - } - }, - { - "doc_offset": { - "start": 1874, - "end": 1880 - }, - "page_num": 2, - "text": "Source", - "position": { - "top": 298, - "bottom": 331, - "left": 1511, - "right": 1656 - } - }, - { - "doc_offset": { - "start": 1881, - "end": 1883 - }, - "page_num": 2, - "text": "id", - "position": { - "top": 400, - "bottom": 432, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 1884, - "end": 1894 - }, - "page_num": 2, - "text": "created_at", - "position": { - "top": 492, - "bottom": 529, - "left": 263, - "right": 466 - } - }, - { - "doc_offset": { - "start": 1895, - "end": 1903 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 492, - "bottom": 524, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 1904, - "end": 1924 - }, - "page_num": 2, - "text": "submission.createdAt", - "position": { - "top": 492, - "bottom": 522, - "left": 1328, - "right": 1768 - } - }, - { - "doc_offset": { - "start": 1925, - "end": 1937 - }, - "page_num": 2, - "text": "processed_at", - "position": { - "top": 590, - "bottom": 630, - "left": 264, - "right": 524 - } - }, - { - "doc_offset": { - "start": 1938, - "end": 1946 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 590, - "bottom": 622, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 1947, - "end": 1958 - }, - "page_num": 2, - "text": "reviewer_id", - "position": { - "top": 693, - "bottom": 730, - "left": 264, - "right": 479 - } - }, - { - "doc_offset": { - "start": 1959, - "end": 1962 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 693, - "bottom": 724, - "left": 954, - "right": 997 - } - }, - { - "doc_offset": { - "start": 1963, - "end": 1980 - }, - "page_num": 2, - "text": "review_started_at", - "position": { - "top": 796, - "bottom": 832, - "left": 264, - "right": 603 - } - }, - { - "doc_offset": { - "start": 1981, - "end": 1989 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 796, - "bottom": 827, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 1990, - "end": 2017 - }, - "page_num": 2, - "text": "submission.review.startedAt", - "position": { - "top": 805, - "bottom": 835, - "left": 1328, - "right": 1924 - } - }, - { - "doc_offset": { - "start": 2018, - "end": 2019 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 800, - "bottom": 820, - "left": 1944, - "right": 1960 - } - }, - { - "doc_offset": { - "start": 2020, - "end": 2039 - }, - "page_num": 2, - "text": "review_completed_at", - "position": { - "top": 899, - "bottom": 938, - "left": 264, - "right": 674 - } - }, - { - "doc_offset": { - "start": 2040, - "end": 2048 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 899, - "bottom": 930, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 2049, - "end": 2057 - }, - "page_num": 2, - "text": "rejected", - "position": { - "top": 1001, - "bottom": 1041, - "left": 264, - "right": 415 - } - }, - { - "doc_offset": { - "start": 2058, - "end": 2062 - }, - "page_num": 2, - "text": "bool", - "position": { - "top": 1001, - "bottom": 1033, - "left": 954, - "right": 1034 - } - }, - { - "doc_offset": { - "start": 2063, - "end": 2079 - }, - "page_num": 2, - "text": "rejection_reason", - "position": { - "top": 1104, - "bottom": 1144, - "left": 264, - "right": 579 - } - }, - { - "doc_offset": { - "start": 2080, - "end": 2083 - }, - "page_num": 2, - "text": "str", - "position": { - "top": 1106, - "bottom": 1136, - "left": 952, - "right": 1001 - } - }, - { - "doc_offset": { - "start": 2084, - "end": 2096 - }, - "page_num": 2, - "text": "completed_at", - "position": { - "top": 1202, - "bottom": 1242, - "left": 263, - "right": 527 - } - }, - { - "doc_offset": { - "start": 2097, - "end": 2105 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 1202, - "bottom": 1233, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 2106, - "end": 2118 - }, - "page_num": 2, - "text": "retrieved_at", - "position": { - "top": 1299, - "bottom": 1336, - "left": 264, - "right": 489 - } - }, - { - "doc_offset": { - "start": 2119, - "end": 2127 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 1299, - "bottom": 1331, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 2128, - "end": 2134 - }, - "page_num": 2, - "text": "failed", - "position": { - "top": 1402, - "bottom": 1434, - "left": 261, - "right": 363 - } - }, - { - "doc_offset": { - "start": 2135, - "end": 2139 - }, - "page_num": 2, - "text": "bool", - "position": { - "top": 1402, - "bottom": 1434, - "left": 954, - "right": 1034 - } - }, - { - "doc_offset": { - "start": 2140, - "end": 2146 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 1502, - "bottom": 1532, - "left": 262, - "right": 379 - } - }, - { - "doc_offset": { - "start": 2147, - "end": 2151 - }, - "page_num": 2, - "text": "enum", - "position": { - "top": 1508, - "bottom": 1532, - "left": 952, - "right": 1058 - } - }, - { - "doc_offset": { - "start": 2152, - "end": 2163 - }, - "page_num": 2, - "text": "workflow_id", - "position": { - "top": 1592, - "bottom": 1629, - "left": 262, - "right": 492 - } - }, - { - "doc_offset": { - "start": 2164, - "end": 2167 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 400, - "bottom": 431, - "left": 954, - "right": 997 - } - }, - { - "doc_offset": { - "start": 2168, - "end": 2181 - }, - "page_num": 2, - "text": "submission.id", - "position": { - "top": 399, - "bottom": 430, - "left": 1328, - "right": 1612 - } - }, - { - "doc_offset": { - "start": 2182, - "end": 2185 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 1592, - "bottom": 1624, - "left": 954, - "right": 997 - } - }, - { - "doc_offset": { - "start": 2186, - "end": 2215 - }, - "page_num": 2, - "text": "submission.review.completedAt", - "position": { - "top": 599, - "bottom": 637, - "left": 1328, - "right": 1969 - } - }, - { - "doc_offset": { - "start": 2216, - "end": 2217 - }, - "page_num": 2, - "text": "1", - "position": { - "top": 594, - "bottom": 614, - "left": 1988, - "right": 2001 - } - }, - { - "doc_offset": { - "start": 2218, - "end": 2245 - }, - "page_num": 2, - "text": "submission.review.createdBy", - "position": { - "top": 702, - "bottom": 740, - "left": 1328, - "right": 1926 - } - }, - { - "doc_offset": { - "start": 2246, - "end": 2247 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 697, - "bottom": 717, - "left": 1944, - "right": 1960 - } - }, - { - "doc_offset": { - "start": 2248, - "end": 2277 - }, - "page_num": 2, - "text": "submission.review.completedAt", - "position": { - "top": 908, - "bottom": 945, - "left": 1328, - "right": 1969 - } - }, - { - "doc_offset": { - "start": 2278, - "end": 2279 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 903, - "bottom": 923, - "left": 1988, - "right": 2005 - } - }, - { - "doc_offset": { - "start": 2280, - "end": 2306 - }, - "page_num": 2, - "text": "submission.review.rejected", - "position": { - "top": 1010, - "bottom": 1049, - "left": 1328, - "right": 1902 - } - }, - { - "doc_offset": { - "start": 2307, - "end": 2308 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 1006, - "bottom": 1025, - "left": 1921, - "right": 1938 - } - }, - { - "doc_offset": { - "start": 2309, - "end": 2332 - }, - "page_num": 2, - "text": "submission.review.notes", - "position": { - "top": 1113, - "bottom": 1144, - "left": 1328, - "right": 1835 - } - }, - { - "doc_offset": { - "start": 2333, - "end": 2334 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 1108, - "bottom": 1128, - "left": 1854, - "right": 1871 - } - }, - { - "doc_offset": { - "start": 2335, - "end": 2357 - }, - "page_num": 2, - "text": "submission.completedAt", - "position": { - "top": 1201, - "bottom": 1239, - "left": 1328, - "right": 1813 - } - }, - { - "doc_offset": { - "start": 2358, - "end": 2378 - }, - "page_num": 2, - "text": "submission.updatedAt", - "position": { - "top": 1308, - "bottom": 1346, - "left": 1328, - "right": 1768 - } - }, - { - "doc_offset": { - "start": 2379, - "end": 2380 - }, - "page_num": 2, - "text": "3", - "position": { - "top": 1304, - "bottom": 1330, - "left": 1787, - "right": 1804 - } - }, - { - "doc_offset": { - "start": 2381, - "end": 2398 - }, - "page_num": 2, - "text": "submission.status", - "position": { - "top": 1411, - "bottom": 1442, - "left": 1328, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 2399, - "end": 2400 - }, - "page_num": 2, - "text": "4", - "position": { - "top": 1407, - "bottom": 1433, - "left": 1719, - "right": 1738 - } - }, - { - "doc_offset": { - "start": 2401, - "end": 2418 - }, - "page_num": 2, - "text": "submission.status", - "position": { - "top": 1499, - "bottom": 1530, - "left": 1328, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 2419, - "end": 2440 - }, - "page_num": 2, - "text": "submission.workflowId", - "position": { - "top": 1592, - "bottom": 1622, - "left": 1328, - "right": 1790 - } - }, - { - "doc_offset": { - "start": 2441, - "end": 2442 - }, - "page_num": 2, - "text": "1", - "position": { - "top": 1718, - "bottom": 1742, - "left": 215, - "right": 224 - } - }, - { - "doc_offset": { - "start": 2443, - "end": 2446 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 1727, - "bottom": 1757, - "left": 248, - "right": 315 - } - }, - { - "doc_offset": { - "start": 2447, - "end": 2456 - }, - "page_num": 2, - "text": "timestamp", - "position": { - "top": 1727, - "bottom": 1764, - "left": 333, - "right": 523 - } - }, - { - "doc_offset": { - "start": 2457, - "end": 2460 - }, - "page_num": 2, - "text": "for", - "position": { - "top": 1727, - "bottom": 1757, - "left": 542, - "right": 590 - } - }, - { - "doc_offset": { - "start": 2461, - "end": 2471 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 1727, - "bottom": 1757, - "left": 608, - "right": 811 - } - }, - { - "doc_offset": { - "start": 2472, - "end": 2482 - }, - "page_num": 2, - "text": "processing", - "position": { - "top": 1727, - "bottom": 1765, - "left": 833, - "right": 1027 - } - }, - { - "doc_offset": { - "start": 2483, - "end": 2488 - }, - "page_num": 2, - "text": "being", - "position": { - "top": 1727, - "bottom": 1765, - "left": 1049, - "right": 1145 - } - }, - { - "doc_offset": { - "start": 2489, - "end": 2498 - }, - "page_num": 2, - "text": "completed", - "position": { - "top": 1727, - "bottom": 1764, - "left": 1166, - "right": 1355 - } - }, - { - "doc_offset": { - "start": 2499, - "end": 2501 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 1727, - "bottom": 1757, - "left": 1378, - "right": 1403 - } - }, - { - "doc_offset": { - "start": 2502, - "end": 2505 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 1729, - "bottom": 1757, - "left": 1424, - "right": 1479 - } - }, - { - "doc_offset": { - "start": 2506, - "end": 2514 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 1727, - "bottom": 1764, - "left": 1498, - "right": 1628 - } - }, - { - "doc_offset": { - "start": 2515, - "end": 2524 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 1727, - "bottom": 1757, - "left": 1647, - "right": 1803 - } - }, - { - "doc_offset": { - "start": 2525, - "end": 2527 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 1735, - "bottom": 1757, - "left": 1823, - "right": 1864 - } - }, - { - "doc_offset": { - "start": 2528, - "end": 2531 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1727, - "bottom": 1757, - "left": 1884, - "right": 1940 - } - }, - { - "doc_offset": { - "start": 2532, - "end": 2542 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 1728, - "bottom": 1757, - "left": 1975, - "right": 2177 - } - }, - { - "doc_offset": { - "start": 2543, - "end": 2550 - }, - "page_num": 2, - "text": "object.", - "position": { - "top": 1727, - "bottom": 1764, - "left": 2214, - "right": 2334 - } - }, - { - "doc_offset": { - "start": 2551, - "end": 2558 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 1777, - "bottom": 1806, - "left": 247, - "right": 375 - } - }, - { - "doc_offset": { - "start": 2559, - "end": 2563 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 1777, - "bottom": 1806, - "left": 391, - "right": 441 - } - }, - { - "doc_offset": { - "start": 2564, - "end": 2576 - }, - "page_num": 2, - "text": "approximated", - "position": { - "top": 1777, - "bottom": 1814, - "left": 455, - "right": 702 - } - }, - { - "doc_offset": { - "start": 2577, - "end": 2579 - }, - "page_num": 2, - "text": "by", - "position": { - "top": 1777, - "bottom": 1814, - "left": 719, - "right": 760 - } - }, - { - "doc_offset": { - "start": 2580, - "end": 2583 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1777, - "bottom": 1806, - "left": 772, - "right": 828 - } - }, - { - "doc_offset": { - "start": 2584, - "end": 2594 - }, - "page_num": 2, - "text": "completion", - "position": { - "top": 1777, - "bottom": 1814, - "left": 842, - "right": 1040 - } - }, - { - "doc_offset": { - "start": 2595, - "end": 2599 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1055, - "right": 1132 - } - }, - { - "doc_offset": { - "start": 2600, - "end": 2602 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 1776, - "bottom": 1806, - "left": 1145, - "right": 1179 - } - }, - { - "doc_offset": { - "start": 2603, - "end": 2607 - }, - "page_num": 2, - "text": "Auto", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1190, - "right": 1274 - } - }, - { - "doc_offset": { - "start": 2608, - "end": 2614 - }, - "page_num": 2, - "text": "Review", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1290, - "right": 1418 - } - }, - { - "doc_offset": { - "start": 2615, - "end": 2617 - }, - "page_num": 2, - "text": "in", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1432, - "right": 1459 - } - }, - { - "doc_offset": { - "start": 2618, - "end": 2621 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1473, - "right": 1529 - } - }, - { - "doc_offset": { - "start": 2622, - "end": 2629 - }, - "page_num": 2, - "text": "reviews", - "position": { - "top": 1778, - "bottom": 1806, - "left": 1559, - "right": 1697 - } - }, - { - "doc_offset": { - "start": 2630, - "end": 2634 - }, - "page_num": 2, - "text": "list", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1728, - "right": 1775 - } - }, - { - "doc_offset": { - "start": 2635, - "end": 2641 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 1826, - "bottom": 1863, - "left": 245, - "right": 363 - } - }, - { - "doc_offset": { - "start": 2642, - "end": 2652 - }, - "page_num": 2, - "text": "reviewType", - "position": { - "top": 1828, - "bottom": 1863, - "left": 393, - "right": 594 - } - }, - { - "doc_offset": { - "start": 2653, - "end": 2655 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 1840, - "bottom": 1851, - "left": 623, - "right": 668 - } - }, - { - "doc_offset": { - "start": 2656, - "end": 2664 - }, - "page_num": 2, - "text": "\u201cAUTO\u201d).", - "position": { - "top": 1826, - "bottom": 1863, - "left": 684, - "right": 844 - } - }, - { - "doc_offset": { - "start": 2665, - "end": 2666 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 1923, - "bottom": 1947, - "left": 213, - "right": 229 - } - }, - { - "doc_offset": { - "start": 2667, - "end": 2670 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 1932, - "bottom": 1961, - "left": 242, - "right": 309 - } - }, - { - "doc_offset": { - "start": 2671, - "end": 2675 - }, - "page_num": 2, - "text": "HITL", - "position": { - "top": 1932, - "bottom": 1961, - "left": 324, - "right": 407 - } - }, - { - "doc_offset": { - "start": 2676, - "end": 2682 - }, - "page_num": 2, - "text": "review", - "position": { - "top": 1932, - "bottom": 1961, - "left": 421, - "right": 534 - } - }, - { - "doc_offset": { - "start": 2683, - "end": 2687 - }, - "page_num": 2, - "text": "data", - "position": { - "top": 1932, - "bottom": 1961, - "left": 548, - "right": 626 - } - }, - { - "doc_offset": { - "start": 2688, - "end": 2694 - }, - "page_num": 2, - "text": "points", - "position": { - "top": 1932, - "bottom": 1969, - "left": 641, - "right": 749 - } - }, - { - "doc_offset": { - "start": 2695, - "end": 2699 - }, - "page_num": 2, - "text": "must", - "position": { - "top": 1933, - "bottom": 1961, - "left": 764, - "right": 851 - } - }, - { - "doc_offset": { - "start": 2700, - "end": 2704 - }, - "page_num": 2, - "text": "come", - "position": { - "top": 1939, - "bottom": 1961, - "left": 865, - "right": 964 - } - }, - { - "doc_offset": { - "start": 2705, - "end": 2709 - }, - "page_num": 2, - "text": "from", - "position": { - "top": 1931, - "bottom": 1961, - "left": 977, - "right": 1056 - } - }, - { - "doc_offset": { - "start": 2710, - "end": 2713 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1071, - "right": 1127 - } - }, - { - "doc_offset": { - "start": 2714, - "end": 2720 - }, - "page_num": 2, - "text": "Manual", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1142, - "right": 1269 - } - }, - { - "doc_offset": { - "start": 2721, - "end": 2727 - }, - "page_num": 2, - "text": "Review", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1286, - "right": 1414 - } - }, - { - "doc_offset": { - "start": 2728, - "end": 2730 - }, - "page_num": 2, - "text": "in", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1429, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 2731, - "end": 2734 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1469, - "right": 1525 - } - }, - { - "doc_offset": { - "start": 2735, - "end": 2742 - }, - "page_num": 2, - "text": "reviews", - "position": { - "top": 1933, - "bottom": 1961, - "left": 1556, - "right": 1694 - } - }, - { - "doc_offset": { - "start": 2743, - "end": 2747 - }, - "page_num": 2, - "text": "list", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1724, - "right": 1772 - } - }, - { - "doc_offset": { - "start": 2748, - "end": 2754 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 1981, - "bottom": 2018, - "left": 245, - "right": 363 - } - }, - { - "doc_offset": { - "start": 2755, - "end": 2765 - }, - "page_num": 2, - "text": "reviewType", - "position": { - "top": 1983, - "bottom": 2018, - "left": 393, - "right": 594 - } - }, - { - "doc_offset": { - "start": 2766, - "end": 2768 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 1995, - "bottom": 2006, - "left": 623, - "right": 668 - } - }, - { - "doc_offset": { - "start": 2769, - "end": 2779 - }, - "page_num": 2, - "text": "\u201cMANUAL\u201d).", - "position": { - "top": 1981, - "bottom": 2018, - "left": 684, - "right": 903 - } - }, - { - "doc_offset": { - "start": 2780, - "end": 2781 - }, - "page_num": 2, - "text": "3", - "position": { - "top": 2078, - "bottom": 2102, - "left": 213, - "right": 229 - } - }, - { - "doc_offset": { - "start": 2782, - "end": 2785 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 2086, - "bottom": 2116, - "left": 249, - "right": 316 - } - }, - { - "doc_offset": { - "start": 2786, - "end": 2790 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 2086, - "bottom": 2116, - "left": 336, - "right": 413 - } - }, - { - "doc_offset": { - "start": 2791, - "end": 2793 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2086, - "bottom": 2116, - "left": 434, - "right": 468 - } - }, - { - "doc_offset": { - "start": 2794, - "end": 2803 - }, - "page_num": 2, - "text": "retrieval", - "position": { - "top": 2086, - "bottom": 2116, - "left": 489, - "right": 626 - } - }, - { - "doc_offset": { - "start": 2804, - "end": 2806 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2086, - "bottom": 2116, - "left": 650, - "right": 676 - } - }, - { - "doc_offset": { - "start": 2807, - "end": 2810 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 2088, - "bottom": 2116, - "left": 698, - "right": 753 - } - }, - { - "doc_offset": { - "start": 2811, - "end": 2819 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 2086, - "bottom": 2124, - "left": 774, - "right": 904 - } - }, - { - "doc_offset": { - "start": 2820, - "end": 2829 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 2086, - "bottom": 2116, - "left": 924, - "right": 1081 - } - }, - { - "doc_offset": { - "start": 2830, - "end": 2832 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 2094, - "bottom": 2116, - "left": 1102, - "right": 1143 - } - }, - { - "doc_offset": { - "start": 2833, - "end": 2836 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2086, - "bottom": 2116, - "left": 1165, - "right": 1221 - } - }, - { - "doc_offset": { - "start": 2837, - "end": 2847 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2088, - "bottom": 2116, - "left": 1257, - "right": 1459 - } - }, - { - "doc_offset": { - "start": 2848, - "end": 2855 - }, - "page_num": 2, - "text": "object.", - "position": { - "top": 2086, - "bottom": 2123, - "left": 1496, - "right": 1615 - } - }, - { - "doc_offset": { - "start": 2856, - "end": 2863 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 2086, - "bottom": 2116, - "left": 1641, - "right": 1769 - } - }, - { - "doc_offset": { - "start": 2864, - "end": 2868 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 2086, - "bottom": 2116, - "left": 1793, - "right": 1843 - } - }, - { - "doc_offset": { - "start": 2869, - "end": 2881 - }, - "page_num": 2, - "text": "approximated", - "position": { - "top": 2086, - "bottom": 2123, - "left": 1864, - "right": 2112 - } - }, - { - "doc_offset": { - "start": 2882, - "end": 2884 - }, - "page_num": 2, - "text": "by", - "position": { - "top": 2086, - "bottom": 2124, - "left": 2136, - "right": 2177 - } - }, - { - "doc_offset": { - "start": 2885, - "end": 2888 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2086, - "bottom": 2116, - "left": 2197, - "right": 2253 - } - }, - { - "doc_offset": { - "start": 2889, - "end": 2893 - }, - "page_num": 2, - "text": "last", - "position": { - "top": 2086, - "bottom": 2116, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 2894, - "end": 2900 - }, - "page_num": 2, - "text": "update", - "position": { - "top": 2136, - "bottom": 2173, - "left": 246, - "right": 370 - } - }, - { - "doc_offset": { - "start": 2901, - "end": 2905 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 2136, - "bottom": 2166, - "left": 382, - "right": 459 - } - }, - { - "doc_offset": { - "start": 2906, - "end": 2908 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2136, - "bottom": 2166, - "left": 473, - "right": 507 - } - }, - { - "doc_offset": { - "start": 2909, - "end": 2912 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2136, - "bottom": 2166, - "left": 518, - "right": 574 - } - }, - { - "doc_offset": { - "start": 2913, - "end": 2923 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2136, - "bottom": 2166, - "left": 588, - "right": 790 - } - }, - { - "doc_offset": { - "start": 2924, - "end": 2928 - }, - "page_num": 2, - "text": "once", - "position": { - "top": 2144, - "bottom": 2166, - "left": 806, - "right": 893 - } - }, - { - "doc_offset": { - "start": 2929, - "end": 2932 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2136, - "bottom": 2166, - "left": 905, - "right": 961 - } - }, - { - "doc_offset": { - "start": 2933, - "end": 2942 - }, - "page_num": 2, - "text": "retrieved", - "position": { - "top": 2137, - "bottom": 2166, - "left": 992, - "right": 1172 - } - }, - { - "doc_offset": { - "start": 2943, - "end": 2947 - }, - "page_num": 2, - "text": "flag", - "position": { - "top": 2136, - "bottom": 2174, - "left": 1200, - "right": 1263 - } - }, - { - "doc_offset": { - "start": 2948, - "end": 2950 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2136, - "bottom": 2166, - "left": 1279, - "right": 1305 - } - }, - { - "doc_offset": { - "start": 2951, - "end": 2955 - }, - "page_num": 2, - "text": "set.", - "position": { - "top": 2138, - "bottom": 2166, - "left": 1318, - "right": 1380 - } - }, - { - "doc_offset": { - "start": 2956, - "end": 2957 - }, - "page_num": 2, - "text": "4", - "position": { - "top": 2233, - "bottom": 2257, - "left": 213, - "right": 229 - } - }, - { - "doc_offset": { - "start": 2958, - "end": 2961 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 2241, - "bottom": 2271, - "left": 246, - "right": 313 - } - }, - { - "doc_offset": { - "start": 2962, - "end": 2969 - }, - "page_num": 2, - "text": "failure", - "position": { - "top": 2241, - "bottom": 2271, - "left": 330, - "right": 437 - } - }, - { - "doc_offset": { - "start": 2970, - "end": 2976 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2243, - "bottom": 2271, - "left": 455, - "right": 563 - } - }, - { - "doc_offset": { - "start": 2977, - "end": 2979 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2241, - "bottom": 2271, - "left": 582, - "right": 608 - } - }, - { - "doc_offset": { - "start": 2980, - "end": 2983 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 2243, - "bottom": 2271, - "left": 627, - "right": 682 - } - }, - { - "doc_offset": { - "start": 2984, - "end": 2992 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 2241, - "bottom": 2279, - "left": 700, - "right": 830 - } - }, - { - "doc_offset": { - "start": 2993, - "end": 3002 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 2241, - "bottom": 2271, - "left": 847, - "right": 1003 - } - }, - { - "doc_offset": { - "start": 3003, - "end": 3005 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 2249, - "bottom": 2271, - "left": 1021, - "right": 1063 - } - }, - { - "doc_offset": { - "start": 3006, - "end": 3009 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2241, - "bottom": 2271, - "left": 1081, - "right": 1137 - } - }, - { - "doc_offset": { - "start": 3010, - "end": 3020 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2243, - "bottom": 2271, - "left": 1170, - "right": 1372 - } - }, - { - "doc_offset": { - "start": 3021, - "end": 3027 - }, - "page_num": 2, - "text": "object", - "position": { - "top": 2241, - "bottom": 2278, - "left": 1405, - "right": 1515 - } - }, - { - "doc_offset": { - "start": 3028, - "end": 3030 - }, - "page_num": 2, - "text": "as", - "position": { - "top": 2249, - "bottom": 2271, - "left": 1533, - "right": 1572 - } - }, - { - "doc_offset": { - "start": 3031, - "end": 3032 - }, - "page_num": 2, - "text": "a", - "position": { - "top": 2249, - "bottom": 2271, - "left": 1590, - "right": 1610 - } - }, - { - "doc_offset": { - "start": 3033, - "end": 3041 - }, - "page_num": 2, - "text": "boolean.", - "position": { - "top": 2241, - "bottom": 2271, - "left": 1629, - "right": 1780 - } - }, - { - "doc_offset": { - "start": 3042, - "end": 3049 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 2241, - "bottom": 2271, - "left": 1802, - "right": 1930 - } - }, - { - "doc_offset": { - "start": 3050, - "end": 3054 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 2241, - "bottom": 2271, - "left": 1951, - "right": 2000 - } - }, - { - "doc_offset": { - "start": 3055, - "end": 3062 - }, - "page_num": 2, - "text": "derived", - "position": { - "top": 2241, - "bottom": 2271, - "left": 2018, - "right": 2149 - } - }, - { - "doc_offset": { - "start": 3063, - "end": 3068 - }, - "page_num": 2, - "text": "using", - "position": { - "top": 2241, - "bottom": 2279, - "left": 2169, - "right": 2262 - } - }, - { - "doc_offset": { - "start": 3069, - "end": 3072 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2241, - "bottom": 2271, - "left": 2280, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 3073, - "end": 3079 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2295, - "bottom": 2321, - "left": 260, - "right": 379 - } - }, - { - "doc_offset": { - "start": 3080, - "end": 3082 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2291, - "bottom": 2320, - "left": 408, - "right": 442 - } - }, - { - "doc_offset": { - "start": 3083, - "end": 3086 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2291, - "bottom": 2320, - "left": 454, - "right": 510 - } - }, - { - "doc_offset": { - "start": 3087, - "end": 3097 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2291, - "bottom": 2320, - "left": 523, - "right": 725 - } - }, - { - "doc_offset": { - "start": 3098, - "end": 3104 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 2290, - "bottom": 2328, - "left": 741, - "right": 859 - } - }, - { - "doc_offset": { - "start": 3105, - "end": 3111 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2295, - "bottom": 2321, - "left": 888, - "right": 1007 - } - }, - { - "doc_offset": { - "start": 3112, - "end": 3114 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 2304, - "bottom": 2315, - "left": 1036, - "right": 1081 - } - }, - { - "doc_offset": { - "start": 3115, - "end": 3125 - }, - "page_num": 2, - "text": "\u201cFAILED\u201d).", - "position": { - "top": 2290, - "bottom": 2328, - "left": 1097, - "right": 1281 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4288/107455/101154/page_info_3.json b/tests/data/etloutput/4288/107455/101154/page_info_3.json deleted file mode 100644 index d9556ac..0000000 --- a/tests/data/etloutput/4288/107455/101154/page_info_3.json +++ /dev/null @@ -1,2128 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 3126, - "end": 4167 - }, - "page_num": 3, - "text": "Example GraphQL Query\nquery Submissions {\nsubmissions(orderBy: UPDATED_BY, desc: true, limit: 1000) {\nsubmissions {\nid\ncreatedAt\ninputFiles {\nid\nfilename\n}\nreviews {\ncreatedBy\nstartedAt\ncompletedAt\nrejected\nnotes\nreviewType\n}\nretrieved\nupdatedAt\nworkflowId\n}\n}\n}\nScheduled Process Logic\nThis is a heavyweight query. Submissions are ordered by updatedAt descending, and results should be\npaginated such that processing can stop once all submissions have been processed whose updatedAt\ndate is greater than the timestamp of the previous run of the integration.\nData Reconciliation\nThe output will include the primary key id needed to update existing rows and insert new rows into the\nMetrics database.\n1.4\nSubmission File\nColumn\nType\nGraphQL Source\nid\nint\nsubmission.inputFile.id\nname\nstr\nsubmission.inputFile.filename\nsubmission_id\nint\nsubmission.id\nSee the Submission section's example GraphQL query.\nData Reconciliation\nThe output will include the primary key id needed to update existing rows and insert new rows into the\nMetrics database." - } - ], - "tokens": [ - { - "doc_offset": { - "start": 3126, - "end": 3133 - }, - "page_num": 3, - "text": "Example", - "position": { - "top": 16, - "bottom": 55, - "left": 215, - "right": 391 - } - }, - { - "doc_offset": { - "start": 3134, - "end": 3141 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 15, - "bottom": 55, - "left": 406, - "right": 591 - } - }, - { - "doc_offset": { - "start": 3142, - "end": 3147 - }, - "page_num": 3, - "text": "Query", - "position": { - "top": 15, - "bottom": 55, - "left": 606, - "right": 729 - } - }, - { - "doc_offset": { - "start": 3148, - "end": 3153 - }, - "page_num": 3, - "text": "query", - "position": { - "top": 139, - "bottom": 174, - "left": 244, - "right": 374 - } - }, - { - "doc_offset": { - "start": 3154, - "end": 3165 - }, - "page_num": 3, - "text": "Submissions", - "position": { - "top": 128, - "bottom": 165, - "left": 405, - "right": 693 - } - }, - { - "doc_offset": { - "start": 3166, - "end": 3167 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 128, - "bottom": 172, - "left": 728, - "right": 747 - } - }, - { - "doc_offset": { - "start": 3168, - "end": 3188 - }, - "page_num": 3, - "text": "submissions(orderBy:", - "position": { - "top": 190, - "bottom": 236, - "left": 334, - "right": 856 - } - }, - { - "doc_offset": { - "start": 3189, - "end": 3200 - }, - "page_num": 3, - "text": "UPDATED_BY,", - "position": { - "top": 192, - "bottom": 235, - "left": 895, - "right": 1178 - } - }, - { - "doc_offset": { - "start": 3201, - "end": 3206 - }, - "page_num": 3, - "text": "desc:", - "position": { - "top": 191, - "bottom": 227, - "left": 1216, - "right": 1338 - } - }, - { - "doc_offset": { - "start": 3207, - "end": 3212 - }, - "page_num": 3, - "text": "true,", - "position": { - "top": 194, - "bottom": 235, - "left": 1376, - "right": 1499 - } - }, - { - "doc_offset": { - "start": 3213, - "end": 3219 - }, - "page_num": 3, - "text": "limit:", - "position": { - "top": 190, - "bottom": 227, - "left": 1538, - "right": 1686 - } - }, - { - "doc_offset": { - "start": 3220, - "end": 3225 - }, - "page_num": 3, - "text": "1000)", - "position": { - "top": 190, - "bottom": 234, - "left": 1727, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 3226, - "end": 3227 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 190, - "bottom": 234, - "left": 1888, - "right": 1907 - } - }, - { - "doc_offset": { - "start": 3228, - "end": 3239 - }, - "page_num": 3, - "text": "submissions", - "position": { - "top": 253, - "bottom": 289, - "left": 441, - "right": 728 - } - }, - { - "doc_offset": { - "start": 3240, - "end": 3241 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 253, - "bottom": 297, - "left": 763, - "right": 783 - } - }, - { - "doc_offset": { - "start": 3242, - "end": 3244 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 315, - "bottom": 352, - "left": 548, - "right": 595 - } - }, - { - "doc_offset": { - "start": 3245, - "end": 3254 - }, - "page_num": 3, - "text": "createdAt", - "position": { - "top": 378, - "bottom": 414, - "left": 548, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3255, - "end": 3265 - }, - "page_num": 3, - "text": "inputFiles", - "position": { - "top": 440, - "bottom": 485, - "left": 548, - "right": 809 - } - }, - { - "doc_offset": { - "start": 3266, - "end": 3267 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 440, - "bottom": 484, - "left": 844, - "right": 863 - } - }, - { - "doc_offset": { - "start": 3268, - "end": 3270 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 503, - "bottom": 539, - "left": 655, - "right": 702 - } - }, - { - "doc_offset": { - "start": 3271, - "end": 3279 - }, - "page_num": 3, - "text": "filename", - "position": { - "top": 565, - "bottom": 602, - "left": 655, - "right": 863 - } - }, - { - "doc_offset": { - "start": 3280, - "end": 3281 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 628, - "bottom": 672, - "left": 547, - "right": 567 - } - }, - { - "doc_offset": { - "start": 3282, - "end": 3289 - }, - "page_num": 3, - "text": "reviews", - "position": { - "top": 690, - "bottom": 727, - "left": 550, - "right": 728 - } - }, - { - "doc_offset": { - "start": 3290, - "end": 3291 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 690, - "bottom": 734, - "left": 763, - "right": 783 - } - }, - { - "doc_offset": { - "start": 3292, - "end": 3301 - }, - "page_num": 3, - "text": "createdBy", - "position": { - "top": 753, - "bottom": 799, - "left": 655, - "right": 892 - } - }, - { - "doc_offset": { - "start": 3302, - "end": 3311 - }, - "page_num": 3, - "text": "startedAt", - "position": { - "top": 816, - "bottom": 852, - "left": 655, - "right": 889 - } - }, - { - "doc_offset": { - "start": 3312, - "end": 3323 - }, - "page_num": 3, - "text": "completedAt", - "position": { - "top": 878, - "bottom": 923, - "left": 655, - "right": 943 - } - }, - { - "doc_offset": { - "start": 3324, - "end": 3332 - }, - "page_num": 3, - "text": "rejected", - "position": { - "top": 940, - "bottom": 986, - "left": 657, - "right": 863 - } - }, - { - "doc_offset": { - "start": 3333, - "end": 3338 - }, - "page_num": 3, - "text": "notes", - "position": { - "top": 1006, - "bottom": 1039, - "left": 655, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3339, - "end": 3349 - }, - "page_num": 3, - "text": "reviewType", - "position": { - "top": 1065, - "bottom": 1111, - "left": 657, - "right": 916 - } - }, - { - "doc_offset": { - "start": 3350, - "end": 3351 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1128, - "bottom": 1172, - "left": 547, - "right": 567 - } - }, - { - "doc_offset": { - "start": 3352, - "end": 3361 - }, - "page_num": 3, - "text": "retrieved", - "position": { - "top": 1190, - "bottom": 1227, - "left": 550, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3362, - "end": 3371 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1253, - "bottom": 1298, - "left": 548, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3372, - "end": 3382 - }, - "page_num": 3, - "text": "workflowId", - "position": { - "top": 1315, - "bottom": 1352, - "left": 545, - "right": 809 - } - }, - { - "doc_offset": { - "start": 3383, - "end": 3384 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1378, - "bottom": 1422, - "left": 440, - "right": 460 - } - }, - { - "doc_offset": { - "start": 3385, - "end": 3386 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1440, - "bottom": 1484, - "left": 333, - "right": 352 - } - }, - { - "doc_offset": { - "start": 3387, - "end": 3388 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1503, - "bottom": 1547, - "left": 226, - "right": 245 - } - }, - { - "doc_offset": { - "start": 3389, - "end": 3398 - }, - "page_num": 3, - "text": "Scheduled", - "position": { - "top": 1623, - "bottom": 1656, - "left": 213, - "right": 430 - } - }, - { - "doc_offset": { - "start": 3399, - "end": 3406 - }, - "page_num": 3, - "text": "Process", - "position": { - "top": 1624, - "bottom": 1656, - "left": 448, - "right": 613 - } - }, - { - "doc_offset": { - "start": 3407, - "end": 3412 - }, - "page_num": 3, - "text": "Logic", - "position": { - "top": 1624, - "bottom": 1664, - "left": 629, - "right": 741 - } - }, - { - "doc_offset": { - "start": 3413, - "end": 3417 - }, - "page_num": 3, - "text": "This", - "position": { - "top": 1728, - "bottom": 1760, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 3418, - "end": 3420 - }, - "page_num": 3, - "text": "is", - "position": { - "top": 1728, - "bottom": 1760, - "left": 314, - "right": 342 - } - }, - { - "doc_offset": { - "start": 3421, - "end": 3422 - }, - "page_num": 3, - "text": "a", - "position": { - "top": 1736, - "bottom": 1760, - "left": 363, - "right": 384 - } - }, - { - "doc_offset": { - "start": 3423, - "end": 3434 - }, - "page_num": 3, - "text": "heavyweight", - "position": { - "top": 1728, - "bottom": 1768, - "left": 406, - "right": 647 - } - }, - { - "doc_offset": { - "start": 3435, - "end": 3441 - }, - "page_num": 3, - "text": "query.", - "position": { - "top": 1736, - "bottom": 1768, - "left": 668, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3442, - "end": 3453 - }, - "page_num": 3, - "text": "Submissions", - "position": { - "top": 1727, - "bottom": 1760, - "left": 805, - "right": 1053 - } - }, - { - "doc_offset": { - "start": 3454, - "end": 3457 - }, - "page_num": 3, - "text": "are", - "position": { - "top": 1736, - "bottom": 1760, - "left": 1074, - "right": 1132 - } - }, - { - "doc_offset": { - "start": 3458, - "end": 3465 - }, - "page_num": 3, - "text": "ordered", - "position": { - "top": 1728, - "bottom": 1760, - "left": 1153, - "right": 1301 - } - }, - { - "doc_offset": { - "start": 3466, - "end": 3468 - }, - "page_num": 3, - "text": "by", - "position": { - "top": 1728, - "bottom": 1768, - "left": 1325, - "right": 1369 - } - }, - { - "doc_offset": { - "start": 3469, - "end": 3478 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1730, - "bottom": 1767, - "left": 1406, - "right": 1601 - } - }, - { - "doc_offset": { - "start": 3479, - "end": 3490 - }, - "page_num": 3, - "text": "descending,", - "position": { - "top": 1728, - "bottom": 1768, - "left": 1639, - "right": 1874 - } - }, - { - "doc_offset": { - "start": 3491, - "end": 3494 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 1728, - "bottom": 1760, - "left": 1898, - "right": 1967 - } - }, - { - "doc_offset": { - "start": 3495, - "end": 3502 - }, - "page_num": 3, - "text": "results", - "position": { - "top": 1728, - "bottom": 1760, - "left": 1992, - "right": 2117 - } - }, - { - "doc_offset": { - "start": 3503, - "end": 3509 - }, - "page_num": 3, - "text": "should", - "position": { - "top": 1728, - "bottom": 1760, - "left": 2139, - "right": 2266 - } - }, - { - "doc_offset": { - "start": 3510, - "end": 3512 - }, - "page_num": 3, - "text": "be", - "position": { - "top": 1728, - "bottom": 1760, - "left": 2291, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 3513, - "end": 3522 - }, - "page_num": 3, - "text": "paginated", - "position": { - "top": 1789, - "bottom": 1830, - "left": 215, - "right": 404 - } - }, - { - "doc_offset": { - "start": 3523, - "end": 3527 - }, - "page_num": 3, - "text": "such", - "position": { - "top": 1789, - "bottom": 1821, - "left": 428, - "right": 517 - } - }, - { - "doc_offset": { - "start": 3528, - "end": 3532 - }, - "page_num": 3, - "text": "that", - "position": { - "top": 1789, - "bottom": 1821, - "left": 540, - "right": 613 - } - }, - { - "doc_offset": { - "start": 3533, - "end": 3543 - }, - "page_num": 3, - "text": "processing", - "position": { - "top": 1789, - "bottom": 1830, - "left": 637, - "right": 846 - } - }, - { - "doc_offset": { - "start": 3544, - "end": 3547 - }, - "page_num": 3, - "text": "can", - "position": { - "top": 1797, - "bottom": 1821, - "left": 869, - "right": 936 - } - }, - { - "doc_offset": { - "start": 3548, - "end": 3552 - }, - "page_num": 3, - "text": "stop", - "position": { - "top": 1791, - "bottom": 1829, - "left": 959, - "right": 1043 - } - }, - { - "doc_offset": { - "start": 3553, - "end": 3557 - }, - "page_num": 3, - "text": "once", - "position": { - "top": 1797, - "bottom": 1821, - "left": 1065, - "right": 1159 - } - }, - { - "doc_offset": { - "start": 3558, - "end": 3561 - }, - "page_num": 3, - "text": "all", - "position": { - "top": 1789, - "bottom": 1821, - "left": 1180, - "right": 1219 - } - }, - { - "doc_offset": { - "start": 3562, - "end": 3573 - }, - "page_num": 3, - "text": "submissions", - "position": { - "top": 1789, - "bottom": 1821, - "left": 1242, - "right": 1483 - } - }, - { - "doc_offset": { - "start": 3574, - "end": 3578 - }, - "page_num": 3, - "text": "have", - "position": { - "top": 1789, - "bottom": 1821, - "left": 1506, - "right": 1596 - } - }, - { - "doc_offset": { - "start": 3579, - "end": 3583 - }, - "page_num": 3, - "text": "been", - "position": { - "top": 1789, - "bottom": 1821, - "left": 1619, - "right": 1710 - } - }, - { - "doc_offset": { - "start": 3584, - "end": 3593 - }, - "page_num": 3, - "text": "processed", - "position": { - "top": 1789, - "bottom": 1829, - "left": 1735, - "right": 1934 - } - }, - { - "doc_offset": { - "start": 3594, - "end": 3599 - }, - "page_num": 3, - "text": "whose", - "position": { - "top": 1789, - "bottom": 1821, - "left": 1957, - "right": 2083 - } - }, - { - "doc_offset": { - "start": 3600, - "end": 3609 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1791, - "bottom": 1828, - "left": 2121, - "right": 2316 - } - }, - { - "doc_offset": { - "start": 3610, - "end": 3614 - }, - "page_num": 3, - "text": "date", - "position": { - "top": 1851, - "bottom": 1882, - "left": 214, - "right": 298 - } - }, - { - "doc_offset": { - "start": 3615, - "end": 3617 - }, - "page_num": 3, - "text": "is", - "position": { - "top": 1851, - "bottom": 1882, - "left": 314, - "right": 341 - } - }, - { - "doc_offset": { - "start": 3618, - "end": 3625 - }, - "page_num": 3, - "text": "greater", - "position": { - "top": 1852, - "bottom": 1891, - "left": 356, - "right": 492 - } - }, - { - "doc_offset": { - "start": 3626, - "end": 3630 - }, - "page_num": 3, - "text": "than", - "position": { - "top": 1851, - "bottom": 1882, - "left": 505, - "right": 588 - } - }, - { - "doc_offset": { - "start": 3631, - "end": 3634 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1851, - "bottom": 1882, - "left": 603, - "right": 663 - } - }, - { - "doc_offset": { - "start": 3635, - "end": 3644 - }, - "page_num": 3, - "text": "timestamp", - "position": { - "top": 1851, - "bottom": 1890, - "left": 677, - "right": 882 - } - }, - { - "doc_offset": { - "start": 3645, - "end": 3647 - }, - "page_num": 3, - "text": "of", - "position": { - "top": 1850, - "bottom": 1882, - "left": 897, - "right": 934 - } - }, - { - "doc_offset": { - "start": 3648, - "end": 3651 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1851, - "bottom": 1882, - "left": 946, - "right": 1006 - } - }, - { - "doc_offset": { - "start": 3652, - "end": 3660 - }, - "page_num": 3, - "text": "previous", - "position": { - "top": 1851, - "bottom": 1890, - "left": 1023, - "right": 1184 - } - }, - { - "doc_offset": { - "start": 3661, - "end": 3664 - }, - "page_num": 3, - "text": "run", - "position": { - "top": 1859, - "bottom": 1882, - "left": 1201, - "right": 1258 - } - }, - { - "doc_offset": { - "start": 3665, - "end": 3667 - }, - "page_num": 3, - "text": "of", - "position": { - "top": 1850, - "bottom": 1882, - "left": 1275, - "right": 1311 - } - }, - { - "doc_offset": { - "start": 3668, - "end": 3671 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1851, - "bottom": 1882, - "left": 1324, - "right": 1384 - } - }, - { - "doc_offset": { - "start": 3672, - "end": 3684 - }, - "page_num": 3, - "text": "integration.", - "position": { - "top": 1851, - "bottom": 1891, - "left": 1400, - "right": 1613 - } - }, - { - "doc_offset": { - "start": 3685, - "end": 3689 - }, - "page_num": 3, - "text": "Data", - "position": { - "top": 1957, - "bottom": 1988, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 3690, - "end": 3704 - }, - "page_num": 3, - "text": "Reconciliation", - "position": { - "top": 1957, - "bottom": 1988, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 3705, - "end": 3708 - }, - "page_num": 3, - "text": "The", - "position": { - "top": 2061, - "bottom": 2092, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 3709, - "end": 3715 - }, - "page_num": 3, - "text": "output", - "position": { - "top": 2062, - "bottom": 2100, - "left": 304, - "right": 428 - } - }, - { - "doc_offset": { - "start": 3716, - "end": 3720 - }, - "page_num": 3, - "text": "will", - "position": { - "top": 2061, - "bottom": 2092, - "left": 447, - "right": 506 - } - }, - { - "doc_offset": { - "start": 3721, - "end": 3728 - }, - "page_num": 3, - "text": "include", - "position": { - "top": 2061, - "bottom": 2092, - "left": 529, - "right": 666 - } - }, - { - "doc_offset": { - "start": 3729, - "end": 3732 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2061, - "bottom": 2092, - "left": 685, - "right": 745 - } - }, - { - "doc_offset": { - "start": 3733, - "end": 3740 - }, - "page_num": 3, - "text": "primary", - "position": { - "top": 2061, - "bottom": 2101, - "left": 766, - "right": 910 - } - }, - { - "doc_offset": { - "start": 3741, - "end": 3744 - }, - "page_num": 3, - "text": "key", - "position": { - "top": 2061, - "bottom": 2101, - "left": 931, - "right": 995 - } - }, - { - "doc_offset": { - "start": 3745, - "end": 3747 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 2062, - "bottom": 2092, - "left": 1031, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 3748, - "end": 3754 - }, - "page_num": 3, - "text": "needed", - "position": { - "top": 2061, - "bottom": 2092, - "left": 1107, - "right": 1248 - } - }, - { - "doc_offset": { - "start": 3755, - "end": 3757 - }, - "page_num": 3, - "text": "to", - "position": { - "top": 2062, - "bottom": 2092, - "left": 1269, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 3758, - "end": 3764 - }, - "page_num": 3, - "text": "update", - "position": { - "top": 2061, - "bottom": 2100, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 3765, - "end": 3773 - }, - "page_num": 3, - "text": "existing", - "position": { - "top": 2061, - "bottom": 2101, - "left": 1481, - "right": 1627 - } - }, - { - "doc_offset": { - "start": 3774, - "end": 3778 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 2069, - "bottom": 2092, - "left": 1650, - "right": 1740 - } - }, - { - "doc_offset": { - "start": 3779, - "end": 3782 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 2061, - "bottom": 2092, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 3783, - "end": 3789 - }, - "page_num": 3, - "text": "insert", - "position": { - "top": 2061, - "bottom": 2092, - "left": 1853, - "right": 1957 - } - }, - { - "doc_offset": { - "start": 3790, - "end": 3793 - }, - "page_num": 3, - "text": "new", - "position": { - "top": 2069, - "bottom": 2092, - "left": 1978, - "right": 2055 - } - }, - { - "doc_offset": { - "start": 3794, - "end": 3798 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 2069, - "bottom": 2092, - "left": 2076, - "right": 2166 - } - }, - { - "doc_offset": { - "start": 3799, - "end": 3803 - }, - "page_num": 3, - "text": "into", - "position": { - "top": 2061, - "bottom": 2092, - "left": 2188, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 3804, - "end": 3807 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2061, - "bottom": 2092, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 3808, - "end": 3815 - }, - "page_num": 3, - "text": "Metrics", - "position": { - "top": 2122, - "bottom": 2153, - "left": 216, - "right": 356 - } - }, - { - "doc_offset": { - "start": 3816, - "end": 3825 - }, - "page_num": 3, - "text": "database.", - "position": { - "top": 2122, - "bottom": 2153, - "left": 371, - "right": 559 - } - }, - { - "doc_offset": { - "start": 3826, - "end": 3829 - }, - "page_num": 3, - "text": "1.4", - "position": { - "top": 2313, - "bottom": 2354, - "left": 219, - "right": 310 - } - }, - { - "doc_offset": { - "start": 3830, - "end": 3840 - }, - "page_num": 3, - "text": "Submission", - "position": { - "top": 2311, - "bottom": 2355, - "left": 366, - "right": 721 - } - }, - { - "doc_offset": { - "start": 3841, - "end": 3845 - }, - "page_num": 3, - "text": "File", - "position": { - "top": 2311, - "bottom": 2355, - "left": 750, - "right": 855 - } - }, - { - "doc_offset": { - "start": 3846, - "end": 3852 - }, - "page_num": 3, - "text": "Column", - "position": { - "top": 2470, - "bottom": 2502, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 3853, - "end": 3857 - }, - "page_num": 3, - "text": "Type", - "position": { - "top": 2471, - "bottom": 2510, - "left": 855, - "right": 950 - } - }, - { - "doc_offset": { - "start": 3858, - "end": 3865 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 2470, - "bottom": 2510, - "left": 1159, - "right": 1344 - } - }, - { - "doc_offset": { - "start": 3866, - "end": 3872 - }, - "page_num": 3, - "text": "Source", - "position": { - "top": 2470, - "bottom": 2502, - "left": 1358, - "right": 1504 - } - }, - { - "doc_offset": { - "start": 3873, - "end": 3875 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 2571, - "bottom": 2603, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 3876, - "end": 3879 - }, - "page_num": 3, - "text": "int", - "position": { - "top": 2571, - "bottom": 2603, - "left": 858, - "right": 901 - } - }, - { - "doc_offset": { - "start": 3880, - "end": 3903 - }, - "page_num": 3, - "text": "submission.inputFile.id", - "position": { - "top": 2571, - "bottom": 2608, - "left": 1175, - "right": 1682 - } - }, - { - "doc_offset": { - "start": 3904, - "end": 3908 - }, - "page_num": 3, - "text": "name", - "position": { - "top": 2672, - "bottom": 2696, - "left": 264, - "right": 369 - } - }, - { - "doc_offset": { - "start": 3909, - "end": 3912 - }, - "page_num": 3, - "text": "str", - "position": { - "top": 2666, - "bottom": 2696, - "left": 856, - "right": 905 - } - }, - { - "doc_offset": { - "start": 3913, - "end": 3942 - }, - "page_num": 3, - "text": "submission.inputFile.filename", - "position": { - "top": 2663, - "bottom": 2701, - "left": 1175, - "right": 1816 - } - }, - { - "doc_offset": { - "start": 3943, - "end": 3956 - }, - "page_num": 3, - "text": "submission_id", - "position": { - "top": 2756, - "bottom": 2793, - "left": 262, - "right": 538 - } - }, - { - "doc_offset": { - "start": 3957, - "end": 3960 - }, - "page_num": 3, - "text": "int", - "position": { - "top": 2756, - "bottom": 2788, - "left": 858, - "right": 901 - } - }, - { - "doc_offset": { - "start": 3961, - "end": 3974 - }, - "page_num": 3, - "text": "submission.id", - "position": { - "top": 2756, - "bottom": 2786, - "left": 1175, - "right": 1459 - } - }, - { - "doc_offset": { - "start": 3975, - "end": 3978 - }, - "page_num": 3, - "text": "See", - "position": { - "top": 2885, - "bottom": 2917, - "left": 214, - "right": 286 - } - }, - { - "doc_offset": { - "start": 3979, - "end": 3982 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2885, - "bottom": 2917, - "left": 300, - "right": 360 - } - }, - { - "doc_offset": { - "start": 3983, - "end": 3993 - }, - "page_num": 3, - "text": "Submission", - "position": { - "top": 2884, - "bottom": 2918, - "left": 375, - "right": 598 - } - }, - { - "doc_offset": { - "start": 3994, - "end": 4003 - }, - "page_num": 3, - "text": "section's", - "position": { - "top": 2885, - "bottom": 2917, - "left": 612, - "right": 786 - } - }, - { - "doc_offset": { - "start": 4004, - "end": 4011 - }, - "page_num": 3, - "text": "example", - "position": { - "top": 2885, - "bottom": 2925, - "left": 801, - "right": 964 - } - }, - { - "doc_offset": { - "start": 4012, - "end": 4019 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 2885, - "bottom": 2925, - "left": 979, - "right": 1156 - } - }, - { - "doc_offset": { - "start": 4020, - "end": 4026 - }, - "page_num": 3, - "text": "query.", - "position": { - "top": 2893, - "bottom": 2926, - "left": 1170, - "right": 1284 - } - }, - { - "doc_offset": { - "start": 4027, - "end": 4031 - }, - "page_num": 3, - "text": "Data", - "position": { - "top": 2991, - "bottom": 3023, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 4032, - "end": 4046 - }, - "page_num": 3, - "text": "Reconciliation", - "position": { - "top": 2991, - "bottom": 3023, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 4047, - "end": 4050 - }, - "page_num": 3, - "text": "The", - "position": { - "top": 3095, - "bottom": 3127, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 4051, - "end": 4057 - }, - "page_num": 3, - "text": "output", - "position": { - "top": 3097, - "bottom": 3135, - "left": 304, - "right": 428 - } - }, - { - "doc_offset": { - "start": 4058, - "end": 4062 - }, - "page_num": 3, - "text": "will", - "position": { - "top": 3095, - "bottom": 3127, - "left": 447, - "right": 506 - } - }, - { - "doc_offset": { - "start": 4063, - "end": 4070 - }, - "page_num": 3, - "text": "include", - "position": { - "top": 3095, - "bottom": 3127, - "left": 529, - "right": 666 - } - }, - { - "doc_offset": { - "start": 4071, - "end": 4074 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 3095, - "bottom": 3127, - "left": 685, - "right": 745 - } - }, - { - "doc_offset": { - "start": 4075, - "end": 4082 - }, - "page_num": 3, - "text": "primary", - "position": { - "top": 3095, - "bottom": 3136, - "left": 766, - "right": 910 - } - }, - { - "doc_offset": { - "start": 4083, - "end": 4086 - }, - "page_num": 3, - "text": "key", - "position": { - "top": 3095, - "bottom": 3136, - "left": 931, - "right": 995 - } - }, - { - "doc_offset": { - "start": 4087, - "end": 4089 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 3097, - "bottom": 3127, - "left": 1031, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 4090, - "end": 4096 - }, - "page_num": 3, - "text": "needed", - "position": { - "top": 3095, - "bottom": 3127, - "left": 1107, - "right": 1248 - } - }, - { - "doc_offset": { - "start": 4097, - "end": 4099 - }, - "page_num": 3, - "text": "to", - "position": { - "top": 3097, - "bottom": 3127, - "left": 1269, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 4100, - "end": 4106 - }, - "page_num": 3, - "text": "update", - "position": { - "top": 3095, - "bottom": 3135, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 4107, - "end": 4115 - }, - "page_num": 3, - "text": "existing", - "position": { - "top": 3095, - "bottom": 3136, - "left": 1481, - "right": 1627 - } - }, - { - "doc_offset": { - "start": 4116, - "end": 4120 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 3103, - "bottom": 3127, - "left": 1650, - "right": 1740 - } - }, - { - "doc_offset": { - "start": 4121, - "end": 4124 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 3095, - "bottom": 3127, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 4125, - "end": 4131 - }, - "page_num": 3, - "text": "insert", - "position": { - "top": 3095, - "bottom": 3127, - "left": 1853, - "right": 1957 - } - }, - { - "doc_offset": { - "start": 4132, - "end": 4135 - }, - "page_num": 3, - "text": "new", - "position": { - "top": 3103, - "bottom": 3127, - "left": 1978, - "right": 2055 - } - }, - { - "doc_offset": { - "start": 4136, - "end": 4140 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 3103, - "bottom": 3127, - "left": 2076, - "right": 2166 - } - }, - { - "doc_offset": { - "start": 4141, - "end": 4145 - }, - "page_num": 3, - "text": "into", - "position": { - "top": 3095, - "bottom": 3127, - "left": 2188, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 4146, - "end": 4149 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 3095, - "bottom": 3127, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 4150, - "end": 4157 - }, - "page_num": 3, - "text": "Metrics", - "position": { - "top": 3157, - "bottom": 3188, - "left": 216, - "right": 356 - } - }, - { - "doc_offset": { - "start": 4158, - "end": 4167 - }, - "page_num": 3, - "text": "database.", - "position": { - "top": 3157, - "bottom": 3188, - "left": 371, - "right": 559 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4288/107455/101154/page_info_4.json b/tests/data/etloutput/4288/107455/101154/page_info_4.json deleted file mode 100644 index 6d2a876..0000000 --- a/tests/data/etloutput/4288/107455/101154/page_info_4.json +++ /dev/null @@ -1,1162 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 4168, - "end": 4706 - }, - "page_num": 4, - "text": "1.5\nReviewer\nColumn\nType\nGraphQL Source\nuserSnapshot.id\nid\nint\nname\nstr\nuserSnapshot.name\nemail\nstr\nuserSnapshot.email\nenabled\nbool\nuserSnapshot.enabled\nExample GraphQL Query\nquery Users {\nuserSnapshot(orderBy: ID, desc: false, limit: 1000) {\nresults {\nid\nname\nemail\nenabled\n}\n}\n}\nScheduled Process Logic\nThis is a lightweight query. All reviewers will be pulled every time the integration is run.\nData Reconciliation\nThe output will include the primary key id needed to update existing rows and insert new rows into the\nMetrics database." - } - ], - "tokens": [ - { - "doc_offset": { - "start": 4168, - "end": 4171 - }, - "page_num": 4, - "text": "1.5", - "position": { - "top": 59, - "bottom": 101, - "left": 219, - "right": 309 - } - }, - { - "doc_offset": { - "start": 4172, - "end": 4180 - }, - "page_num": 4, - "text": "Reviewer", - "position": { - "top": 57, - "bottom": 101, - "left": 368, - "right": 657 - } - }, - { - "doc_offset": { - "start": 4181, - "end": 4187 - }, - "page_num": 4, - "text": "Column", - "position": { - "top": 216, - "bottom": 248, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 4188, - "end": 4192 - }, - "page_num": 4, - "text": "Type", - "position": { - "top": 216, - "bottom": 255, - "left": 796, - "right": 891 - } - }, - { - "doc_offset": { - "start": 4193, - "end": 4200 - }, - "page_num": 4, - "text": "GraphQL", - "position": { - "top": 216, - "bottom": 255, - "left": 1194, - "right": 1380 - } - }, - { - "doc_offset": { - "start": 4201, - "end": 4207 - }, - "page_num": 4, - "text": "Source", - "position": { - "top": 216, - "bottom": 248, - "left": 1394, - "right": 1539 - } - }, - { - "doc_offset": { - "start": 4208, - "end": 4223 - }, - "page_num": 4, - "text": "userSnapshot.id", - "position": { - "top": 317, - "bottom": 354, - "left": 1210, - "right": 1539 - } - }, - { - "doc_offset": { - "start": 4224, - "end": 4226 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 317, - "bottom": 349, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 4227, - "end": 4230 - }, - "page_num": 4, - "text": "int", - "position": { - "top": 317, - "bottom": 348, - "left": 799, - "right": 842 - } - }, - { - "doc_offset": { - "start": 4231, - "end": 4235 - }, - "page_num": 4, - "text": "name", - "position": { - "top": 418, - "bottom": 441, - "left": 264, - "right": 369 - } - }, - { - "doc_offset": { - "start": 4236, - "end": 4239 - }, - "page_num": 4, - "text": "str", - "position": { - "top": 412, - "bottom": 441, - "left": 797, - "right": 846 - } - }, - { - "doc_offset": { - "start": 4240, - "end": 4257 - }, - "page_num": 4, - "text": "userSnapshot.name", - "position": { - "top": 410, - "bottom": 447, - "left": 1210, - "right": 1584 - } - }, - { - "doc_offset": { - "start": 4258, - "end": 4263 - }, - "page_num": 4, - "text": "email", - "position": { - "top": 502, - "bottom": 534, - "left": 263, - "right": 362 - } - }, - { - "doc_offset": { - "start": 4264, - "end": 4267 - }, - "page_num": 4, - "text": "str", - "position": { - "top": 504, - "bottom": 534, - "left": 797, - "right": 846 - } - }, - { - "doc_offset": { - "start": 4268, - "end": 4286 - }, - "page_num": 4, - "text": "userSnapshot.email", - "position": { - "top": 502, - "bottom": 539, - "left": 1210, - "right": 1604 - } - }, - { - "doc_offset": { - "start": 4287, - "end": 4294 - }, - "page_num": 4, - "text": "enabled", - "position": { - "top": 595, - "bottom": 626, - "left": 263, - "right": 414 - } - }, - { - "doc_offset": { - "start": 4295, - "end": 4299 - }, - "page_num": 4, - "text": "bool", - "position": { - "top": 595, - "bottom": 626, - "left": 799, - "right": 879 - } - }, - { - "doc_offset": { - "start": 4300, - "end": 4320 - }, - "page_num": 4, - "text": "userSnapshot.enabled", - "position": { - "top": 595, - "bottom": 632, - "left": 1210, - "right": 1651 - } - }, - { - "doc_offset": { - "start": 4321, - "end": 4328 - }, - "page_num": 4, - "text": "Example", - "position": { - "top": 725, - "bottom": 764, - "left": 215, - "right": 391 - } - }, - { - "doc_offset": { - "start": 4329, - "end": 4336 - }, - "page_num": 4, - "text": "GraphQL", - "position": { - "top": 724, - "bottom": 764, - "left": 406, - "right": 591 - } - }, - { - "doc_offset": { - "start": 4337, - "end": 4342 - }, - "page_num": 4, - "text": "Query", - "position": { - "top": 724, - "bottom": 764, - "left": 606, - "right": 729 - } - }, - { - "doc_offset": { - "start": 4343, - "end": 4348 - }, - "page_num": 4, - "text": "query", - "position": { - "top": 848, - "bottom": 883, - "left": 244, - "right": 374 - } - }, - { - "doc_offset": { - "start": 4349, - "end": 4354 - }, - "page_num": 4, - "text": "Users", - "position": { - "top": 839, - "bottom": 874, - "left": 404, - "right": 532 - } - }, - { - "doc_offset": { - "start": 4355, - "end": 4356 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 837, - "bottom": 881, - "left": 567, - "right": 586 - } - }, - { - "doc_offset": { - "start": 4357, - "end": 4378 - }, - "page_num": 4, - "text": "userSnapshot(orderBy:", - "position": { - "top": 899, - "bottom": 945, - "left": 333, - "right": 883 - } - }, - { - "doc_offset": { - "start": 4379, - "end": 4382 - }, - "page_num": 4, - "text": "ID,", - "position": { - "top": 901, - "bottom": 945, - "left": 923, - "right": 990 - } - }, - { - "doc_offset": { - "start": 4383, - "end": 4388 - }, - "page_num": 4, - "text": "desc:", - "position": { - "top": 900, - "bottom": 936, - "left": 1029, - "right": 1150 - } - }, - { - "doc_offset": { - "start": 4389, - "end": 4395 - }, - "page_num": 4, - "text": "false,", - "position": { - "top": 899, - "bottom": 945, - "left": 1191, - "right": 1338 - } - }, - { - "doc_offset": { - "start": 4396, - "end": 4402 - }, - "page_num": 4, - "text": "limit:", - "position": { - "top": 899, - "bottom": 936, - "left": 1377, - "right": 1525 - } - }, - { - "doc_offset": { - "start": 4403, - "end": 4408 - }, - "page_num": 4, - "text": "1000)", - "position": { - "top": 899, - "bottom": 943, - "left": 1566, - "right": 1692 - } - }, - { - "doc_offset": { - "start": 4409, - "end": 4410 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 899, - "bottom": 943, - "left": 1727, - "right": 1746 - } - }, - { - "doc_offset": { - "start": 4411, - "end": 4418 - }, - "page_num": 4, - "text": "results", - "position": { - "top": 963, - "bottom": 998, - "left": 443, - "right": 621 - } - }, - { - "doc_offset": { - "start": 4419, - "end": 4420 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 962, - "bottom": 1006, - "left": 656, - "right": 676 - } - }, - { - "doc_offset": { - "start": 4421, - "end": 4423 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 1024, - "bottom": 1061, - "left": 548, - "right": 595 - } - }, - { - "doc_offset": { - "start": 4424, - "end": 4428 - }, - "page_num": 4, - "text": "name", - "position": { - "top": 1098, - "bottom": 1123, - "left": 548, - "right": 649 - } - }, - { - "doc_offset": { - "start": 4429, - "end": 4434 - }, - "page_num": 4, - "text": "email", - "position": { - "top": 1149, - "bottom": 1186, - "left": 547, - "right": 673 - } - }, - { - "doc_offset": { - "start": 4435, - "end": 4442 - }, - "page_num": 4, - "text": "enabled", - "position": { - "top": 1213, - "bottom": 1248, - "left": 547, - "right": 729 - } - }, - { - "doc_offset": { - "start": 4443, - "end": 4444 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1337, - "bottom": 1381, - "left": 333, - "right": 352 - } - }, - { - "doc_offset": { - "start": 4445, - "end": 4446 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1399, - "bottom": 1443, - "left": 226, - "right": 245 - } - }, - { - "doc_offset": { - "start": 4447, - "end": 4448 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1274, - "bottom": 1318, - "left": 440, - "right": 460 - } - }, - { - "doc_offset": { - "start": 4449, - "end": 4458 - }, - "page_num": 4, - "text": "Scheduled", - "position": { - "top": 1520, - "bottom": 1553, - "left": 213, - "right": 430 - } - }, - { - "doc_offset": { - "start": 4459, - "end": 4466 - }, - "page_num": 4, - "text": "Process", - "position": { - "top": 1521, - "bottom": 1553, - "left": 448, - "right": 613 - } - }, - { - "doc_offset": { - "start": 4467, - "end": 4472 - }, - "page_num": 4, - "text": "Logic", - "position": { - "top": 1521, - "bottom": 1560, - "left": 629, - "right": 741 - } - }, - { - "doc_offset": { - "start": 4473, - "end": 4477 - }, - "page_num": 4, - "text": "This", - "position": { - "top": 1625, - "bottom": 1656, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 4478, - "end": 4480 - }, - "page_num": 4, - "text": "is", - "position": { - "top": 1625, - "bottom": 1656, - "left": 308, - "right": 335 - } - }, - { - "doc_offset": { - "start": 4481, - "end": 4482 - }, - "page_num": 4, - "text": "a", - "position": { - "top": 1633, - "bottom": 1656, - "left": 351, - "right": 372 - } - }, - { - "doc_offset": { - "start": 4483, - "end": 4494 - }, - "page_num": 4, - "text": "lightweight", - "position": { - "top": 1625, - "bottom": 1665, - "left": 388, - "right": 595 - } - }, - { - "doc_offset": { - "start": 4495, - "end": 4501 - }, - "page_num": 4, - "text": "query.", - "position": { - "top": 1633, - "bottom": 1665, - "left": 611, - "right": 724 - } - }, - { - "doc_offset": { - "start": 4502, - "end": 4505 - }, - "page_num": 4, - "text": "All", - "position": { - "top": 1625, - "bottom": 1656, - "left": 740, - "right": 785 - } - }, - { - "doc_offset": { - "start": 4506, - "end": 4515 - }, - "page_num": 4, - "text": "reviewers", - "position": { - "top": 1625, - "bottom": 1656, - "left": 803, - "right": 984 - } - }, - { - "doc_offset": { - "start": 4516, - "end": 4520 - }, - "page_num": 4, - "text": "will", - "position": { - "top": 1625, - "bottom": 1656, - "left": 999, - "right": 1057 - } - }, - { - "doc_offset": { - "start": 4521, - "end": 4523 - }, - "page_num": 4, - "text": "be", - "position": { - "top": 1625, - "bottom": 1656, - "left": 1075, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 4524, - "end": 4530 - }, - "page_num": 4, - "text": "pulled", - "position": { - "top": 1625, - "bottom": 1665, - "left": 1137, - "right": 1250 - } - }, - { - "doc_offset": { - "start": 4531, - "end": 4536 - }, - "page_num": 4, - "text": "every", - "position": { - "top": 1633, - "bottom": 1665, - "left": 1267, - "right": 1370 - } - }, - { - "doc_offset": { - "start": 4537, - "end": 4541 - }, - "page_num": 4, - "text": "time", - "position": { - "top": 1625, - "bottom": 1656, - "left": 1383, - "right": 1466 - } - }, - { - "doc_offset": { - "start": 4542, - "end": 4545 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1625, - "bottom": 1656, - "left": 1480, - "right": 1540 - } - }, - { - "doc_offset": { - "start": 4546, - "end": 4557 - }, - "page_num": 4, - "text": "integration", - "position": { - "top": 1625, - "bottom": 1665, - "left": 1556, - "right": 1758 - } - }, - { - "doc_offset": { - "start": 4558, - "end": 4560 - }, - "page_num": 4, - "text": "is", - "position": { - "top": 1625, - "bottom": 1656, - "left": 1776, - "right": 1803 - } - }, - { - "doc_offset": { - "start": 4561, - "end": 4565 - }, - "page_num": 4, - "text": "run.", - "position": { - "top": 1633, - "bottom": 1656, - "left": 1819, - "right": 1888 - } - }, - { - "doc_offset": { - "start": 4566, - "end": 4570 - }, - "page_num": 4, - "text": "Data", - "position": { - "top": 1731, - "bottom": 1763, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 4571, - "end": 4585 - }, - "page_num": 4, - "text": "Reconciliation", - "position": { - "top": 1731, - "bottom": 1763, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 4586, - "end": 4589 - }, - "page_num": 4, - "text": "The", - "position": { - "top": 1835, - "bottom": 1866, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 4590, - "end": 4596 - }, - "page_num": 4, - "text": "output", - "position": { - "top": 1837, - "bottom": 1875, - "left": 304, - "right": 428 - } - }, - { - "doc_offset": { - "start": 4597, - "end": 4601 - }, - "page_num": 4, - "text": "will", - "position": { - "top": 1835, - "bottom": 1866, - "left": 447, - "right": 506 - } - }, - { - "doc_offset": { - "start": 4602, - "end": 4609 - }, - "page_num": 4, - "text": "include", - "position": { - "top": 1835, - "bottom": 1866, - "left": 529, - "right": 666 - } - }, - { - "doc_offset": { - "start": 4610, - "end": 4613 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1835, - "bottom": 1866, - "left": 685, - "right": 745 - } - }, - { - "doc_offset": { - "start": 4614, - "end": 4621 - }, - "page_num": 4, - "text": "primary", - "position": { - "top": 1835, - "bottom": 1875, - "left": 766, - "right": 910 - } - }, - { - "doc_offset": { - "start": 4622, - "end": 4625 - }, - "page_num": 4, - "text": "key", - "position": { - "top": 1835, - "bottom": 1875, - "left": 931, - "right": 995 - } - }, - { - "doc_offset": { - "start": 4626, - "end": 4628 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 1836, - "bottom": 1866, - "left": 1031, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 4629, - "end": 4635 - }, - "page_num": 4, - "text": "needed", - "position": { - "top": 1835, - "bottom": 1866, - "left": 1107, - "right": 1248 - } - }, - { - "doc_offset": { - "start": 4636, - "end": 4638 - }, - "page_num": 4, - "text": "to", - "position": { - "top": 1837, - "bottom": 1866, - "left": 1269, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 4639, - "end": 4645 - }, - "page_num": 4, - "text": "update", - "position": { - "top": 1835, - "bottom": 1875, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 4646, - "end": 4654 - }, - "page_num": 4, - "text": "existing", - "position": { - "top": 1835, - "bottom": 1875, - "left": 1481, - "right": 1627 - } - }, - { - "doc_offset": { - "start": 4655, - "end": 4659 - }, - "page_num": 4, - "text": "rows", - "position": { - "top": 1843, - "bottom": 1866, - "left": 1650, - "right": 1740 - } - }, - { - "doc_offset": { - "start": 4660, - "end": 4663 - }, - "page_num": 4, - "text": "and", - "position": { - "top": 1835, - "bottom": 1866, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 4664, - "end": 4670 - }, - "page_num": 4, - "text": "insert", - "position": { - "top": 1835, - "bottom": 1866, - "left": 1853, - "right": 1957 - } - }, - { - "doc_offset": { - "start": 4671, - "end": 4674 - }, - "page_num": 4, - "text": "new", - "position": { - "top": 1843, - "bottom": 1866, - "left": 1978, - "right": 2055 - } - }, - { - "doc_offset": { - "start": 4675, - "end": 4679 - }, - "page_num": 4, - "text": "rows", - "position": { - "top": 1843, - "bottom": 1866, - "left": 2076, - "right": 2166 - } - }, - { - "doc_offset": { - "start": 4680, - "end": 4684 - }, - "page_num": 4, - "text": "into", - "position": { - "top": 1835, - "bottom": 1866, - "left": 2188, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 4685, - "end": 4688 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1835, - "bottom": 1866, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 4689, - "end": 4696 - }, - "page_num": 4, - "text": "Metrics", - "position": { - "top": 1896, - "bottom": 1928, - "left": 216, - "right": 356 - } - }, - { - "doc_offset": { - "start": 4697, - "end": 4706 - }, - "page_num": 4, - "text": "database.", - "position": { - "top": 1896, - "bottom": 1928, - "left": 371, - "right": 559 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4288/107455/101154/page_info_5.json b/tests/data/etloutput/4288/107455/101154/page_info_5.json deleted file mode 100644 index 1f1a749..0000000 --- a/tests/data/etloutput/4288/107455/101154/page_info_5.json +++ /dev/null @@ -1,3724 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 4707, - "end": 6466 - }, - "page_num": 5, - "text": "1.6\nPrediction\nColumn\nid\nuuid\nType\nResult File Source\nGenerated by integration5\nlabel\nstr\nPrediction.Label 6,7\npredicted_value\nstr\nPrediction.Text 8,7\nreviewed_value\nstr\nPrediction.Text 8,7\nsubmission_file_id\nint\nmodel_id\nint\nPrediction.Document.Id 7\nPrediction.Model.Id 7\n5 Predictions do not have a system-assigned unique identifier. Recommended that the integration pulling this data\ngenerates a unique UUIDv7 for each prediction.\n6 For performance reasons, this column should have an index. Depending upon the DBMS, this column may need to\nbe normalized out, hashed, or otherwise converted to an indexable type.\n7 Based on the Result File classes in the Indico Toolkit (available in Python and C# versions).\n8 As predictions do not have a system-assigned unique identifier, predicted values and reviewed values must be\nmatched by similarity within the integration. An example of doing so is available in the Indico-developed\ngroundtruth program.\nScheduled Process Logic\nThis is a heavyweight query tied to submissions. Because predictions have no system-assigned unique\nidentifier, and the identifier assigned by the integration is not stable, predictions must be pulled only once\nper submission. This should occur at the terminal state of the submission just before it's omitted from future\nprocessing: i.e. when the submission is marked as retrieved. Once a submission is marked as retrieved,\nthere should be no further updates to the submission resetting its updatedAt attribute, therefore it will be\nomitted from all future runs of the integration.\nData Reconciliation\nThe output does not include a primary key needed to update existing rows. As such it will only contain new\nrows to be inserted into the Metrics database.\nformatted by Markdeep 1.17 \u2712" - } - ], - "tokens": [ - { - "doc_offset": { - "start": 4707, - "end": 4710 - }, - "page_num": 5, - "text": "1.6", - "position": { - "top": 143, - "bottom": 185, - "left": 219, - "right": 309 - } - }, - { - "doc_offset": { - "start": 4711, - "end": 4721 - }, - "page_num": 5, - "text": "Prediction", - "position": { - "top": 142, - "bottom": 185, - "left": 368, - "right": 680 - } - }, - { - "doc_offset": { - "start": 4722, - "end": 4728 - }, - "page_num": 5, - "text": "Column", - "position": { - "top": 300, - "bottom": 333, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 4729, - "end": 4731 - }, - "page_num": 5, - "text": "id", - "position": { - "top": 408, - "bottom": 440, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 4732, - "end": 4736 - }, - "page_num": 5, - "text": "uuid", - "position": { - "top": 408, - "bottom": 440, - "left": 1015, - "right": 1094 - } - }, - { - "doc_offset": { - "start": 4737, - "end": 4741 - }, - "page_num": 5, - "text": "Type", - "position": { - "top": 301, - "bottom": 340, - "left": 1013, - "right": 1108 - } - }, - { - "doc_offset": { - "start": 4742, - "end": 4748 - }, - "page_num": 5, - "text": "Result", - "position": { - "top": 301, - "bottom": 333, - "left": 1332, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 4749, - "end": 4753 - }, - "page_num": 5, - "text": "File", - "position": { - "top": 301, - "bottom": 333, - "left": 1477, - "right": 1546 - } - }, - { - "doc_offset": { - "start": 4754, - "end": 4760 - }, - "page_num": 5, - "text": "Source", - "position": { - "top": 300, - "bottom": 333, - "left": 1561, - "right": 1706 - } - }, - { - "doc_offset": { - "start": 4761, - "end": 4770 - }, - "page_num": 5, - "text": "Generated", - "position": { - "top": 414, - "bottom": 447, - "left": 1331, - "right": 1532 - } - }, - { - "doc_offset": { - "start": 4771, - "end": 4773 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 415, - "bottom": 455, - "left": 1550, - "right": 1594 - } - }, - { - "doc_offset": { - "start": 4774, - "end": 4786 - }, - "page_num": 5, - "text": "integration5", - "position": { - "top": 412, - "bottom": 455, - "left": 1610, - "right": 1832 - } - }, - { - "doc_offset": { - "start": 4787, - "end": 4792 - }, - "page_num": 5, - "text": "label", - "position": { - "top": 512, - "bottom": 544, - "left": 264, - "right": 350 - } - }, - { - "doc_offset": { - "start": 4793, - "end": 4796 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 514, - "bottom": 544, - "left": 1014, - "right": 1063 - } - }, - { - "doc_offset": { - "start": 4797, - "end": 4813 - }, - "page_num": 5, - "text": "Prediction.Label", - "position": { - "top": 521, - "bottom": 552, - "left": 1347, - "right": 1696 - } - }, - { - "doc_offset": { - "start": 4814, - "end": 4817 - }, - "page_num": 5, - "text": "6,7", - "position": { - "top": 510, - "bottom": 543, - "left": 1717, - "right": 1764 - } - }, - { - "doc_offset": { - "start": 4818, - "end": 4833 - }, - "page_num": 5, - "text": "predicted_value", - "position": { - "top": 615, - "bottom": 655, - "left": 264, - "right": 570 - } - }, - { - "doc_offset": { - "start": 4834, - "end": 4837 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 617, - "bottom": 647, - "left": 1014, - "right": 1063 - } - }, - { - "doc_offset": { - "start": 4838, - "end": 4853 - }, - "page_num": 5, - "text": "Prediction.Text", - "position": { - "top": 624, - "bottom": 655, - "left": 1347, - "right": 1676 - } - }, - { - "doc_offset": { - "start": 4854, - "end": 4857 - }, - "page_num": 5, - "text": "8,7", - "position": { - "top": 613, - "bottom": 646, - "left": 1695, - "right": 1743 - } - }, - { - "doc_offset": { - "start": 4858, - "end": 4872 - }, - "page_num": 5, - "text": "reviewed_value", - "position": { - "top": 718, - "bottom": 755, - "left": 264, - "right": 560 - } - }, - { - "doc_offset": { - "start": 4873, - "end": 4876 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 720, - "bottom": 750, - "left": 1014, - "right": 1063 - } - }, - { - "doc_offset": { - "start": 4877, - "end": 4892 - }, - "page_num": 5, - "text": "Prediction.Text", - "position": { - "top": 727, - "bottom": 758, - "left": 1347, - "right": 1676 - } - }, - { - "doc_offset": { - "start": 4893, - "end": 4896 - }, - "page_num": 5, - "text": "8,7", - "position": { - "top": 716, - "bottom": 748, - "left": 1695, - "right": 1743 - } - }, - { - "doc_offset": { - "start": 4897, - "end": 4915 - }, - "page_num": 5, - "text": "submission_file_id", - "position": { - "top": 820, - "bottom": 857, - "left": 262, - "right": 615 - } - }, - { - "doc_offset": { - "start": 4916, - "end": 4919 - }, - "page_num": 5, - "text": "int", - "position": { - "top": 821, - "bottom": 852, - "left": 1015, - "right": 1059 - } - }, - { - "doc_offset": { - "start": 4920, - "end": 4928 - }, - "page_num": 5, - "text": "model_id", - "position": { - "top": 924, - "bottom": 960, - "left": 264, - "right": 437 - } - }, - { - "doc_offset": { - "start": 4929, - "end": 4932 - }, - "page_num": 5, - "text": "int", - "position": { - "top": 924, - "bottom": 955, - "left": 1015, - "right": 1059 - } - }, - { - "doc_offset": { - "start": 4933, - "end": 4955 - }, - "page_num": 5, - "text": "Prediction.Document.Id", - "position": { - "top": 830, - "bottom": 860, - "left": 1347, - "right": 1832 - } - }, - { - "doc_offset": { - "start": 4956, - "end": 4957 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 826, - "bottom": 851, - "left": 1851, - "right": 1867 - } - }, - { - "doc_offset": { - "start": 4958, - "end": 4977 - }, - "page_num": 5, - "text": "Prediction.Model.Id", - "position": { - "top": 933, - "bottom": 963, - "left": 1347, - "right": 1765 - } - }, - { - "doc_offset": { - "start": 4978, - "end": 4979 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 928, - "bottom": 954, - "left": 1784, - "right": 1800 - } - }, - { - "doc_offset": { - "start": 4980, - "end": 4981 - }, - "page_num": 5, - "text": "5", - "position": { - "top": 1055, - "bottom": 1079, - "left": 213, - "right": 229 - } - }, - { - "doc_offset": { - "start": 4982, - "end": 4993 - }, - "page_num": 5, - "text": "Predictions", - "position": { - "top": 1063, - "bottom": 1093, - "left": 249, - "right": 449 - } - }, - { - "doc_offset": { - "start": 4994, - "end": 4996 - }, - "page_num": 5, - "text": "do", - "position": { - "top": 1063, - "bottom": 1093, - "left": 467, - "right": 511 - } - }, - { - "doc_offset": { - "start": 4997, - "end": 5000 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1065, - "bottom": 1093, - "left": 531, - "right": 585 - } - }, - { - "doc_offset": { - "start": 5001, - "end": 5005 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1063, - "bottom": 1093, - "left": 605, - "right": 688 - } - }, - { - "doc_offset": { - "start": 5006, - "end": 5007 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1071, - "bottom": 1093, - "left": 705, - "right": 725 - } - }, - { - "doc_offset": { - "start": 5008, - "end": 5023 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1063, - "bottom": 1101, - "left": 742, - "right": 1047 - } - }, - { - "doc_offset": { - "start": 5024, - "end": 5030 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1063, - "bottom": 1100, - "left": 1068, - "right": 1187 - } - }, - { - "doc_offset": { - "start": 5031, - "end": 5042 - }, - "page_num": 5, - "text": "identifier.", - "position": { - "top": 1063, - "bottom": 1093, - "left": 1206, - "right": 1363 - } - }, - { - "doc_offset": { - "start": 5043, - "end": 5054 - }, - "page_num": 5, - "text": "Recommended", - "position": { - "top": 1063, - "bottom": 1093, - "left": 1385, - "right": 1658 - } - }, - { - "doc_offset": { - "start": 5055, - "end": 5059 - }, - "page_num": 5, - "text": "that", - "position": { - "top": 1063, - "bottom": 1093, - "left": 1676, - "right": 1745 - } - }, - { - "doc_offset": { - "start": 5060, - "end": 5063 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1063, - "bottom": 1093, - "left": 1761, - "right": 1817 - } - }, - { - "doc_offset": { - "start": 5064, - "end": 5075 - }, - "page_num": 5, - "text": "integration", - "position": { - "top": 1063, - "bottom": 1101, - "left": 1836, - "right": 2024 - } - }, - { - "doc_offset": { - "start": 5076, - "end": 5083 - }, - "page_num": 5, - "text": "pulling", - "position": { - "top": 1063, - "bottom": 1101, - "left": 2044, - "right": 2159 - } - }, - { - "doc_offset": { - "start": 5084, - "end": 5088 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1063, - "bottom": 1093, - "left": 2177, - "right": 2240 - } - }, - { - "doc_offset": { - "start": 5089, - "end": 5093 - }, - "page_num": 5, - "text": "data", - "position": { - "top": 1063, - "bottom": 1093, - "left": 2258, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5094, - "end": 5103 - }, - "page_num": 5, - "text": "generates", - "position": { - "top": 1112, - "bottom": 1148, - "left": 245, - "right": 422 - } - }, - { - "doc_offset": { - "start": 5104, - "end": 5105 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1118, - "bottom": 1140, - "left": 436, - "right": 456 - } - }, - { - "doc_offset": { - "start": 5106, - "end": 5112 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1110, - "bottom": 1147, - "left": 470, - "right": 589 - } - }, - { - "doc_offset": { - "start": 5113, - "end": 5119 - }, - "page_num": 5, - "text": "UUIDv7", - "position": { - "top": 1110, - "bottom": 1140, - "left": 605, - "right": 740 - } - }, - { - "doc_offset": { - "start": 5120, - "end": 5123 - }, - "page_num": 5, - "text": "for", - "position": { - "top": 1110, - "bottom": 1140, - "left": 754, - "right": 803 - } - }, - { - "doc_offset": { - "start": 5124, - "end": 5128 - }, - "page_num": 5, - "text": "each", - "position": { - "top": 1110, - "bottom": 1140, - "left": 815, - "right": 899 - } - }, - { - "doc_offset": { - "start": 5129, - "end": 5140 - }, - "page_num": 5, - "text": "prediction.", - "position": { - "top": 1110, - "bottom": 1147, - "left": 916, - "right": 1103 - } - }, - { - "doc_offset": { - "start": 5141, - "end": 5142 - }, - "page_num": 5, - "text": "6", - "position": { - "top": 1204, - "bottom": 1228, - "left": 213, - "right": 230 - } - }, - { - "doc_offset": { - "start": 5143, - "end": 5146 - }, - "page_num": 5, - "text": "For", - "position": { - "top": 1213, - "bottom": 1242, - "left": 246, - "right": 303 - } - }, - { - "doc_offset": { - "start": 5147, - "end": 5158 - }, - "page_num": 5, - "text": "performance", - "position": { - "top": 1212, - "bottom": 1250, - "left": 318, - "right": 546 - } - }, - { - "doc_offset": { - "start": 5159, - "end": 5167 - }, - "page_num": 5, - "text": "reasons,", - "position": { - "top": 1220, - "bottom": 1247, - "left": 561, - "right": 710 - } - }, - { - "doc_offset": { - "start": 5168, - "end": 5172 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1213, - "bottom": 1242, - "left": 726, - "right": 789 - } - }, - { - "doc_offset": { - "start": 5173, - "end": 5179 - }, - "page_num": 5, - "text": "column", - "position": { - "top": 1213, - "bottom": 1242, - "left": 804, - "right": 934 - } - }, - { - "doc_offset": { - "start": 5180, - "end": 5186 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 1213, - "bottom": 1242, - "left": 950, - "right": 1068 - } - }, - { - "doc_offset": { - "start": 5187, - "end": 5191 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1213, - "bottom": 1242, - "left": 1085, - "right": 1168 - } - }, - { - "doc_offset": { - "start": 5192, - "end": 5194 - }, - "page_num": 5, - "text": "an", - "position": { - "top": 1220, - "bottom": 1242, - "left": 1183, - "right": 1223 - } - }, - { - "doc_offset": { - "start": 5195, - "end": 5201 - }, - "page_num": 5, - "text": "index.", - "position": { - "top": 1213, - "bottom": 1242, - "left": 1241, - "right": 1344 - } - }, - { - "doc_offset": { - "start": 5202, - "end": 5211 - }, - "page_num": 5, - "text": "Depending", - "position": { - "top": 1213, - "bottom": 1250, - "left": 1363, - "right": 1555 - } - }, - { - "doc_offset": { - "start": 5212, - "end": 5216 - }, - "page_num": 5, - "text": "upon", - "position": { - "top": 1220, - "bottom": 1250, - "left": 1573, - "right": 1660 - } - }, - { - "doc_offset": { - "start": 5217, - "end": 5220 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1213, - "bottom": 1242, - "left": 1676, - "right": 1731 - } - }, - { - "doc_offset": { - "start": 5221, - "end": 5226 - }, - "page_num": 5, - "text": "DBMS,", - "position": { - "top": 1212, - "bottom": 1247, - "left": 1748, - "right": 1871 - } - }, - { - "doc_offset": { - "start": 5227, - "end": 5231 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1213, - "bottom": 1242, - "left": 1886, - "right": 1950 - } - }, - { - "doc_offset": { - "start": 5232, - "end": 5238 - }, - "page_num": 5, - "text": "column", - "position": { - "top": 1213, - "bottom": 1242, - "left": 1965, - "right": 2094 - } - }, - { - "doc_offset": { - "start": 5239, - "end": 5242 - }, - "page_num": 5, - "text": "may", - "position": { - "top": 1220, - "bottom": 1250, - "left": 2112, - "right": 2186 - } - }, - { - "doc_offset": { - "start": 5243, - "end": 5247 - }, - "page_num": 5, - "text": "need", - "position": { - "top": 1213, - "bottom": 1242, - "left": 2201, - "right": 2286 - } - }, - { - "doc_offset": { - "start": 5248, - "end": 5250 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1214, - "bottom": 1242, - "left": 2301, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5251, - "end": 5253 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1259, - "bottom": 1289, - "left": 246, - "right": 288 - } - }, - { - "doc_offset": { - "start": 5254, - "end": 5264 - }, - "page_num": 5, - "text": "normalized", - "position": { - "top": 1259, - "bottom": 1289, - "left": 303, - "right": 497 - } - }, - { - "doc_offset": { - "start": 5265, - "end": 5269 - }, - "page_num": 5, - "text": "out,", - "position": { - "top": 1261, - "bottom": 1294, - "left": 513, - "right": 578 - } - }, - { - "doc_offset": { - "start": 5270, - "end": 5277 - }, - "page_num": 5, - "text": "hashed,", - "position": { - "top": 1259, - "bottom": 1294, - "left": 595, - "right": 734 - } - }, - { - "doc_offset": { - "start": 5278, - "end": 5280 - }, - "page_num": 5, - "text": "or", - "position": { - "top": 1267, - "bottom": 1289, - "left": 750, - "right": 785 - } - }, - { - "doc_offset": { - "start": 5281, - "end": 5290 - }, - "page_num": 5, - "text": "otherwise", - "position": { - "top": 1259, - "bottom": 1289, - "left": 798, - "right": 972 - } - }, - { - "doc_offset": { - "start": 5291, - "end": 5300 - }, - "page_num": 5, - "text": "converted", - "position": { - "top": 1259, - "bottom": 1289, - "left": 985, - "right": 1163 - } - }, - { - "doc_offset": { - "start": 5301, - "end": 5303 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1261, - "bottom": 1289, - "left": 1178, - "right": 1212 - } - }, - { - "doc_offset": { - "start": 5304, - "end": 5306 - }, - "page_num": 5, - "text": "an", - "position": { - "top": 1267, - "bottom": 1289, - "left": 1226, - "right": 1267 - } - }, - { - "doc_offset": { - "start": 5307, - "end": 5316 - }, - "page_num": 5, - "text": "indexable", - "position": { - "top": 1259, - "bottom": 1289, - "left": 1283, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 5317, - "end": 5322 - }, - "page_num": 5, - "text": "type.", - "position": { - "top": 1261, - "bottom": 1297, - "left": 1468, - "right": 1554 - } - }, - { - "doc_offset": { - "start": 5323, - "end": 5324 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 1353, - "bottom": 1377, - "left": 214, - "right": 229 - } - }, - { - "doc_offset": { - "start": 5325, - "end": 5330 - }, - "page_num": 5, - "text": "Based", - "position": { - "top": 1362, - "bottom": 1391, - "left": 245, - "right": 355 - } - }, - { - "doc_offset": { - "start": 5331, - "end": 5333 - }, - "page_num": 5, - "text": "on", - "position": { - "top": 1369, - "bottom": 1391, - "left": 371, - "right": 413 - } - }, - { - "doc_offset": { - "start": 5334, - "end": 5337 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1362, - "bottom": 1391, - "left": 427, - "right": 483 - } - }, - { - "doc_offset": { - "start": 5338, - "end": 5344 - }, - "page_num": 5, - "text": "Result", - "position": { - "top": 1362, - "bottom": 1391, - "left": 498, - "right": 608 - } - }, - { - "doc_offset": { - "start": 5345, - "end": 5349 - }, - "page_num": 5, - "text": "File", - "position": { - "top": 1362, - "bottom": 1391, - "left": 624, - "right": 683 - } - }, - { - "doc_offset": { - "start": 5350, - "end": 5357 - }, - "page_num": 5, - "text": "classes", - "position": { - "top": 1362, - "bottom": 1391, - "left": 697, - "right": 829 - } - }, - { - "doc_offset": { - "start": 5358, - "end": 5360 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1362, - "bottom": 1391, - "left": 845, - "right": 871 - } - }, - { - "doc_offset": { - "start": 5361, - "end": 5364 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1362, - "bottom": 1391, - "left": 885, - "right": 941 - } - }, - { - "doc_offset": { - "start": 5365, - "end": 5371 - }, - "page_num": 5, - "text": "Indico", - "position": { - "top": 1362, - "bottom": 1391, - "left": 957, - "right": 1063 - } - }, - { - "doc_offset": { - "start": 5372, - "end": 5379 - }, - "page_num": 5, - "text": "Toolkit", - "position": { - "top": 1362, - "bottom": 1391, - "left": 1076, - "right": 1192 - } - }, - { - "doc_offset": { - "start": 5380, - "end": 5390 - }, - "page_num": 5, - "text": "(available", - "position": { - "top": 1361, - "bottom": 1399, - "left": 1207, - "right": 1373 - } - }, - { - "doc_offset": { - "start": 5391, - "end": 5393 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1362, - "bottom": 1391, - "left": 1388, - "right": 1414 - } - }, - { - "doc_offset": { - "start": 5394, - "end": 5400 - }, - "page_num": 5, - "text": "Python", - "position": { - "top": 1360, - "bottom": 1400, - "left": 1430, - "right": 1556 - } - }, - { - "doc_offset": { - "start": 5401, - "end": 5404 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1362, - "bottom": 1391, - "left": 1569, - "right": 1634 - } - }, - { - "doc_offset": { - "start": 5405, - "end": 5407 - }, - "page_num": 5, - "text": "C#", - "position": { - "top": 1362, - "bottom": 1391, - "left": 1649, - "right": 1697 - } - }, - { - "doc_offset": { - "start": 5408, - "end": 5418 - }, - "page_num": 5, - "text": "versions).", - "position": { - "top": 1361, - "bottom": 1399, - "left": 1712, - "right": 1881 - } - }, - { - "doc_offset": { - "start": 5419, - "end": 5420 - }, - "page_num": 5, - "text": "8", - "position": { - "top": 1456, - "bottom": 1481, - "left": 213, - "right": 229 - } - }, - { - "doc_offset": { - "start": 5421, - "end": 5423 - }, - "page_num": 5, - "text": "As", - "position": { - "top": 1465, - "bottom": 1495, - "left": 248, - "right": 293 - } - }, - { - "doc_offset": { - "start": 5424, - "end": 5435 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1465, - "bottom": 1502, - "left": 315, - "right": 513 - } - }, - { - "doc_offset": { - "start": 5436, - "end": 5438 - }, - "page_num": 5, - "text": "do", - "position": { - "top": 1465, - "bottom": 1495, - "left": 532, - "right": 577 - } - }, - { - "doc_offset": { - "start": 5439, - "end": 5442 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1467, - "bottom": 1495, - "left": 598, - "right": 653 - } - }, - { - "doc_offset": { - "start": 5443, - "end": 5447 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1465, - "bottom": 1495, - "left": 674, - "right": 757 - } - }, - { - "doc_offset": { - "start": 5448, - "end": 5449 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1473, - "bottom": 1495, - "left": 777, - "right": 797 - } - }, - { - "doc_offset": { - "start": 5450, - "end": 5465 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1465, - "bottom": 1503, - "left": 816, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 5466, - "end": 5472 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1465, - "bottom": 1502, - "left": 1144, - "right": 1263 - } - }, - { - "doc_offset": { - "start": 5473, - "end": 5484 - }, - "page_num": 5, - "text": "identifier,", - "position": { - "top": 1465, - "bottom": 1500, - "left": 1284, - "right": 1441 - } - }, - { - "doc_offset": { - "start": 5485, - "end": 5494 - }, - "page_num": 5, - "text": "predicted", - "position": { - "top": 1465, - "bottom": 1502, - "left": 1465, - "right": 1632 - } - }, - { - "doc_offset": { - "start": 5495, - "end": 5501 - }, - "page_num": 5, - "text": "values", - "position": { - "top": 1465, - "bottom": 1495, - "left": 1652, - "right": 1766 - } - }, - { - "doc_offset": { - "start": 5502, - "end": 5505 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1465, - "bottom": 1495, - "left": 1786, - "right": 1851 - } - }, - { - "doc_offset": { - "start": 5506, - "end": 5514 - }, - "page_num": 5, - "text": "reviewed", - "position": { - "top": 1465, - "bottom": 1495, - "left": 1873, - "right": 2030 - } - }, - { - "doc_offset": { - "start": 5515, - "end": 5521 - }, - "page_num": 5, - "text": "values", - "position": { - "top": 1465, - "bottom": 1495, - "left": 2051, - "right": 2165 - } - }, - { - "doc_offset": { - "start": 5522, - "end": 5526 - }, - "page_num": 5, - "text": "must", - "position": { - "top": 1467, - "bottom": 1495, - "left": 2186, - "right": 2273 - } - }, - { - "doc_offset": { - "start": 5527, - "end": 5529 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1465, - "bottom": 1495, - "left": 2294, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5530, - "end": 5537 - }, - "page_num": 5, - "text": "matched", - "position": { - "top": 1512, - "bottom": 1541, - "left": 246, - "right": 400 - } - }, - { - "doc_offset": { - "start": 5538, - "end": 5540 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 1512, - "bottom": 1549, - "left": 431, - "right": 473 - } - }, - { - "doc_offset": { - "start": 5541, - "end": 5551 - }, - "page_num": 5, - "text": "similarity", - "position": { - "top": 1512, - "bottom": 1549, - "left": 500, - "right": 658 - } - }, - { - "doc_offset": { - "start": 5552, - "end": 5558 - }, - "page_num": 5, - "text": "within", - "position": { - "top": 1512, - "bottom": 1541, - "left": 684, - "right": 788 - } - }, - { - "doc_offset": { - "start": 5559, - "end": 5562 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1512, - "bottom": 1541, - "left": 816, - "right": 872 - } - }, - { - "doc_offset": { - "start": 5563, - "end": 5575 - }, - "page_num": 5, - "text": "integration.", - "position": { - "top": 1512, - "bottom": 1550, - "left": 901, - "right": 1099 - } - }, - { - "doc_offset": { - "start": 5576, - "end": 5578 - }, - "page_num": 5, - "text": "An", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1128, - "right": 1174 - } - }, - { - "doc_offset": { - "start": 5579, - "end": 5586 - }, - "page_num": 5, - "text": "example", - "position": { - "top": 1512, - "bottom": 1549, - "left": 1204, - "right": 1356 - } - }, - { - "doc_offset": { - "start": 5587, - "end": 5589 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1384, - "right": 1418 - } - }, - { - "doc_offset": { - "start": 5590, - "end": 5595 - }, - "page_num": 5, - "text": "doing", - "position": { - "top": 1512, - "bottom": 1550, - "left": 1445, - "right": 1543 - } - }, - { - "doc_offset": { - "start": 5596, - "end": 5598 - }, - "page_num": 5, - "text": "so", - "position": { - "top": 1520, - "bottom": 1541, - "left": 1572, - "right": 1613 - } - }, - { - "doc_offset": { - "start": 5599, - "end": 5601 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1643, - "right": 1668 - } - }, - { - "doc_offset": { - "start": 5602, - "end": 5611 - }, - "page_num": 5, - "text": "available", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1697, - "right": 1853 - } - }, - { - "doc_offset": { - "start": 5612, - "end": 5614 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1882, - "right": 1908 - } - }, - { - "doc_offset": { - "start": 5615, - "end": 5618 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1937, - "right": 1993 - } - }, - { - "doc_offset": { - "start": 5619, - "end": 5635 - }, - "page_num": 5, - "text": "Indico-developed", - "position": { - "top": 1512, - "bottom": 1549, - "left": 2023, - "right": 2334 - } - }, - { - "doc_offset": { - "start": 5636, - "end": 5647 - }, - "page_num": 5, - "text": "groundtruth", - "position": { - "top": 1557, - "bottom": 1597, - "left": 244, - "right": 464 - } - }, - { - "doc_offset": { - "start": 5648, - "end": 5656 - }, - "page_num": 5, - "text": "program.", - "position": { - "top": 1566, - "bottom": 1596, - "left": 479, - "right": 638 - } - }, - { - "doc_offset": { - "start": 5657, - "end": 5666 - }, - "page_num": 5, - "text": "Scheduled", - "position": { - "top": 1657, - "bottom": 1690, - "left": 213, - "right": 430 - } - }, - { - "doc_offset": { - "start": 5667, - "end": 5674 - }, - "page_num": 5, - "text": "Process", - "position": { - "top": 1658, - "bottom": 1689, - "left": 448, - "right": 613 - } - }, - { - "doc_offset": { - "start": 5675, - "end": 5680 - }, - "page_num": 5, - "text": "Logic", - "position": { - "top": 1658, - "bottom": 1697, - "left": 629, - "right": 741 - } - }, - { - "doc_offset": { - "start": 5681, - "end": 5685 - }, - "page_num": 5, - "text": "This", - "position": { - "top": 1762, - "bottom": 1793, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 5686, - "end": 5688 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1762, - "bottom": 1793, - "left": 317, - "right": 344 - } - }, - { - "doc_offset": { - "start": 5689, - "end": 5690 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1770, - "bottom": 1793, - "left": 368, - "right": 389 - } - }, - { - "doc_offset": { - "start": 5691, - "end": 5702 - }, - "page_num": 5, - "text": "heavyweight", - "position": { - "top": 1762, - "bottom": 1802, - "left": 413, - "right": 654 - } - }, - { - "doc_offset": { - "start": 5703, - "end": 5708 - }, - "page_num": 5, - "text": "query", - "position": { - "top": 1770, - "bottom": 1802, - "left": 678, - "right": 786 - } - }, - { - "doc_offset": { - "start": 5709, - "end": 5713 - }, - "page_num": 5, - "text": "tied", - "position": { - "top": 1762, - "bottom": 1793, - "left": 808, - "right": 877 - } - }, - { - "doc_offset": { - "start": 5714, - "end": 5716 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1763, - "bottom": 1793, - "left": 901, - "right": 938 - } - }, - { - "doc_offset": { - "start": 5717, - "end": 5729 - }, - "page_num": 5, - "text": "submissions.", - "position": { - "top": 1762, - "bottom": 1793, - "left": 962, - "right": 1213 - } - }, - { - "doc_offset": { - "start": 5730, - "end": 5737 - }, - "page_num": 5, - "text": "Because", - "position": { - "top": 1762, - "bottom": 1793, - "left": 1241, - "right": 1407 - } - }, - { - "doc_offset": { - "start": 5738, - "end": 5749 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1762, - "bottom": 1801, - "left": 1432, - "right": 1644 - } - }, - { - "doc_offset": { - "start": 5750, - "end": 5754 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1762, - "bottom": 1793, - "left": 1669, - "right": 1759 - } - }, - { - "doc_offset": { - "start": 5755, - "end": 5757 - }, - "page_num": 5, - "text": "no", - "position": { - "top": 1770, - "bottom": 1793, - "left": 1783, - "right": 1829 - } - }, - { - "doc_offset": { - "start": 5758, - "end": 5773 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1762, - "bottom": 1802, - "left": 1852, - "right": 2181 - } - }, - { - "doc_offset": { - "start": 5774, - "end": 5780 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1762, - "bottom": 1801, - "left": 2208, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5781, - "end": 5792 - }, - "page_num": 5, - "text": "identifier,", - "position": { - "top": 1823, - "bottom": 1860, - "left": 215, - "right": 384 - } - }, - { - "doc_offset": { - "start": 5793, - "end": 5796 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1823, - "bottom": 1855, - "left": 406, - "right": 475 - } - }, - { - "doc_offset": { - "start": 5797, - "end": 5800 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1823, - "bottom": 1855, - "left": 495, - "right": 556 - } - }, - { - "doc_offset": { - "start": 5801, - "end": 5811 - }, - "page_num": 5, - "text": "identifier", - "position": { - "top": 1823, - "bottom": 1855, - "left": 576, - "right": 741 - } - }, - { - "doc_offset": { - "start": 5812, - "end": 5820 - }, - "page_num": 5, - "text": "assigned", - "position": { - "top": 1823, - "bottom": 1863, - "left": 759, - "right": 931 - } - }, - { - "doc_offset": { - "start": 5821, - "end": 5823 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 1823, - "bottom": 1863, - "left": 953, - "right": 998 - } - }, - { - "doc_offset": { - "start": 5824, - "end": 5827 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1823, - "bottom": 1855, - "left": 1015, - "right": 1076 - } - }, - { - "doc_offset": { - "start": 5828, - "end": 5839 - }, - "page_num": 5, - "text": "integration", - "position": { - "top": 1823, - "bottom": 1863, - "left": 1096, - "right": 1298 - } - }, - { - "doc_offset": { - "start": 5840, - "end": 5842 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1823, - "bottom": 1855, - "left": 1320, - "right": 1348 - } - }, - { - "doc_offset": { - "start": 5843, - "end": 5846 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1825, - "bottom": 1855, - "left": 1369, - "right": 1428 - } - }, - { - "doc_offset": { - "start": 5847, - "end": 5854 - }, - "page_num": 5, - "text": "stable,", - "position": { - "top": 1823, - "bottom": 1860, - "left": 1447, - "right": 1572 - } - }, - { - "doc_offset": { - "start": 5855, - "end": 5866 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1823, - "bottom": 1863, - "left": 1596, - "right": 1809 - } - }, - { - "doc_offset": { - "start": 5867, - "end": 5871 - }, - "page_num": 5, - "text": "must", - "position": { - "top": 1825, - "bottom": 1855, - "left": 1830, - "right": 1923 - } - }, - { - "doc_offset": { - "start": 5872, - "end": 5874 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1823, - "bottom": 1855, - "left": 1944, - "right": 1989 - } - }, - { - "doc_offset": { - "start": 5875, - "end": 5881 - }, - "page_num": 5, - "text": "pulled", - "position": { - "top": 1823, - "bottom": 1863, - "left": 2010, - "right": 2123 - } - }, - { - "doc_offset": { - "start": 5882, - "end": 5886 - }, - "page_num": 5, - "text": "only", - "position": { - "top": 1823, - "bottom": 1863, - "left": 2144, - "right": 2224 - } - }, - { - "doc_offset": { - "start": 5887, - "end": 5891 - }, - "page_num": 5, - "text": "once", - "position": { - "top": 1831, - "bottom": 1855, - "left": 2242, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5892, - "end": 5895 - }, - "page_num": 5, - "text": "per", - "position": { - "top": 1892, - "bottom": 1924, - "left": 215, - "right": 276 - } - }, - { - "doc_offset": { - "start": 5896, - "end": 5907 - }, - "page_num": 5, - "text": "submission.", - "position": { - "top": 1884, - "bottom": 1916, - "left": 291, - "right": 520 - } - }, - { - "doc_offset": { - "start": 5908, - "end": 5912 - }, - "page_num": 5, - "text": "This", - "position": { - "top": 1884, - "bottom": 1916, - "left": 537, - "right": 617 - } - }, - { - "doc_offset": { - "start": 5913, - "end": 5919 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 1884, - "bottom": 1916, - "left": 633, - "right": 760 - } - }, - { - "doc_offset": { - "start": 5920, - "end": 5925 - }, - "page_num": 5, - "text": "occur", - "position": { - "top": 1892, - "bottom": 1916, - "left": 777, - "right": 887 - } - }, - { - "doc_offset": { - "start": 5926, - "end": 5928 - }, - "page_num": 5, - "text": "at", - "position": { - "top": 1886, - "bottom": 1916, - "left": 902, - "right": 936 - } - }, - { - "doc_offset": { - "start": 5929, - "end": 5932 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1884, - "bottom": 1916, - "left": 951, - "right": 1011 - } - }, - { - "doc_offset": { - "start": 5933, - "end": 5941 - }, - "page_num": 5, - "text": "terminal", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1026, - "right": 1179 - } - }, - { - "doc_offset": { - "start": 5942, - "end": 5947 - }, - "page_num": 5, - "text": "state", - "position": { - "top": 1886, - "bottom": 1916, - "left": 1197, - "right": 1291 - } - }, - { - "doc_offset": { - "start": 5948, - "end": 5950 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1307, - "right": 1343 - } - }, - { - "doc_offset": { - "start": 5951, - "end": 5954 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1357, - "right": 1417 - } - }, - { - "doc_offset": { - "start": 5955, - "end": 5965 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1433, - "right": 1651 - } - }, - { - "doc_offset": { - "start": 5966, - "end": 5970 - }, - "page_num": 5, - "text": "just", - "position": { - "top": 1884, - "bottom": 1924, - "left": 1667, - "right": 1735 - } - }, - { - "doc_offset": { - "start": 5971, - "end": 5977 - }, - "page_num": 5, - "text": "before", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1753, - "right": 1874 - } - }, - { - "doc_offset": { - "start": 5978, - "end": 5982 - }, - "page_num": 5, - "text": "it's", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1891, - "right": 1945 - } - }, - { - "doc_offset": { - "start": 5983, - "end": 5990 - }, - "page_num": 5, - "text": "omitted", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1961, - "right": 2105 - } - }, - { - "doc_offset": { - "start": 5991, - "end": 5995 - }, - "page_num": 5, - "text": "from", - "position": { - "top": 1884, - "bottom": 1916, - "left": 2122, - "right": 2208 - } - }, - { - "doc_offset": { - "start": 5996, - "end": 6002 - }, - "page_num": 5, - "text": "future", - "position": { - "top": 1884, - "bottom": 1916, - "left": 2225, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 6003, - "end": 6014 - }, - "page_num": 5, - "text": "processing:", - "position": { - "top": 1945, - "bottom": 1986, - "left": 215, - "right": 435 - } - }, - { - "doc_offset": { - "start": 6015, - "end": 6019 - }, - "page_num": 5, - "text": "i.e.", - "position": { - "top": 1945, - "bottom": 1977, - "left": 461, - "right": 512 - } - }, - { - "doc_offset": { - "start": 6020, - "end": 6024 - }, - "page_num": 5, - "text": "when", - "position": { - "top": 1945, - "bottom": 1977, - "left": 536, - "right": 637 - } - }, - { - "doc_offset": { - "start": 6025, - "end": 6028 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1945, - "bottom": 1977, - "left": 660, - "right": 720 - } - }, - { - "doc_offset": { - "start": 6029, - "end": 6039 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1945, - "bottom": 1977, - "left": 741, - "right": 959 - } - }, - { - "doc_offset": { - "start": 6040, - "end": 6042 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1945, - "bottom": 1977, - "left": 984, - "right": 1012 - } - }, - { - "doc_offset": { - "start": 6043, - "end": 6049 - }, - "page_num": 5, - "text": "marked", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1035, - "right": 1177 - } - }, - { - "doc_offset": { - "start": 6050, - "end": 6052 - }, - "page_num": 5, - "text": "as", - "position": { - "top": 1953, - "bottom": 1977, - "left": 1200, - "right": 1243 - } - }, - { - "doc_offset": { - "start": 6053, - "end": 6063 - }, - "page_num": 5, - "text": "retrieved.", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1266, - "right": 1442 - } - }, - { - "doc_offset": { - "start": 6064, - "end": 6068 - }, - "page_num": 5, - "text": "Once", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1467, - "right": 1568 - } - }, - { - "doc_offset": { - "start": 6069, - "end": 6070 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1953, - "bottom": 1977, - "left": 1590, - "right": 1611 - } - }, - { - "doc_offset": { - "start": 6071, - "end": 6081 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1633, - "right": 1851 - } - }, - { - "doc_offset": { - "start": 6082, - "end": 6084 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1876, - "right": 1903 - } - }, - { - "doc_offset": { - "start": 6085, - "end": 6091 - }, - "page_num": 5, - "text": "marked", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1926, - "right": 2068 - } - }, - { - "doc_offset": { - "start": 6092, - "end": 6094 - }, - "page_num": 5, - "text": "as", - "position": { - "top": 1953, - "bottom": 1977, - "left": 2092, - "right": 2134 - } - }, - { - "doc_offset": { - "start": 6095, - "end": 6105 - }, - "page_num": 5, - "text": "retrieved,", - "position": { - "top": 1945, - "bottom": 1983, - "left": 2157, - "right": 2333 - } - }, - { - "doc_offset": { - "start": 6106, - "end": 6111 - }, - "page_num": 5, - "text": "there", - "position": { - "top": 2007, - "bottom": 2038, - "left": 212, - "right": 310 - } - }, - { - "doc_offset": { - "start": 6112, - "end": 6118 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 2007, - "bottom": 2038, - "left": 328, - "right": 455 - } - }, - { - "doc_offset": { - "start": 6119, - "end": 6121 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 2007, - "bottom": 2038, - "left": 477, - "right": 522 - } - }, - { - "doc_offset": { - "start": 6122, - "end": 6124 - }, - "page_num": 5, - "text": "no", - "position": { - "top": 2015, - "bottom": 2038, - "left": 542, - "right": 587 - } - }, - { - "doc_offset": { - "start": 6125, - "end": 6132 - }, - "page_num": 5, - "text": "further", - "position": { - "top": 2006, - "bottom": 2038, - "left": 605, - "right": 733 - } - }, - { - "doc_offset": { - "start": 6133, - "end": 6140 - }, - "page_num": 5, - "text": "updates", - "position": { - "top": 2007, - "bottom": 2046, - "left": 752, - "right": 906 - } - }, - { - "doc_offset": { - "start": 6141, - "end": 6143 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2008, - "bottom": 2038, - "left": 924, - "right": 961 - } - }, - { - "doc_offset": { - "start": 6144, - "end": 6147 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2007, - "bottom": 2038, - "left": 979, - "right": 1039 - } - }, - { - "doc_offset": { - "start": 6148, - "end": 6158 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 2007, - "bottom": 2038, - "left": 1057, - "right": 1275 - } - }, - { - "doc_offset": { - "start": 6159, - "end": 6168 - }, - "page_num": 5, - "text": "resetting", - "position": { - "top": 2007, - "bottom": 2047, - "left": 1297, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 6169, - "end": 6172 - }, - "page_num": 5, - "text": "its", - "position": { - "top": 2007, - "bottom": 2038, - "left": 1482, - "right": 1523 - } - }, - { - "doc_offset": { - "start": 6173, - "end": 6182 - }, - "page_num": 5, - "text": "updatedAt", - "position": { - "top": 2009, - "bottom": 2046, - "left": 1558, - "right": 1753 - } - }, - { - "doc_offset": { - "start": 6183, - "end": 6193 - }, - "page_num": 5, - "text": "attribute,", - "position": { - "top": 2007, - "bottom": 2044, - "left": 1789, - "right": 1959 - } - }, - { - "doc_offset": { - "start": 6194, - "end": 6203 - }, - "page_num": 5, - "text": "therefore", - "position": { - "top": 2006, - "bottom": 2038, - "left": 1979, - "right": 2152 - } - }, - { - "doc_offset": { - "start": 6204, - "end": 6206 - }, - "page_num": 5, - "text": "it", - "position": { - "top": 2007, - "bottom": 2038, - "left": 2172, - "right": 2191 - } - }, - { - "doc_offset": { - "start": 6207, - "end": 6211 - }, - "page_num": 5, - "text": "will", - "position": { - "top": 2007, - "bottom": 2038, - "left": 2210, - "right": 2268 - } - }, - { - "doc_offset": { - "start": 6212, - "end": 6214 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 2007, - "bottom": 2038, - "left": 2291, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 6215, - "end": 6222 - }, - "page_num": 5, - "text": "omitted", - "position": { - "top": 2068, - "bottom": 2100, - "left": 214, - "right": 358 - } - }, - { - "doc_offset": { - "start": 6223, - "end": 6227 - }, - "page_num": 5, - "text": "from", - "position": { - "top": 2067, - "bottom": 2100, - "left": 374, - "right": 460 - } - }, - { - "doc_offset": { - "start": 6228, - "end": 6231 - }, - "page_num": 5, - "text": "all", - "position": { - "top": 2068, - "bottom": 2100, - "left": 476, - "right": 515 - } - }, - { - "doc_offset": { - "start": 6232, - "end": 6238 - }, - "page_num": 5, - "text": "future", - "position": { - "top": 2067, - "bottom": 2100, - "left": 530, - "right": 642 - } - }, - { - "doc_offset": { - "start": 6239, - "end": 6243 - }, - "page_num": 5, - "text": "runs", - "position": { - "top": 2076, - "bottom": 2100, - "left": 657, - "right": 739 - } - }, - { - "doc_offset": { - "start": 6244, - "end": 6246 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 2067, - "bottom": 2100, - "left": 754, - "right": 790 - } - }, - { - "doc_offset": { - "start": 6247, - "end": 6250 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2068, - "bottom": 2100, - "left": 803, - "right": 863 - } - }, - { - "doc_offset": { - "start": 6251, - "end": 6263 - }, - "page_num": 5, - "text": "integration.", - "position": { - "top": 2068, - "bottom": 2108, - "left": 879, - "right": 1092 - } - }, - { - "doc_offset": { - "start": 6264, - "end": 6268 - }, - "page_num": 5, - "text": "Data", - "position": { - "top": 2174, - "bottom": 2206, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 6269, - "end": 6283 - }, - "page_num": 5, - "text": "Reconciliation", - "position": { - "top": 2174, - "bottom": 2206, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 6284, - "end": 6287 - }, - "page_num": 5, - "text": "The", - "position": { - "top": 2278, - "bottom": 2310, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 6288, - "end": 6294 - }, - "page_num": 5, - "text": "output", - "position": { - "top": 2280, - "bottom": 2318, - "left": 301, - "right": 425 - } - }, - { - "doc_offset": { - "start": 6295, - "end": 6299 - }, - "page_num": 5, - "text": "does", - "position": { - "top": 2278, - "bottom": 2310, - "left": 442, - "right": 536 - } - }, - { - "doc_offset": { - "start": 6300, - "end": 6303 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 2280, - "bottom": 2310, - "left": 554, - "right": 613 - } - }, - { - "doc_offset": { - "start": 6304, - "end": 6311 - }, - "page_num": 5, - "text": "include", - "position": { - "top": 2278, - "bottom": 2310, - "left": 632, - "right": 769 - } - }, - { - "doc_offset": { - "start": 6312, - "end": 6313 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 2286, - "bottom": 2310, - "left": 785, - "right": 807 - } - }, - { - "doc_offset": { - "start": 6314, - "end": 6321 - }, - "page_num": 5, - "text": "primary", - "position": { - "top": 2278, - "bottom": 2318, - "left": 824, - "right": 969 - } - }, - { - "doc_offset": { - "start": 6322, - "end": 6325 - }, - "page_num": 5, - "text": "key", - "position": { - "top": 2278, - "bottom": 2318, - "left": 986, - "right": 1051 - } - }, - { - "doc_offset": { - "start": 6326, - "end": 6332 - }, - "page_num": 5, - "text": "needed", - "position": { - "top": 2278, - "bottom": 2310, - "left": 1068, - "right": 1209 - } - }, - { - "doc_offset": { - "start": 6333, - "end": 6335 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2280, - "bottom": 2310, - "left": 1227, - "right": 1264 - } - }, - { - "doc_offset": { - "start": 6336, - "end": 6342 - }, - "page_num": 5, - "text": "update", - "position": { - "top": 2278, - "bottom": 2318, - "left": 1282, - "right": 1415 - } - }, - { - "doc_offset": { - "start": 6343, - "end": 6351 - }, - "page_num": 5, - "text": "existing", - "position": { - "top": 2278, - "bottom": 2318, - "left": 1432, - "right": 1578 - } - }, - { - "doc_offset": { - "start": 6352, - "end": 6357 - }, - "page_num": 5, - "text": "rows.", - "position": { - "top": 2286, - "bottom": 2310, - "left": 1598, - "right": 1698 - } - }, - { - "doc_offset": { - "start": 6358, - "end": 6360 - }, - "page_num": 5, - "text": "As", - "position": { - "top": 2278, - "bottom": 2310, - "left": 1715, - "right": 1765 - } - }, - { - "doc_offset": { - "start": 6361, - "end": 6365 - }, - "page_num": 5, - "text": "such", - "position": { - "top": 2278, - "bottom": 2310, - "left": 1781, - "right": 1871 - } - }, - { - "doc_offset": { - "start": 6366, - "end": 6368 - }, - "page_num": 5, - "text": "it", - "position": { - "top": 2278, - "bottom": 2309, - "left": 1891, - "right": 1910 - } - }, - { - "doc_offset": { - "start": 6369, - "end": 6373 - }, - "page_num": 5, - "text": "will", - "position": { - "top": 2278, - "bottom": 2309, - "left": 1927, - "right": 1985 - } - }, - { - "doc_offset": { - "start": 6374, - "end": 6378 - }, - "page_num": 5, - "text": "only", - "position": { - "top": 2278, - "bottom": 2318, - "left": 2004, - "right": 2083 - } - }, - { - "doc_offset": { - "start": 6379, - "end": 6386 - }, - "page_num": 5, - "text": "contain", - "position": { - "top": 2278, - "bottom": 2310, - "left": 2099, - "right": 2239 - } - }, - { - "doc_offset": { - "start": 6387, - "end": 6390 - }, - "page_num": 5, - "text": "new", - "position": { - "top": 2286, - "bottom": 2310, - "left": 2259, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 6391, - "end": 6395 - }, - "page_num": 5, - "text": "rows", - "position": { - "top": 2347, - "bottom": 2371, - "left": 215, - "right": 305 - } - }, - { - "doc_offset": { - "start": 6396, - "end": 6398 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2341, - "bottom": 2371, - "left": 319, - "right": 355 - } - }, - { - "doc_offset": { - "start": 6399, - "end": 6401 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 2339, - "bottom": 2371, - "left": 372, - "right": 418 - } - }, - { - "doc_offset": { - "start": 6402, - "end": 6410 - }, - "page_num": 5, - "text": "inserted", - "position": { - "top": 2339, - "bottom": 2371, - "left": 434, - "right": 585 - } - }, - { - "doc_offset": { - "start": 6411, - "end": 6415 - }, - "page_num": 5, - "text": "into", - "position": { - "top": 2339, - "bottom": 2371, - "left": 603, - "right": 672 - } - }, - { - "doc_offset": { - "start": 6416, - "end": 6419 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2339, - "bottom": 2371, - "left": 686, - "right": 746 - } - }, - { - "doc_offset": { - "start": 6420, - "end": 6427 - }, - "page_num": 5, - "text": "Metrics", - "position": { - "top": 2339, - "bottom": 2371, - "left": 763, - "right": 903 - } - }, - { - "doc_offset": { - "start": 6428, - "end": 6437 - }, - "page_num": 5, - "text": "database.", - "position": { - "top": 2339, - "bottom": 2371, - "left": 918, - "right": 1106 - } - }, - { - "doc_offset": { - "start": 6438, - "end": 6447 - }, - "page_num": 5, - "text": "formatted", - "position": { - "top": 2700, - "bottom": 2720, - "left": 1927, - "right": 2048 - } - }, - { - "doc_offset": { - "start": 6448, - "end": 6450 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 2700, - "bottom": 2726, - "left": 2056, - "right": 2087 - } - }, - { - "doc_offset": { - "start": 6451, - "end": 6459 - }, - "page_num": 5, - "text": "Markdeep", - "position": { - "top": 2700, - "bottom": 2726, - "left": 2094, - "right": 2218 - } - }, - { - "doc_offset": { - "start": 6460, - "end": 6464 - }, - "page_num": 5, - "text": "1.17", - "position": { - "top": 2700, - "bottom": 2720, - "left": 2231, - "right": 2282 - } - }, - { - "doc_offset": { - "start": 6465, - "end": 6466 - }, - "page_num": 5, - "text": "\u2712", - "position": { - "top": 2691, - "bottom": 2731, - "left": 2288, - "right": 2328 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4288/107455/submission_107455_result.json b/tests/data/etloutput/4288/107455/submission_107455_result.json deleted file mode 100644 index 27d70d7..0000000 --- a/tests/data/etloutput/4288/107455/submission_107455_result.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "file_version": 1, - "submission_id": 107455, - "etl_output": "indico-file:///storage/submission/4288/107455/101154/etl_output.json", - "results": { - "document": { - "results": { - "Standard Document v2": [] - }, - "rejected": { - "Standard Document v2": [] - } - } - } -} \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/etl_output.json b/tests/data/etloutput/4288/107456/101155/etl_output.json deleted file mode 100644 index 7684e98..0000000 --- a/tests/data/etloutput/4288/107456/101155/etl_output.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "pages": [ - { - "image": "indico-file:///storage/submission/4288/107456/101155/original_page_0.png", - "thumbnail": "indico-file:///storage/submission/4288/107456/101155/original_thumbnail_0.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 0, - "end": 1359 - }, - "page_num": 0, - "text": "indico-file:///storage/submission/4288/107456/101155/page_0_text.txt", - "characters": "indico-file:///storage/submission/4288/107456/101155/page_0_chars.json", - "tokens": "indico-file:///storage/submission/4288/107456/101155/page_0_tokens.json", - "blocks": "indico-file:///storage/submission/4288/107456/101155/page_0_blocks.json" - }, - { - "image": "indico-file:///storage/submission/4288/107456/101155/original_page_1.png", - "thumbnail": "indico-file:///storage/submission/4288/107456/101155/original_thumbnail_1.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 1360, - "end": 1838 - }, - "page_num": 1, - "text": "indico-file:///storage/submission/4288/107456/101155/page_1_text.txt", - "characters": "indico-file:///storage/submission/4288/107456/101155/page_1_chars.json", - "tokens": "indico-file:///storage/submission/4288/107456/101155/page_1_tokens.json", - "blocks": "indico-file:///storage/submission/4288/107456/101155/page_1_blocks.json" - }, - { - "image": "indico-file:///storage/submission/4288/107456/101155/original_page_2.png", - "thumbnail": "indico-file:///storage/submission/4288/107456/101155/original_thumbnail_2.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 1839, - "end": 3125 - }, - "page_num": 2, - "text": "indico-file:///storage/submission/4288/107456/101155/page_2_text.txt", - "characters": "indico-file:///storage/submission/4288/107456/101155/page_2_chars.json", - "tokens": "indico-file:///storage/submission/4288/107456/101155/page_2_tokens.json", - "blocks": "indico-file:///storage/submission/4288/107456/101155/page_2_blocks.json" - }, - { - "image": "indico-file:///storage/submission/4288/107456/101155/original_page_3.png", - "thumbnail": "indico-file:///storage/submission/4288/107456/101155/original_thumbnail_3.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 3126, - "end": 4167 - }, - "page_num": 3, - "text": "indico-file:///storage/submission/4288/107456/101155/page_3_text.txt", - "characters": "indico-file:///storage/submission/4288/107456/101155/page_3_chars.json", - "tokens": "indico-file:///storage/submission/4288/107456/101155/page_3_tokens.json", - "blocks": "indico-file:///storage/submission/4288/107456/101155/page_3_blocks.json" - }, - { - "image": "indico-file:///storage/submission/4288/107456/101155/original_page_4.png", - "thumbnail": "indico-file:///storage/submission/4288/107456/101155/original_thumbnail_4.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 4168, - "end": 4706 - }, - "page_num": 4, - "text": "indico-file:///storage/submission/4288/107456/101155/page_4_text.txt", - "characters": "indico-file:///storage/submission/4288/107456/101155/page_4_chars.json", - "tokens": "indico-file:///storage/submission/4288/107456/101155/page_4_tokens.json", - "blocks": "indico-file:///storage/submission/4288/107456/101155/page_4_blocks.json" - }, - { - "image": "indico-file:///storage/submission/4288/107456/101155/original_page_5.png", - "thumbnail": "indico-file:///storage/submission/4288/107456/101155/original_thumbnail_5.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 4707, - "end": 6466 - }, - "page_num": 5, - "text": "indico-file:///storage/submission/4288/107456/101155/page_5_text.txt", - "characters": "indico-file:///storage/submission/4288/107456/101155/page_5_chars.json", - "tokens": "indico-file:///storage/submission/4288/107456/101155/page_5_tokens.json", - "blocks": "indico-file:///storage/submission/4288/107456/101155/page_5_blocks.json" - } - ], - "num_pages": 6, - "full_text": "indico-file:///storage/submission/4288/107456/101155/full_text.txt", - "email_metadata": {} -} \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_0_text.txt b/tests/data/etloutput/4288/107456/101155/page_0_text.txt deleted file mode 100644 index b527fea..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_0_text.txt +++ /dev/null @@ -1,47 +0,0 @@ -Indico Metrics Integration Data Model -This document covers the intermediate data model used to pull Data Intake metrics -from Indico to be aggregated and displayed within Metrics. -This document assumes that a single integration process is run on a schedule and -uses 4 discrete GraphQL queries to download low-level metrics using the Indico -GraphQL API. Scheduling recommendations are provided below. -These metrics are lightly processed and denormalized to match the intermediate -data model defined below. The integration will produce data in a consumable -format, such as SQL UPSERT queries, an importable CSV file, or an importable -JSON file. -Contents -1 Entities -1.1 Workflow -1.2 Model -1.3 Submission -1.4 Submission File -1.5 Reviewer -1.6 Prediction -Once imported, Metrics can filter and aggregate the intermediate data as described below to display higher- -level data points to fulfill the reporting requirements defined elsewhere. -1 -Entities -1.1 -Workflow -Column -Type -GraphQL Source -id -int -workflow.id -name -str -workflow.name -Example GraphQL Query -query Workflows { -workflows { -workflows { -id -name -} -} -} -Scheduled Process Logic -This is a lightweight query. All workflows will be pulled every time the integration is run. -Data Reconciliation -The output will include the primary key id needed to update existing rows and insert new rows into the -Metrics database. \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_0_tokens.json b/tests/data/etloutput/4288/107456/101155/page_0_tokens.json deleted file mode 100644 index 691d98c..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_0_tokens.json +++ /dev/null @@ -1,2956 +0,0 @@ -[ - { - "doc_offset": { - "start": 0, - "end": 6 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 172, - "bottom": 235, - "left": 409, - "right": 691 - } - }, - { - "doc_offset": { - "start": 7, - "end": 14 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 172, - "bottom": 235, - "left": 730, - "right": 1051 - } - }, - { - "doc_offset": { - "start": 15, - "end": 26 - }, - "page_num": 0, - "text": "Integration", - "position": { - "top": 172, - "bottom": 250, - "left": 1087, - "right": 1599 - } - }, - { - "doc_offset": { - "start": 27, - "end": 31 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 175, - "bottom": 235, - "left": 1640, - "right": 1839 - } - }, - { - "doc_offset": { - "start": 32, - "end": 37 - }, - "page_num": 0, - "text": "Model", - "position": { - "top": 172, - "bottom": 235, - "left": 1881, - "right": 2138 - } - }, - { - "doc_offset": { - "start": 38, - "end": 42 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 391, - "bottom": 423, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 43, - "end": 51 - }, - "page_num": 0, - "text": "document", - "position": { - "top": 391, - "bottom": 423, - "left": 308, - "right": 503 - } - }, - { - "doc_offset": { - "start": 52, - "end": 58 - }, - "page_num": 0, - "text": "covers", - "position": { - "top": 399, - "bottom": 423, - "left": 519, - "right": 647 - } - }, - { - "doc_offset": { - "start": 59, - "end": 62 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 391, - "bottom": 423, - "left": 662, - "right": 722 - } - }, - { - "doc_offset": { - "start": 63, - "end": 75 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 391, - "bottom": 423, - "left": 739, - "right": 978 - } - }, - { - "doc_offset": { - "start": 76, - "end": 80 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 391, - "bottom": 423, - "left": 994, - "right": 1079 - } - }, - { - "doc_offset": { - "start": 81, - "end": 86 - }, - "page_num": 0, - "text": "model", - "position": { - "top": 391, - "bottom": 423, - "left": 1095, - "right": 1211 - } - }, - { - "doc_offset": { - "start": 87, - "end": 91 - }, - "page_num": 0, - "text": "used", - "position": { - "top": 391, - "bottom": 423, - "left": 1230, - "right": 1320 - } - }, - { - "doc_offset": { - "start": 92, - "end": 94 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 393, - "bottom": 423, - "left": 1337, - "right": 1374 - } - }, - { - "doc_offset": { - "start": 95, - "end": 99 - }, - "page_num": 0, - "text": "pull", - "position": { - "top": 391, - "bottom": 431, - "left": 1392, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 100, - "end": 104 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 391, - "bottom": 423, - "left": 1475, - "right": 1563 - } - }, - { - "doc_offset": { - "start": 105, - "end": 111 - }, - "page_num": 0, - "text": "Intake", - "position": { - "top": 391, - "bottom": 423, - "left": 1580, - "right": 1695 - } - }, - { - "doc_offset": { - "start": 112, - "end": 119 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 391, - "bottom": 423, - "left": 1712, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 120, - "end": 124 - }, - "page_num": 0, - "text": "from", - "position": { - "top": 452, - "bottom": 484, - "left": 213, - "right": 298 - } - }, - { - "doc_offset": { - "start": 125, - "end": 131 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 453, - "bottom": 484, - "left": 317, - "right": 432 - } - }, - { - "doc_offset": { - "start": 132, - "end": 134 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 454, - "bottom": 484, - "left": 446, - "right": 483 - } - }, - { - "doc_offset": { - "start": 135, - "end": 137 - }, - "page_num": 0, - "text": "be", - "position": { - "top": 453, - "bottom": 484, - "left": 500, - "right": 545 - } - }, - { - "doc_offset": { - "start": 138, - "end": 148 - }, - "page_num": 0, - "text": "aggregated", - "position": { - "top": 453, - "bottom": 493, - "left": 560, - "right": 778 - } - }, - { - "doc_offset": { - "start": 149, - "end": 152 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 453, - "bottom": 484, - "left": 795, - "right": 864 - } - }, - { - "doc_offset": { - "start": 153, - "end": 162 - }, - "page_num": 0, - "text": "displayed", - "position": { - "top": 453, - "bottom": 493, - "left": 881, - "right": 1064 - } - }, - { - "doc_offset": { - "start": 163, - "end": 169 - }, - "page_num": 0, - "text": "within", - "position": { - "top": 453, - "bottom": 484, - "left": 1080, - "right": 1191 - } - }, - { - "doc_offset": { - "start": 170, - "end": 178 - }, - "page_num": 0, - "text": "Metrics.", - "position": { - "top": 453, - "bottom": 484, - "left": 1210, - "right": 1360 - } - }, - { - "doc_offset": { - "start": 179, - "end": 183 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 558, - "bottom": 589, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 184, - "end": 192 - }, - "page_num": 0, - "text": "document", - "position": { - "top": 558, - "bottom": 589, - "left": 309, - "right": 504 - } - }, - { - "doc_offset": { - "start": 193, - "end": 200 - }, - "page_num": 0, - "text": "assumes", - "position": { - "top": 566, - "bottom": 589, - "left": 522, - "right": 694 - } - }, - { - "doc_offset": { - "start": 201, - "end": 205 - }, - "page_num": 0, - "text": "that", - "position": { - "top": 558, - "bottom": 589, - "left": 710, - "right": 784 - } - }, - { - "doc_offset": { - "start": 206, - "end": 207 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 566, - "bottom": 589, - "left": 802, - "right": 823 - } - }, - { - "doc_offset": { - "start": 208, - "end": 214 - }, - "page_num": 0, - "text": "single", - "position": { - "top": 558, - "bottom": 598, - "left": 840, - "right": 952 - } - }, - { - "doc_offset": { - "start": 215, - "end": 226 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 558, - "bottom": 598, - "left": 971, - "right": 1172 - } - }, - { - "doc_offset": { - "start": 227, - "end": 234 - }, - "page_num": 0, - "text": "process", - "position": { - "top": 566, - "bottom": 597, - "left": 1193, - "right": 1344 - } - }, - { - "doc_offset": { - "start": 235, - "end": 237 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 558, - "bottom": 589, - "left": 1364, - "right": 1391 - } - }, - { - "doc_offset": { - "start": 238, - "end": 241 - }, - "page_num": 0, - "text": "run", - "position": { - "top": 566, - "bottom": 589, - "left": 1410, - "right": 1467 - } - }, - { - "doc_offset": { - "start": 242, - "end": 244 - }, - "page_num": 0, - "text": "on", - "position": { - "top": 566, - "bottom": 589, - "left": 1487, - "right": 1532 - } - }, - { - "doc_offset": { - "start": 245, - "end": 246 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 566, - "bottom": 589, - "left": 1551, - "right": 1572 - } - }, - { - "doc_offset": { - "start": 247, - "end": 255 - }, - "page_num": 0, - "text": "schedule", - "position": { - "top": 558, - "bottom": 589, - "left": 1589, - "right": 1764 - } - }, - { - "doc_offset": { - "start": 256, - "end": 259 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 558, - "bottom": 589, - "left": 1781, - "right": 1850 - } - }, - { - "doc_offset": { - "start": 260, - "end": 264 - }, - "page_num": 0, - "text": "uses", - "position": { - "top": 627, - "bottom": 651, - "left": 215, - "right": 302 - } - }, - { - "doc_offset": { - "start": 265, - "end": 266 - }, - "page_num": 0, - "text": "4", - "position": { - "top": 619, - "bottom": 650, - "left": 324, - "right": 345 - } - }, - { - "doc_offset": { - "start": 267, - "end": 275 - }, - "page_num": 0, - "text": "discrete", - "position": { - "top": 619, - "bottom": 651, - "left": 368, - "right": 521 - } - }, - { - "doc_offset": { - "start": 276, - "end": 283 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 618, - "bottom": 659, - "left": 543, - "right": 720 - } - }, - { - "doc_offset": { - "start": 284, - "end": 291 - }, - "page_num": 0, - "text": "queries", - "position": { - "top": 619, - "bottom": 659, - "left": 741, - "right": 881 - } - }, - { - "doc_offset": { - "start": 292, - "end": 294 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 621, - "bottom": 651, - "left": 902, - "right": 939 - } - }, - { - "doc_offset": { - "start": 295, - "end": 303 - }, - "page_num": 0, - "text": "download", - "position": { - "top": 619, - "bottom": 651, - "left": 962, - "right": 1150 - } - }, - { - "doc_offset": { - "start": 304, - "end": 313 - }, - "page_num": 0, - "text": "low-level", - "position": { - "top": 619, - "bottom": 651, - "left": 1175, - "right": 1342 - } - }, - { - "doc_offset": { - "start": 314, - "end": 321 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 619, - "bottom": 651, - "left": 1367, - "right": 1508 - } - }, - { - "doc_offset": { - "start": 322, - "end": 327 - }, - "page_num": 0, - "text": "using", - "position": { - "top": 619, - "bottom": 659, - "left": 1531, - "right": 1631 - } - }, - { - "doc_offset": { - "start": 328, - "end": 331 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 619, - "bottom": 651, - "left": 1653, - "right": 1713 - } - }, - { - "doc_offset": { - "start": 332, - "end": 338 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 619, - "bottom": 651, - "left": 1737, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 339, - "end": 346 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 679, - "bottom": 720, - "left": 214, - "right": 391 - } - }, - { - "doc_offset": { - "start": 347, - "end": 351 - }, - "page_num": 0, - "text": "API.", - "position": { - "top": 680, - "bottom": 711, - "left": 403, - "right": 480 - } - }, - { - "doc_offset": { - "start": 352, - "end": 362 - }, - "page_num": 0, - "text": "Scheduling", - "position": { - "top": 679, - "bottom": 720, - "left": 497, - "right": 712 - } - }, - { - "doc_offset": { - "start": 363, - "end": 378 - }, - "page_num": 0, - "text": "recommendations", - "position": { - "top": 680, - "bottom": 712, - "left": 729, - "right": 1078 - } - }, - { - "doc_offset": { - "start": 379, - "end": 382 - }, - "page_num": 0, - "text": "are", - "position": { - "top": 688, - "bottom": 712, - "left": 1093, - "right": 1151 - } - }, - { - "doc_offset": { - "start": 383, - "end": 391 - }, - "page_num": 0, - "text": "provided", - "position": { - "top": 680, - "bottom": 720, - "left": 1167, - "right": 1333 - } - }, - { - "doc_offset": { - "start": 392, - "end": 398 - }, - "page_num": 0, - "text": "below.", - "position": { - "top": 680, - "bottom": 712, - "left": 1351, - "right": 1472 - } - }, - { - "doc_offset": { - "start": 399, - "end": 404 - }, - "page_num": 0, - "text": "These", - "position": { - "top": 785, - "bottom": 817, - "left": 212, - "right": 329 - } - }, - { - "doc_offset": { - "start": 405, - "end": 412 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 785, - "bottom": 817, - "left": 353, - "right": 493 - } - }, - { - "doc_offset": { - "start": 413, - "end": 416 - }, - "page_num": 0, - "text": "are", - "position": { - "top": 793, - "bottom": 817, - "left": 515, - "right": 573 - } - }, - { - "doc_offset": { - "start": 417, - "end": 424 - }, - "page_num": 0, - "text": "lightly", - "position": { - "top": 785, - "bottom": 825, - "left": 597, - "right": 708 - } - }, - { - "doc_offset": { - "start": 425, - "end": 434 - }, - "page_num": 0, - "text": "processed", - "position": { - "top": 785, - "bottom": 825, - "left": 730, - "right": 930 - } - }, - { - "doc_offset": { - "start": 435, - "end": 438 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 785, - "bottom": 817, - "left": 954, - "right": 1023 - } - }, - { - "doc_offset": { - "start": 439, - "end": 451 - }, - "page_num": 0, - "text": "denormalized", - "position": { - "top": 785, - "bottom": 817, - "left": 1047, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 452, - "end": 454 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 787, - "bottom": 817, - "left": 1329, - "right": 1366 - } - }, - { - "doc_offset": { - "start": 455, - "end": 460 - }, - "page_num": 0, - "text": "match", - "position": { - "top": 785, - "bottom": 817, - "left": 1390, - "right": 1507 - } - }, - { - "doc_offset": { - "start": 461, - "end": 464 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 785, - "bottom": 817, - "left": 1529, - "right": 1590 - } - }, - { - "doc_offset": { - "start": 465, - "end": 477 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 785, - "bottom": 817, - "left": 1613, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 478, - "end": 482 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 846, - "bottom": 878, - "left": 214, - "right": 298 - } - }, - { - "doc_offset": { - "start": 483, - "end": 488 - }, - "page_num": 0, - "text": "model", - "position": { - "top": 846, - "bottom": 878, - "left": 326, - "right": 442 - } - }, - { - "doc_offset": { - "start": 489, - "end": 496 - }, - "page_num": 0, - "text": "defined", - "position": { - "top": 846, - "bottom": 878, - "left": 471, - "right": 613 - } - }, - { - "doc_offset": { - "start": 497, - "end": 503 - }, - "page_num": 0, - "text": "below.", - "position": { - "top": 846, - "bottom": 878, - "left": 643, - "right": 764 - } - }, - { - "doc_offset": { - "start": 504, - "end": 507 - }, - "page_num": 0, - "text": "The", - "position": { - "top": 846, - "bottom": 878, - "left": 792, - "right": 864 - } - }, - { - "doc_offset": { - "start": 508, - "end": 519 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 846, - "bottom": 887, - "left": 893, - "right": 1094 - } - }, - { - "doc_offset": { - "start": 520, - "end": 524 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 846, - "bottom": 878, - "left": 1123, - "right": 1181 - } - }, - { - "doc_offset": { - "start": 525, - "end": 532 - }, - "page_num": 0, - "text": "produce", - "position": { - "top": 846, - "bottom": 886, - "left": 1212, - "right": 1370 - } - }, - { - "doc_offset": { - "start": 533, - "end": 537 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 846, - "bottom": 878, - "left": 1397, - "right": 1482 - } - }, - { - "doc_offset": { - "start": 538, - "end": 540 - }, - "page_num": 0, - "text": "in", - "position": { - "top": 846, - "bottom": 878, - "left": 1510, - "right": 1539 - } - }, - { - "doc_offset": { - "start": 541, - "end": 542 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 854, - "bottom": 878, - "left": 1568, - "right": 1589 - } - }, - { - "doc_offset": { - "start": 543, - "end": 553 - }, - "page_num": 0, - "text": "consumable", - "position": { - "top": 846, - "bottom": 878, - "left": 1616, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 554, - "end": 561 - }, - "page_num": 0, - "text": "format,", - "position": { - "top": 907, - "bottom": 945, - "left": 213, - "right": 348 - } - }, - { - "doc_offset": { - "start": 562, - "end": 566 - }, - "page_num": 0, - "text": "such", - "position": { - "top": 908, - "bottom": 939, - "left": 373, - "right": 463 - } - }, - { - "doc_offset": { - "start": 567, - "end": 569 - }, - "page_num": 0, - "text": "as", - "position": { - "top": 916, - "bottom": 939, - "left": 488, - "right": 530 - } - }, - { - "doc_offset": { - "start": 570, - "end": 573 - }, - "page_num": 0, - "text": "SQL", - "position": { - "top": 907, - "bottom": 942, - "left": 554, - "right": 638 - } - }, - { - "doc_offset": { - "start": 574, - "end": 580 - }, - "page_num": 0, - "text": "UPSERT", - "position": { - "top": 910, - "bottom": 940, - "left": 676, - "right": 806 - } - }, - { - "doc_offset": { - "start": 581, - "end": 589 - }, - "page_num": 0, - "text": "queries,", - "position": { - "top": 908, - "bottom": 947, - "left": 845, - "right": 995 - } - }, - { - "doc_offset": { - "start": 590, - "end": 592 - }, - "page_num": 0, - "text": "an", - "position": { - "top": 916, - "bottom": 939, - "left": 1021, - "right": 1064 - } - }, - { - "doc_offset": { - "start": 593, - "end": 603 - }, - "page_num": 0, - "text": "importable", - "position": { - "top": 908, - "bottom": 947, - "left": 1091, - "right": 1296 - } - }, - { - "doc_offset": { - "start": 604, - "end": 607 - }, - "page_num": 0, - "text": "CSV", - "position": { - "top": 907, - "bottom": 940, - "left": 1320, - "right": 1405 - } - }, - { - "doc_offset": { - "start": 608, - "end": 613 - }, - "page_num": 0, - "text": "file,", - "position": { - "top": 907, - "bottom": 945, - "left": 1426, - "right": 1490 - } - }, - { - "doc_offset": { - "start": 614, - "end": 616 - }, - "page_num": 0, - "text": "or", - "position": { - "top": 916, - "bottom": 939, - "left": 1516, - "right": 1554 - } - }, - { - "doc_offset": { - "start": 617, - "end": 619 - }, - "page_num": 0, - "text": "an", - "position": { - "top": 916, - "bottom": 939, - "left": 1577, - "right": 1620 - } - }, - { - "doc_offset": { - "start": 620, - "end": 630 - }, - "page_num": 0, - "text": "importable", - "position": { - "top": 908, - "bottom": 947, - "left": 1647, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 631, - "end": 635 - }, - "page_num": 0, - "text": "JSON", - "position": { - "top": 968, - "bottom": 1001, - "left": 213, - "right": 325 - } - }, - { - "doc_offset": { - "start": 636, - "end": 641 - }, - "page_num": 0, - "text": "file.", - "position": { - "top": 969, - "bottom": 1001, - "left": 341, - "right": 404 - } - }, - { - "doc_offset": { - "start": 642, - "end": 650 - }, - "page_num": 0, - "text": "Contents", - "position": { - "top": 438, - "bottom": 466, - "left": 2067, - "right": 2251 - } - }, - { - "doc_offset": { - "start": 651, - "end": 652 - }, - "page_num": 0, - "text": "1", - "position": { - "top": 574, - "bottom": 595, - "left": 1983, - "right": 1998 - } - }, - { - "doc_offset": { - "start": 653, - "end": 661 - }, - "page_num": 0, - "text": "Entities", - "position": { - "top": 566, - "bottom": 595, - "left": 2019, - "right": 2167 - } - }, - { - "doc_offset": { - "start": 662, - "end": 665 - }, - "page_num": 0, - "text": "1.1", - "position": { - "top": 623, - "bottom": 644, - "left": 2009, - "right": 2048 - } - }, - { - "doc_offset": { - "start": 666, - "end": 674 - }, - "page_num": 0, - "text": "Workflow", - "position": { - "top": 615, - "bottom": 644, - "left": 2067, - "right": 2231 - } - }, - { - "doc_offset": { - "start": 675, - "end": 678 - }, - "page_num": 0, - "text": "1.2", - "position": { - "top": 672, - "bottom": 693, - "left": 2009, - "right": 2052 - } - }, - { - "doc_offset": { - "start": 679, - "end": 684 - }, - "page_num": 0, - "text": "Model", - "position": { - "top": 664, - "bottom": 693, - "left": 2073, - "right": 2176 - } - }, - { - "doc_offset": { - "start": 685, - "end": 688 - }, - "page_num": 0, - "text": "1.3", - "position": { - "top": 721, - "bottom": 748, - "left": 2009, - "right": 2052 - } - }, - { - "doc_offset": { - "start": 689, - "end": 699 - }, - "page_num": 0, - "text": "Submission", - "position": { - "top": 713, - "bottom": 742, - "left": 2073, - "right": 2264 - } - }, - { - "doc_offset": { - "start": 700, - "end": 703 - }, - "page_num": 0, - "text": "1.4", - "position": { - "top": 770, - "bottom": 797, - "left": 2009, - "right": 2053 - } - }, - { - "doc_offset": { - "start": 704, - "end": 714 - }, - "page_num": 0, - "text": "Submission", - "position": { - "top": 762, - "bottom": 791, - "left": 2074, - "right": 2265 - } - }, - { - "doc_offset": { - "start": 715, - "end": 719 - }, - "page_num": 0, - "text": "File", - "position": { - "top": 762, - "bottom": 791, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 720, - "end": 723 - }, - "page_num": 0, - "text": "1.5", - "position": { - "top": 819, - "bottom": 846, - "left": 2009, - "right": 2051 - } - }, - { - "doc_offset": { - "start": 724, - "end": 732 - }, - "page_num": 0, - "text": "Reviewer", - "position": { - "top": 812, - "bottom": 840, - "left": 2073, - "right": 2224 - } - }, - { - "doc_offset": { - "start": 733, - "end": 736 - }, - "page_num": 0, - "text": "1.6", - "position": { - "top": 862, - "bottom": 889, - "left": 2009, - "right": 2053 - } - }, - { - "doc_offset": { - "start": 737, - "end": 747 - }, - "page_num": 0, - "text": "Prediction", - "position": { - "top": 860, - "bottom": 889, - "left": 2074, - "right": 2244 - } - }, - { - "doc_offset": { - "start": 748, - "end": 752 - }, - "page_num": 0, - "text": "Once", - "position": { - "top": 1073, - "bottom": 1106, - "left": 214, - "right": 316 - } - }, - { - "doc_offset": { - "start": 753, - "end": 762 - }, - "page_num": 0, - "text": "imported,", - "position": { - "top": 1074, - "bottom": 1114, - "left": 333, - "right": 514 - } - }, - { - "doc_offset": { - "start": 763, - "end": 770 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 1074, - "bottom": 1106, - "left": 535, - "right": 675 - } - }, - { - "doc_offset": { - "start": 771, - "end": 774 - }, - "page_num": 0, - "text": "can", - "position": { - "top": 1082, - "bottom": 1106, - "left": 691, - "right": 758 - } - }, - { - "doc_offset": { - "start": 775, - "end": 781 - }, - "page_num": 0, - "text": "filter", - "position": { - "top": 1074, - "bottom": 1106, - "left": 775, - "right": 858 - } - }, - { - "doc_offset": { - "start": 782, - "end": 785 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 1074, - "bottom": 1106, - "left": 873, - "right": 942 - } - }, - { - "doc_offset": { - "start": 786, - "end": 795 - }, - "page_num": 0, - "text": "aggregate", - "position": { - "top": 1076, - "bottom": 1114, - "left": 960, - "right": 1154 - } - }, - { - "doc_offset": { - "start": 796, - "end": 799 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 1074, - "bottom": 1106, - "left": 1169, - "right": 1229 - } - }, - { - "doc_offset": { - "start": 800, - "end": 812 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 1074, - "bottom": 1106, - "left": 1247, - "right": 1486 - } - }, - { - "doc_offset": { - "start": 813, - "end": 817 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 1074, - "bottom": 1106, - "left": 1502, - "right": 1586 - } - }, - { - "doc_offset": { - "start": 818, - "end": 820 - }, - "page_num": 0, - "text": "as", - "position": { - "top": 1082, - "bottom": 1106, - "left": 1602, - "right": 1644 - } - }, - { - "doc_offset": { - "start": 821, - "end": 830 - }, - "page_num": 0, - "text": "described", - "position": { - "top": 1074, - "bottom": 1106, - "left": 1660, - "right": 1850 - } - }, - { - "doc_offset": { - "start": 831, - "end": 836 - }, - "page_num": 0, - "text": "below", - "position": { - "top": 1074, - "bottom": 1106, - "left": 1869, - "right": 1983 - } - }, - { - "doc_offset": { - "start": 837, - "end": 839 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 1076, - "bottom": 1106, - "left": 1997, - "right": 2034 - } - }, - { - "doc_offset": { - "start": 840, - "end": 847 - }, - "page_num": 0, - "text": "display", - "position": { - "top": 1074, - "bottom": 1114, - "left": 2051, - "right": 2187 - } - }, - { - "doc_offset": { - "start": 848, - "end": 855 - }, - "page_num": 0, - "text": "higher-", - "position": { - "top": 1074, - "bottom": 1114, - "left": 2204, - "right": 2335 - } - }, - { - "doc_offset": { - "start": 856, - "end": 861 - }, - "page_num": 0, - "text": "level", - "position": { - "top": 1135, - "bottom": 1167, - "left": 215, - "right": 297 - } - }, - { - "doc_offset": { - "start": 862, - "end": 866 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 1135, - "bottom": 1167, - "left": 314, - "right": 398 - } - }, - { - "doc_offset": { - "start": 867, - "end": 873 - }, - "page_num": 0, - "text": "points", - "position": { - "top": 1135, - "bottom": 1175, - "left": 414, - "right": 531 - } - }, - { - "doc_offset": { - "start": 874, - "end": 876 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 1137, - "bottom": 1167, - "left": 545, - "right": 582 - } - }, - { - "doc_offset": { - "start": 877, - "end": 884 - }, - "page_num": 0, - "text": "fulfill", - "position": { - "top": 1135, - "bottom": 1167, - "left": 596, - "right": 681 - } - }, - { - "doc_offset": { - "start": 885, - "end": 888 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 1135, - "bottom": 1167, - "left": 697, - "right": 757 - } - }, - { - "doc_offset": { - "start": 889, - "end": 898 - }, - "page_num": 0, - "text": "reporting", - "position": { - "top": 1135, - "bottom": 1175, - "left": 773, - "right": 943 - } - }, - { - "doc_offset": { - "start": 899, - "end": 911 - }, - "page_num": 0, - "text": "requirements", - "position": { - "top": 1135, - "bottom": 1175, - "left": 961, - "right": 1212 - } - }, - { - "doc_offset": { - "start": 912, - "end": 919 - }, - "page_num": 0, - "text": "defined", - "position": { - "top": 1135, - "bottom": 1167, - "left": 1228, - "right": 1369 - } - }, - { - "doc_offset": { - "start": 920, - "end": 930 - }, - "page_num": 0, - "text": "elsewhere.", - "position": { - "top": 1135, - "bottom": 1167, - "left": 1386, - "right": 1589 - } - }, - { - "doc_offset": { - "start": 931, - "end": 932 - }, - "page_num": 0, - "text": "1", - "position": { - "top": 1324, - "bottom": 1370, - "left": 220, - "right": 250 - } - }, - { - "doc_offset": { - "start": 933, - "end": 941 - }, - "page_num": 0, - "text": "Entities", - "position": { - "top": 1322, - "bottom": 1370, - "left": 315, - "right": 572 - } - }, - { - "doc_offset": { - "start": 942, - "end": 945 - }, - "page_num": 0, - "text": "1.1", - "position": { - "top": 1536, - "bottom": 1577, - "left": 219, - "right": 307 - } - }, - { - "doc_offset": { - "start": 946, - "end": 954 - }, - "page_num": 0, - "text": "Workflow", - "position": { - "top": 1534, - "bottom": 1578, - "left": 365, - "right": 666 - } - }, - { - "doc_offset": { - "start": 955, - "end": 961 - }, - "page_num": 0, - "text": "Column", - "position": { - "top": 1693, - "bottom": 1725, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 962, - "end": 966 - }, - "page_num": 0, - "text": "Type", - "position": { - "top": 1693, - "bottom": 1733, - "left": 873, - "right": 968 - } - }, - { - "doc_offset": { - "start": 967, - "end": 974 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 1693, - "bottom": 1733, - "left": 1328, - "right": 1514 - } - }, - { - "doc_offset": { - "start": 975, - "end": 981 - }, - "page_num": 0, - "text": "Source", - "position": { - "top": 1693, - "bottom": 1725, - "left": 1528, - "right": 1673 - } - }, - { - "doc_offset": { - "start": 982, - "end": 984 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 1794, - "bottom": 1826, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 985, - "end": 988 - }, - "page_num": 0, - "text": "int", - "position": { - "top": 1794, - "bottom": 1826, - "left": 876, - "right": 919 - } - }, - { - "doc_offset": { - "start": 989, - "end": 1000 - }, - "page_num": 0, - "text": "workflow.id", - "position": { - "top": 1794, - "bottom": 1824, - "left": 1342, - "right": 1584 - } - }, - { - "doc_offset": { - "start": 1001, - "end": 1005 - }, - "page_num": 0, - "text": "name", - "position": { - "top": 1895, - "bottom": 1918, - "left": 264, - "right": 369 - } - }, - { - "doc_offset": { - "start": 1006, - "end": 1009 - }, - "page_num": 0, - "text": "str", - "position": { - "top": 1889, - "bottom": 1918, - "left": 874, - "right": 923 - } - }, - { - "doc_offset": { - "start": 1010, - "end": 1023 - }, - "page_num": 0, - "text": "workflow.name", - "position": { - "top": 1886, - "bottom": 1917, - "left": 1342, - "right": 1629 - } - }, - { - "doc_offset": { - "start": 1024, - "end": 1031 - }, - "page_num": 0, - "text": "Example", - "position": { - "top": 2017, - "bottom": 2056, - "left": 215, - "right": 391 - } - }, - { - "doc_offset": { - "start": 1032, - "end": 1039 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 2016, - "bottom": 2056, - "left": 406, - "right": 591 - } - }, - { - "doc_offset": { - "start": 1040, - "end": 1045 - }, - "page_num": 0, - "text": "Query", - "position": { - "top": 2016, - "bottom": 2056, - "left": 606, - "right": 729 - } - }, - { - "doc_offset": { - "start": 1046, - "end": 1051 - }, - "page_num": 0, - "text": "query", - "position": { - "top": 2140, - "bottom": 2175, - "left": 244, - "right": 374 - } - }, - { - "doc_offset": { - "start": 1052, - "end": 1061 - }, - "page_num": 0, - "text": "Workflows", - "position": { - "top": 2129, - "bottom": 2165, - "left": 402, - "right": 639 - } - }, - { - "doc_offset": { - "start": 1062, - "end": 1063 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2129, - "bottom": 2173, - "left": 674, - "right": 693 - } - }, - { - "doc_offset": { - "start": 1064, - "end": 1073 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2191, - "bottom": 2228, - "left": 331, - "right": 568 - } - }, - { - "doc_offset": { - "start": 1074, - "end": 1075 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2191, - "bottom": 2235, - "left": 603, - "right": 622 - } - }, - { - "doc_offset": { - "start": 1076, - "end": 1085 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2254, - "bottom": 2290, - "left": 438, - "right": 675 - } - }, - { - "doc_offset": { - "start": 1086, - "end": 1087 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2254, - "bottom": 2298, - "left": 710, - "right": 729 - } - }, - { - "doc_offset": { - "start": 1088, - "end": 1090 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 2316, - "bottom": 2353, - "left": 548, - "right": 595 - } - }, - { - "doc_offset": { - "start": 1091, - "end": 1095 - }, - "page_num": 0, - "text": "name", - "position": { - "top": 2390, - "bottom": 2415, - "left": 548, - "right": 649 - } - }, - { - "doc_offset": { - "start": 1096, - "end": 1097 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2441, - "bottom": 2485, - "left": 440, - "right": 460 - } - }, - { - "doc_offset": { - "start": 1098, - "end": 1099 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2504, - "bottom": 2548, - "left": 333, - "right": 352 - } - }, - { - "doc_offset": { - "start": 1100, - "end": 1101 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2566, - "bottom": 2610, - "left": 226, - "right": 245 - } - }, - { - "doc_offset": { - "start": 1102, - "end": 1111 - }, - "page_num": 0, - "text": "Scheduled", - "position": { - "top": 2687, - "bottom": 2720, - "left": 213, - "right": 430 - } - }, - { - "doc_offset": { - "start": 1112, - "end": 1119 - }, - "page_num": 0, - "text": "Process", - "position": { - "top": 2688, - "bottom": 2720, - "left": 448, - "right": 613 - } - }, - { - "doc_offset": { - "start": 1120, - "end": 1125 - }, - "page_num": 0, - "text": "Logic", - "position": { - "top": 2688, - "bottom": 2728, - "left": 629, - "right": 741 - } - }, - { - "doc_offset": { - "start": 1126, - "end": 1130 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 2792, - "bottom": 2823, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 1131, - "end": 1133 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 2792, - "bottom": 2823, - "left": 308, - "right": 335 - } - }, - { - "doc_offset": { - "start": 1134, - "end": 1135 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 2800, - "bottom": 2823, - "left": 351, - "right": 372 - } - }, - { - "doc_offset": { - "start": 1136, - "end": 1147 - }, - "page_num": 0, - "text": "lightweight", - "position": { - "top": 2792, - "bottom": 2832, - "left": 388, - "right": 595 - } - }, - { - "doc_offset": { - "start": 1148, - "end": 1154 - }, - "page_num": 0, - "text": "query.", - "position": { - "top": 2800, - "bottom": 2832, - "left": 611, - "right": 724 - } - }, - { - "doc_offset": { - "start": 1155, - "end": 1158 - }, - "page_num": 0, - "text": "All", - "position": { - "top": 2792, - "bottom": 2823, - "left": 740, - "right": 785 - } - }, - { - "doc_offset": { - "start": 1159, - "end": 1168 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2791, - "bottom": 2823, - "left": 801, - "right": 997 - } - }, - { - "doc_offset": { - "start": 1169, - "end": 1173 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 2792, - "bottom": 2823, - "left": 1011, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 1174, - "end": 1176 - }, - "page_num": 0, - "text": "be", - "position": { - "top": 2792, - "bottom": 2823, - "left": 1088, - "right": 1134 - } - }, - { - "doc_offset": { - "start": 1177, - "end": 1183 - }, - "page_num": 0, - "text": "pulled", - "position": { - "top": 2792, - "bottom": 2832, - "left": 1150, - "right": 1263 - } - }, - { - "doc_offset": { - "start": 1184, - "end": 1189 - }, - "page_num": 0, - "text": "every", - "position": { - "top": 2800, - "bottom": 2832, - "left": 1280, - "right": 1383 - } - }, - { - "doc_offset": { - "start": 1190, - "end": 1194 - }, - "page_num": 0, - "text": "time", - "position": { - "top": 2792, - "bottom": 2823, - "left": 1396, - "right": 1479 - } - }, - { - "doc_offset": { - "start": 1195, - "end": 1198 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 2792, - "bottom": 2823, - "left": 1492, - "right": 1553 - } - }, - { - "doc_offset": { - "start": 1199, - "end": 1210 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 2792, - "bottom": 2832, - "left": 1569, - "right": 1770 - } - }, - { - "doc_offset": { - "start": 1211, - "end": 1213 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 2792, - "bottom": 2823, - "left": 1788, - "right": 1816 - } - }, - { - "doc_offset": { - "start": 1214, - "end": 1218 - }, - "page_num": 0, - "text": "run.", - "position": { - "top": 2800, - "bottom": 2823, - "left": 1832, - "right": 1901 - } - }, - { - "doc_offset": { - "start": 1219, - "end": 1223 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 2898, - "bottom": 2930, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 1224, - "end": 1238 - }, - "page_num": 0, - "text": "Reconciliation", - "position": { - "top": 2898, - "bottom": 2930, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 1239, - "end": 1242 - }, - "page_num": 0, - "text": "The", - "position": { - "top": 3002, - "bottom": 3033, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 1243, - "end": 1249 - }, - "page_num": 0, - "text": "output", - "position": { - "top": 3004, - "bottom": 3042, - "left": 304, - "right": 428 - } - }, - { - "doc_offset": { - "start": 1250, - "end": 1254 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 3002, - "bottom": 3033, - "left": 447, - "right": 506 - } - }, - { - "doc_offset": { - "start": 1255, - "end": 1262 - }, - "page_num": 0, - "text": "include", - "position": { - "top": 3002, - "bottom": 3033, - "left": 529, - "right": 666 - } - }, - { - "doc_offset": { - "start": 1263, - "end": 1266 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 3002, - "bottom": 3033, - "left": 685, - "right": 745 - } - }, - { - "doc_offset": { - "start": 1267, - "end": 1274 - }, - "page_num": 0, - "text": "primary", - "position": { - "top": 3002, - "bottom": 3042, - "left": 766, - "right": 910 - } - }, - { - "doc_offset": { - "start": 1275, - "end": 1278 - }, - "page_num": 0, - "text": "key", - "position": { - "top": 3002, - "bottom": 3042, - "left": 931, - "right": 995 - } - }, - { - "doc_offset": { - "start": 1279, - "end": 1281 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 3003, - "bottom": 3034, - "left": 1031, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 1282, - "end": 1288 - }, - "page_num": 0, - "text": "needed", - "position": { - "top": 3002, - "bottom": 3033, - "left": 1107, - "right": 1248 - } - }, - { - "doc_offset": { - "start": 1289, - "end": 1291 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 3004, - "bottom": 3033, - "left": 1269, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 1292, - "end": 1298 - }, - "page_num": 0, - "text": "update", - "position": { - "top": 3002, - "bottom": 3042, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 1299, - "end": 1307 - }, - "page_num": 0, - "text": "existing", - "position": { - "top": 3002, - "bottom": 3042, - "left": 1481, - "right": 1627 - } - }, - { - "doc_offset": { - "start": 1308, - "end": 1312 - }, - "page_num": 0, - "text": "rows", - "position": { - "top": 3010, - "bottom": 3033, - "left": 1650, - "right": 1740 - } - }, - { - "doc_offset": { - "start": 1313, - "end": 1316 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 3002, - "bottom": 3033, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 1317, - "end": 1323 - }, - "page_num": 0, - "text": "insert", - "position": { - "top": 3002, - "bottom": 3033, - "left": 1853, - "right": 1957 - } - }, - { - "doc_offset": { - "start": 1324, - "end": 1327 - }, - "page_num": 0, - "text": "new", - "position": { - "top": 3010, - "bottom": 3033, - "left": 1978, - "right": 2055 - } - }, - { - "doc_offset": { - "start": 1328, - "end": 1332 - }, - "page_num": 0, - "text": "rows", - "position": { - "top": 3010, - "bottom": 3033, - "left": 2076, - "right": 2166 - } - }, - { - "doc_offset": { - "start": 1333, - "end": 1337 - }, - "page_num": 0, - "text": "into", - "position": { - "top": 3002, - "bottom": 3033, - "left": 2188, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 1338, - "end": 1341 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 3002, - "bottom": 3033, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 1342, - "end": 1349 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 3063, - "bottom": 3095, - "left": 216, - "right": 356 - } - }, - { - "doc_offset": { - "start": 1350, - "end": 1359 - }, - "page_num": 0, - "text": "database.", - "position": { - "top": 3063, - "bottom": 3095, - "left": 371, - "right": 559 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_1_text.txt b/tests/data/etloutput/4288/107456/101155/page_1_text.txt deleted file mode 100644 index 9aa7a1f..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_1_text.txt +++ /dev/null @@ -1,29 +0,0 @@ -1.2 -Model -Column -Type -GraphQL Source -id -int -modelGroup.id -name -str -modelGroup.name -workflow_id -int -modelGroup.workflowId -Example GraphQL Query -query Models { -modelGroups(limit: 1000) { -modelGroups { -id -name -workflowId -} -} -} -Scheduled Process Logic -This is a lightweight query. All models will be pulled every time the integration is run. -Data Reconciliation -The output will include the primary key id needed to update existing rows and insert new rows into the -Metrics database. \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_1_tokens.json b/tests/data/etloutput/4288/107456/101155/page_1_tokens.json deleted file mode 100644 index 97f5151..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_1_tokens.json +++ /dev/null @@ -1,1038 +0,0 @@ -[ - { - "doc_offset": { - "start": 1360, - "end": 1363 - }, - "page_num": 1, - "text": "1.2", - "position": { - "top": 58, - "bottom": 100, - "left": 219, - "right": 309 - } - }, - { - "doc_offset": { - "start": 1364, - "end": 1369 - }, - "page_num": 1, - "text": "Model", - "position": { - "top": 57, - "bottom": 101, - "left": 368, - "right": 546 - } - }, - { - "doc_offset": { - "start": 1370, - "end": 1376 - }, - "page_num": 1, - "text": "Column", - "position": { - "top": 216, - "bottom": 248, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 1377, - "end": 1381 - }, - "page_num": 1, - "text": "Type", - "position": { - "top": 216, - "bottom": 255, - "left": 888, - "right": 983 - } - }, - { - "doc_offset": { - "start": 1382, - "end": 1389 - }, - "page_num": 1, - "text": "GraphQL", - "position": { - "top": 216, - "bottom": 255, - "left": 1253, - "right": 1438 - } - }, - { - "doc_offset": { - "start": 1390, - "end": 1396 - }, - "page_num": 1, - "text": "Source", - "position": { - "top": 216, - "bottom": 248, - "left": 1452, - "right": 1597 - } - }, - { - "doc_offset": { - "start": 1397, - "end": 1399 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 317, - "bottom": 349, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 1400, - "end": 1403 - }, - "page_num": 1, - "text": "int", - "position": { - "top": 317, - "bottom": 348, - "left": 891, - "right": 934 - } - }, - { - "doc_offset": { - "start": 1404, - "end": 1417 - }, - "page_num": 1, - "text": "modelGroup.id", - "position": { - "top": 317, - "bottom": 354, - "left": 1267, - "right": 1553 - } - }, - { - "doc_offset": { - "start": 1418, - "end": 1422 - }, - "page_num": 1, - "text": "name", - "position": { - "top": 418, - "bottom": 441, - "left": 264, - "right": 369 - } - }, - { - "doc_offset": { - "start": 1423, - "end": 1426 - }, - "page_num": 1, - "text": "str", - "position": { - "top": 412, - "bottom": 441, - "left": 889, - "right": 938 - } - }, - { - "doc_offset": { - "start": 1427, - "end": 1442 - }, - "page_num": 1, - "text": "modelGroup.name", - "position": { - "top": 410, - "bottom": 447, - "left": 1267, - "right": 1598 - } - }, - { - "doc_offset": { - "start": 1443, - "end": 1454 - }, - "page_num": 1, - "text": "workflow_id", - "position": { - "top": 502, - "bottom": 539, - "left": 262, - "right": 492 - } - }, - { - "doc_offset": { - "start": 1455, - "end": 1458 - }, - "page_num": 1, - "text": "int", - "position": { - "top": 502, - "bottom": 533, - "left": 891, - "right": 934 - } - }, - { - "doc_offset": { - "start": 1459, - "end": 1480 - }, - "page_num": 1, - "text": "modelGroup.workflowId", - "position": { - "top": 502, - "bottom": 539, - "left": 1267, - "right": 1731 - } - }, - { - "doc_offset": { - "start": 1481, - "end": 1488 - }, - "page_num": 1, - "text": "Example", - "position": { - "top": 632, - "bottom": 671, - "left": 215, - "right": 391 - } - }, - { - "doc_offset": { - "start": 1489, - "end": 1496 - }, - "page_num": 1, - "text": "GraphQL", - "position": { - "top": 631, - "bottom": 671, - "left": 406, - "right": 591 - } - }, - { - "doc_offset": { - "start": 1497, - "end": 1502 - }, - "page_num": 1, - "text": "Query", - "position": { - "top": 631, - "bottom": 671, - "left": 606, - "right": 729 - } - }, - { - "doc_offset": { - "start": 1503, - "end": 1508 - }, - "page_num": 1, - "text": "query", - "position": { - "top": 755, - "bottom": 790, - "left": 244, - "right": 374 - } - }, - { - "doc_offset": { - "start": 1509, - "end": 1515 - }, - "page_num": 1, - "text": "Models", - "position": { - "top": 745, - "bottom": 781, - "left": 403, - "right": 559 - } - }, - { - "doc_offset": { - "start": 1516, - "end": 1517 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 744, - "bottom": 788, - "left": 594, - "right": 613 - } - }, - { - "doc_offset": { - "start": 1518, - "end": 1536 - }, - "page_num": 1, - "text": "modelGroups(limit:", - "position": { - "top": 807, - "bottom": 852, - "left": 332, - "right": 802 - } - }, - { - "doc_offset": { - "start": 1537, - "end": 1542 - }, - "page_num": 1, - "text": "1000)", - "position": { - "top": 807, - "bottom": 851, - "left": 843, - "right": 969 - } - }, - { - "doc_offset": { - "start": 1543, - "end": 1544 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 807, - "bottom": 851, - "left": 1004, - "right": 1024 - } - }, - { - "doc_offset": { - "start": 1545, - "end": 1556 - }, - "page_num": 1, - "text": "modelGroups", - "position": { - "top": 870, - "bottom": 915, - "left": 439, - "right": 728 - } - }, - { - "doc_offset": { - "start": 1557, - "end": 1558 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 869, - "bottom": 913, - "left": 763, - "right": 783 - } - }, - { - "doc_offset": { - "start": 1559, - "end": 1561 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 932, - "bottom": 968, - "left": 548, - "right": 595 - } - }, - { - "doc_offset": { - "start": 1562, - "end": 1566 - }, - "page_num": 1, - "text": "name", - "position": { - "top": 1005, - "bottom": 1031, - "left": 548, - "right": 649 - } - }, - { - "doc_offset": { - "start": 1567, - "end": 1577 - }, - "page_num": 1, - "text": "workflowId", - "position": { - "top": 1057, - "bottom": 1093, - "left": 545, - "right": 809 - } - }, - { - "doc_offset": { - "start": 1578, - "end": 1579 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1119, - "bottom": 1163, - "left": 440, - "right": 460 - } - }, - { - "doc_offset": { - "start": 1580, - "end": 1581 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1182, - "bottom": 1226, - "left": 333, - "right": 352 - } - }, - { - "doc_offset": { - "start": 1582, - "end": 1583 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1244, - "bottom": 1288, - "left": 226, - "right": 245 - } - }, - { - "doc_offset": { - "start": 1584, - "end": 1593 - }, - "page_num": 1, - "text": "Scheduled", - "position": { - "top": 1365, - "bottom": 1398, - "left": 213, - "right": 430 - } - }, - { - "doc_offset": { - "start": 1594, - "end": 1601 - }, - "page_num": 1, - "text": "Process", - "position": { - "top": 1366, - "bottom": 1398, - "left": 448, - "right": 613 - } - }, - { - "doc_offset": { - "start": 1602, - "end": 1607 - }, - "page_num": 1, - "text": "Logic", - "position": { - "top": 1366, - "bottom": 1405, - "left": 629, - "right": 741 - } - }, - { - "doc_offset": { - "start": 1608, - "end": 1612 - }, - "page_num": 1, - "text": "This", - "position": { - "top": 1470, - "bottom": 1501, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 1613, - "end": 1615 - }, - "page_num": 1, - "text": "is", - "position": { - "top": 1470, - "bottom": 1501, - "left": 308, - "right": 335 - } - }, - { - "doc_offset": { - "start": 1616, - "end": 1617 - }, - "page_num": 1, - "text": "a", - "position": { - "top": 1478, - "bottom": 1501, - "left": 351, - "right": 372 - } - }, - { - "doc_offset": { - "start": 1618, - "end": 1629 - }, - "page_num": 1, - "text": "lightweight", - "position": { - "top": 1470, - "bottom": 1510, - "left": 388, - "right": 595 - } - }, - { - "doc_offset": { - "start": 1630, - "end": 1636 - }, - "page_num": 1, - "text": "query.", - "position": { - "top": 1478, - "bottom": 1510, - "left": 611, - "right": 724 - } - }, - { - "doc_offset": { - "start": 1637, - "end": 1640 - }, - "page_num": 1, - "text": "All", - "position": { - "top": 1470, - "bottom": 1501, - "left": 740, - "right": 785 - } - }, - { - "doc_offset": { - "start": 1641, - "end": 1647 - }, - "page_num": 1, - "text": "models", - "position": { - "top": 1470, - "bottom": 1501, - "left": 803, - "right": 942 - } - }, - { - "doc_offset": { - "start": 1648, - "end": 1652 - }, - "page_num": 1, - "text": "will", - "position": { - "top": 1470, - "bottom": 1501, - "left": 957, - "right": 1015 - } - }, - { - "doc_offset": { - "start": 1653, - "end": 1655 - }, - "page_num": 1, - "text": "be", - "position": { - "top": 1470, - "bottom": 1501, - "left": 1033, - "right": 1079 - } - }, - { - "doc_offset": { - "start": 1656, - "end": 1662 - }, - "page_num": 1, - "text": "pulled", - "position": { - "top": 1470, - "bottom": 1510, - "left": 1095, - "right": 1208 - } - }, - { - "doc_offset": { - "start": 1663, - "end": 1668 - }, - "page_num": 1, - "text": "every", - "position": { - "top": 1478, - "bottom": 1510, - "left": 1225, - "right": 1328 - } - }, - { - "doc_offset": { - "start": 1669, - "end": 1673 - }, - "page_num": 1, - "text": "time", - "position": { - "top": 1470, - "bottom": 1501, - "left": 1341, - "right": 1424 - } - }, - { - "doc_offset": { - "start": 1674, - "end": 1677 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1470, - "bottom": 1501, - "left": 1438, - "right": 1498 - } - }, - { - "doc_offset": { - "start": 1678, - "end": 1689 - }, - "page_num": 1, - "text": "integration", - "position": { - "top": 1470, - "bottom": 1510, - "left": 1514, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 1690, - "end": 1692 - }, - "page_num": 1, - "text": "is", - "position": { - "top": 1470, - "bottom": 1501, - "left": 1734, - "right": 1761 - } - }, - { - "doc_offset": { - "start": 1693, - "end": 1697 - }, - "page_num": 1, - "text": "run.", - "position": { - "top": 1478, - "bottom": 1501, - "left": 1777, - "right": 1846 - } - }, - { - "doc_offset": { - "start": 1698, - "end": 1702 - }, - "page_num": 1, - "text": "Data", - "position": { - "top": 1576, - "bottom": 1608, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 1703, - "end": 1717 - }, - "page_num": 1, - "text": "Reconciliation", - "position": { - "top": 1576, - "bottom": 1608, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 1718, - "end": 1721 - }, - "page_num": 1, - "text": "The", - "position": { - "top": 1680, - "bottom": 1711, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 1722, - "end": 1728 - }, - "page_num": 1, - "text": "output", - "position": { - "top": 1682, - "bottom": 1720, - "left": 304, - "right": 428 - } - }, - { - "doc_offset": { - "start": 1729, - "end": 1733 - }, - "page_num": 1, - "text": "will", - "position": { - "top": 1680, - "bottom": 1711, - "left": 447, - "right": 506 - } - }, - { - "doc_offset": { - "start": 1734, - "end": 1741 - }, - "page_num": 1, - "text": "include", - "position": { - "top": 1680, - "bottom": 1711, - "left": 529, - "right": 666 - } - }, - { - "doc_offset": { - "start": 1742, - "end": 1745 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1680, - "bottom": 1711, - "left": 685, - "right": 745 - } - }, - { - "doc_offset": { - "start": 1746, - "end": 1753 - }, - "page_num": 1, - "text": "primary", - "position": { - "top": 1680, - "bottom": 1720, - "left": 766, - "right": 910 - } - }, - { - "doc_offset": { - "start": 1754, - "end": 1757 - }, - "page_num": 1, - "text": "key", - "position": { - "top": 1680, - "bottom": 1720, - "left": 931, - "right": 995 - } - }, - { - "doc_offset": { - "start": 1758, - "end": 1760 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 1681, - "bottom": 1711, - "left": 1031, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 1761, - "end": 1767 - }, - "page_num": 1, - "text": "needed", - "position": { - "top": 1680, - "bottom": 1711, - "left": 1107, - "right": 1248 - } - }, - { - "doc_offset": { - "start": 1768, - "end": 1770 - }, - "page_num": 1, - "text": "to", - "position": { - "top": 1682, - "bottom": 1711, - "left": 1269, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 1771, - "end": 1777 - }, - "page_num": 1, - "text": "update", - "position": { - "top": 1680, - "bottom": 1720, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 1778, - "end": 1786 - }, - "page_num": 1, - "text": "existing", - "position": { - "top": 1680, - "bottom": 1720, - "left": 1481, - "right": 1627 - } - }, - { - "doc_offset": { - "start": 1787, - "end": 1791 - }, - "page_num": 1, - "text": "rows", - "position": { - "top": 1688, - "bottom": 1711, - "left": 1650, - "right": 1740 - } - }, - { - "doc_offset": { - "start": 1792, - "end": 1795 - }, - "page_num": 1, - "text": "and", - "position": { - "top": 1680, - "bottom": 1711, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 1796, - "end": 1802 - }, - "page_num": 1, - "text": "insert", - "position": { - "top": 1680, - "bottom": 1711, - "left": 1853, - "right": 1957 - } - }, - { - "doc_offset": { - "start": 1803, - "end": 1806 - }, - "page_num": 1, - "text": "new", - "position": { - "top": 1688, - "bottom": 1711, - "left": 1978, - "right": 2055 - } - }, - { - "doc_offset": { - "start": 1807, - "end": 1811 - }, - "page_num": 1, - "text": "rows", - "position": { - "top": 1688, - "bottom": 1711, - "left": 2076, - "right": 2166 - } - }, - { - "doc_offset": { - "start": 1812, - "end": 1816 - }, - "page_num": 1, - "text": "into", - "position": { - "top": 1680, - "bottom": 1711, - "left": 2188, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 1817, - "end": 1820 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1680, - "bottom": 1711, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 1821, - "end": 1828 - }, - "page_num": 1, - "text": "Metrics", - "position": { - "top": 1741, - "bottom": 1773, - "left": 216, - "right": 356 - } - }, - { - "doc_offset": { - "start": 1829, - "end": 1838 - }, - "page_num": 1, - "text": "database.", - "position": { - "top": 1741, - "bottom": 1773, - "left": 371, - "right": 559 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_2_text.txt b/tests/data/etloutput/4288/107456/101155/page_2_text.txt deleted file mode 100644 index 885c75d..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_2_text.txt +++ /dev/null @@ -1,54 +0,0 @@ -1.3 -Submission -Column -Type -GraphQL Source -id -created_at -datetime -submission.createdAt -processed_at -datetime -reviewer_id -int -review_started_at -datetime -submission.review.startedAt 2 -review_completed_at -datetime -rejected -bool -rejection_reason -str -completed_at -datetime -retrieved_at -datetime -failed -bool -status -enum -workflow_id -int -submission.id -int -submission.review.completedAt 1 -submission.review.createdBy 2 -submission.review.completedAt 2 -submission.review.rejected 2 -submission.review.notes 2 -submission.completedAt -submission.updatedAt 3 -submission.status 4 -submission.status -submission.workflowId -1 The timestamp for submission processing being completed is not directly available on the submission object. -Instead it's approximated by the completion time of Auto Review in the reviews list -(where reviewType == “AUTO”). -2 The HITL review data points must come from the Manual Review in the reviews list -(where reviewType == “MANUAL”). -3 The time of retrieval is not directly available on the submission object. Instead it's approximated by the last -update time of the submission once the retrieved flag is set. -4 The failure status is not directly available on the submission object as a boolean. Instead it's derived using the -status -of the submission (where status == “FAILED”). \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_2_tokens.json b/tests/data/etloutput/4288/107456/101155/page_2_tokens.json deleted file mode 100644 index 65f7100..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_2_tokens.json +++ /dev/null @@ -1,2312 +0,0 @@ -[ - { - "doc_offset": { - "start": 1839, - "end": 1842 - }, - "page_num": 2, - "text": "1.3", - "position": { - "top": 141, - "bottom": 183, - "left": 219, - "right": 308 - } - }, - { - "doc_offset": { - "start": 1843, - "end": 1853 - }, - "page_num": 2, - "text": "Submission", - "position": { - "top": 140, - "bottom": 184, - "left": 366, - "right": 721 - } - }, - { - "doc_offset": { - "start": 1854, - "end": 1860 - }, - "page_num": 2, - "text": "Column", - "position": { - "top": 298, - "bottom": 331, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 1861, - "end": 1865 - }, - "page_num": 2, - "text": "Type", - "position": { - "top": 299, - "bottom": 338, - "left": 951, - "right": 1046 - } - }, - { - "doc_offset": { - "start": 1866, - "end": 1873 - }, - "page_num": 2, - "text": "GraphQL", - "position": { - "top": 298, - "bottom": 338, - "left": 1312, - "right": 1497 - } - }, - { - "doc_offset": { - "start": 1874, - "end": 1880 - }, - "page_num": 2, - "text": "Source", - "position": { - "top": 298, - "bottom": 331, - "left": 1511, - "right": 1656 - } - }, - { - "doc_offset": { - "start": 1881, - "end": 1883 - }, - "page_num": 2, - "text": "id", - "position": { - "top": 400, - "bottom": 432, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 1884, - "end": 1894 - }, - "page_num": 2, - "text": "created_at", - "position": { - "top": 492, - "bottom": 529, - "left": 263, - "right": 466 - } - }, - { - "doc_offset": { - "start": 1895, - "end": 1903 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 492, - "bottom": 524, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 1904, - "end": 1924 - }, - "page_num": 2, - "text": "submission.createdAt", - "position": { - "top": 492, - "bottom": 522, - "left": 1328, - "right": 1768 - } - }, - { - "doc_offset": { - "start": 1925, - "end": 1937 - }, - "page_num": 2, - "text": "processed_at", - "position": { - "top": 590, - "bottom": 630, - "left": 264, - "right": 524 - } - }, - { - "doc_offset": { - "start": 1938, - "end": 1946 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 590, - "bottom": 622, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 1947, - "end": 1958 - }, - "page_num": 2, - "text": "reviewer_id", - "position": { - "top": 693, - "bottom": 730, - "left": 264, - "right": 479 - } - }, - { - "doc_offset": { - "start": 1959, - "end": 1962 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 693, - "bottom": 724, - "left": 954, - "right": 997 - } - }, - { - "doc_offset": { - "start": 1963, - "end": 1980 - }, - "page_num": 2, - "text": "review_started_at", - "position": { - "top": 796, - "bottom": 832, - "left": 264, - "right": 603 - } - }, - { - "doc_offset": { - "start": 1981, - "end": 1989 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 796, - "bottom": 827, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 1990, - "end": 2017 - }, - "page_num": 2, - "text": "submission.review.startedAt", - "position": { - "top": 805, - "bottom": 835, - "left": 1328, - "right": 1924 - } - }, - { - "doc_offset": { - "start": 2018, - "end": 2019 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 800, - "bottom": 820, - "left": 1944, - "right": 1960 - } - }, - { - "doc_offset": { - "start": 2020, - "end": 2039 - }, - "page_num": 2, - "text": "review_completed_at", - "position": { - "top": 899, - "bottom": 938, - "left": 264, - "right": 674 - } - }, - { - "doc_offset": { - "start": 2040, - "end": 2048 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 899, - "bottom": 930, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 2049, - "end": 2057 - }, - "page_num": 2, - "text": "rejected", - "position": { - "top": 1001, - "bottom": 1041, - "left": 264, - "right": 415 - } - }, - { - "doc_offset": { - "start": 2058, - "end": 2062 - }, - "page_num": 2, - "text": "bool", - "position": { - "top": 1001, - "bottom": 1033, - "left": 954, - "right": 1034 - } - }, - { - "doc_offset": { - "start": 2063, - "end": 2079 - }, - "page_num": 2, - "text": "rejection_reason", - "position": { - "top": 1104, - "bottom": 1144, - "left": 264, - "right": 579 - } - }, - { - "doc_offset": { - "start": 2080, - "end": 2083 - }, - "page_num": 2, - "text": "str", - "position": { - "top": 1106, - "bottom": 1136, - "left": 952, - "right": 1001 - } - }, - { - "doc_offset": { - "start": 2084, - "end": 2096 - }, - "page_num": 2, - "text": "completed_at", - "position": { - "top": 1202, - "bottom": 1242, - "left": 263, - "right": 527 - } - }, - { - "doc_offset": { - "start": 2097, - "end": 2105 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 1202, - "bottom": 1233, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 2106, - "end": 2118 - }, - "page_num": 2, - "text": "retrieved_at", - "position": { - "top": 1299, - "bottom": 1336, - "left": 264, - "right": 489 - } - }, - { - "doc_offset": { - "start": 2119, - "end": 2127 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 1299, - "bottom": 1331, - "left": 952, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 2128, - "end": 2134 - }, - "page_num": 2, - "text": "failed", - "position": { - "top": 1402, - "bottom": 1434, - "left": 261, - "right": 363 - } - }, - { - "doc_offset": { - "start": 2135, - "end": 2139 - }, - "page_num": 2, - "text": "bool", - "position": { - "top": 1402, - "bottom": 1434, - "left": 954, - "right": 1034 - } - }, - { - "doc_offset": { - "start": 2140, - "end": 2146 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 1502, - "bottom": 1532, - "left": 262, - "right": 379 - } - }, - { - "doc_offset": { - "start": 2147, - "end": 2151 - }, - "page_num": 2, - "text": "enum", - "position": { - "top": 1508, - "bottom": 1532, - "left": 952, - "right": 1058 - } - }, - { - "doc_offset": { - "start": 2152, - "end": 2163 - }, - "page_num": 2, - "text": "workflow_id", - "position": { - "top": 1592, - "bottom": 1629, - "left": 262, - "right": 492 - } - }, - { - "doc_offset": { - "start": 2164, - "end": 2167 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 400, - "bottom": 431, - "left": 954, - "right": 997 - } - }, - { - "doc_offset": { - "start": 2168, - "end": 2181 - }, - "page_num": 2, - "text": "submission.id", - "position": { - "top": 399, - "bottom": 430, - "left": 1328, - "right": 1612 - } - }, - { - "doc_offset": { - "start": 2182, - "end": 2185 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 1592, - "bottom": 1624, - "left": 954, - "right": 997 - } - }, - { - "doc_offset": { - "start": 2186, - "end": 2215 - }, - "page_num": 2, - "text": "submission.review.completedAt", - "position": { - "top": 599, - "bottom": 637, - "left": 1328, - "right": 1969 - } - }, - { - "doc_offset": { - "start": 2216, - "end": 2217 - }, - "page_num": 2, - "text": "1", - "position": { - "top": 594, - "bottom": 614, - "left": 1988, - "right": 2001 - } - }, - { - "doc_offset": { - "start": 2218, - "end": 2245 - }, - "page_num": 2, - "text": "submission.review.createdBy", - "position": { - "top": 702, - "bottom": 740, - "left": 1328, - "right": 1926 - } - }, - { - "doc_offset": { - "start": 2246, - "end": 2247 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 697, - "bottom": 717, - "left": 1944, - "right": 1960 - } - }, - { - "doc_offset": { - "start": 2248, - "end": 2277 - }, - "page_num": 2, - "text": "submission.review.completedAt", - "position": { - "top": 908, - "bottom": 945, - "left": 1328, - "right": 1969 - } - }, - { - "doc_offset": { - "start": 2278, - "end": 2279 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 903, - "bottom": 923, - "left": 1988, - "right": 2005 - } - }, - { - "doc_offset": { - "start": 2280, - "end": 2306 - }, - "page_num": 2, - "text": "submission.review.rejected", - "position": { - "top": 1010, - "bottom": 1049, - "left": 1328, - "right": 1902 - } - }, - { - "doc_offset": { - "start": 2307, - "end": 2308 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 1006, - "bottom": 1025, - "left": 1921, - "right": 1938 - } - }, - { - "doc_offset": { - "start": 2309, - "end": 2332 - }, - "page_num": 2, - "text": "submission.review.notes", - "position": { - "top": 1113, - "bottom": 1144, - "left": 1328, - "right": 1835 - } - }, - { - "doc_offset": { - "start": 2333, - "end": 2334 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 1108, - "bottom": 1128, - "left": 1854, - "right": 1871 - } - }, - { - "doc_offset": { - "start": 2335, - "end": 2357 - }, - "page_num": 2, - "text": "submission.completedAt", - "position": { - "top": 1201, - "bottom": 1239, - "left": 1328, - "right": 1813 - } - }, - { - "doc_offset": { - "start": 2358, - "end": 2378 - }, - "page_num": 2, - "text": "submission.updatedAt", - "position": { - "top": 1308, - "bottom": 1346, - "left": 1328, - "right": 1768 - } - }, - { - "doc_offset": { - "start": 2379, - "end": 2380 - }, - "page_num": 2, - "text": "3", - "position": { - "top": 1304, - "bottom": 1330, - "left": 1787, - "right": 1804 - } - }, - { - "doc_offset": { - "start": 2381, - "end": 2398 - }, - "page_num": 2, - "text": "submission.status", - "position": { - "top": 1411, - "bottom": 1442, - "left": 1328, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 2399, - "end": 2400 - }, - "page_num": 2, - "text": "4", - "position": { - "top": 1407, - "bottom": 1433, - "left": 1719, - "right": 1738 - } - }, - { - "doc_offset": { - "start": 2401, - "end": 2418 - }, - "page_num": 2, - "text": "submission.status", - "position": { - "top": 1499, - "bottom": 1530, - "left": 1328, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 2419, - "end": 2440 - }, - "page_num": 2, - "text": "submission.workflowId", - "position": { - "top": 1592, - "bottom": 1622, - "left": 1328, - "right": 1790 - } - }, - { - "doc_offset": { - "start": 2441, - "end": 2442 - }, - "page_num": 2, - "text": "1", - "position": { - "top": 1718, - "bottom": 1742, - "left": 215, - "right": 224 - } - }, - { - "doc_offset": { - "start": 2443, - "end": 2446 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 1727, - "bottom": 1757, - "left": 248, - "right": 315 - } - }, - { - "doc_offset": { - "start": 2447, - "end": 2456 - }, - "page_num": 2, - "text": "timestamp", - "position": { - "top": 1727, - "bottom": 1764, - "left": 333, - "right": 523 - } - }, - { - "doc_offset": { - "start": 2457, - "end": 2460 - }, - "page_num": 2, - "text": "for", - "position": { - "top": 1727, - "bottom": 1757, - "left": 542, - "right": 590 - } - }, - { - "doc_offset": { - "start": 2461, - "end": 2471 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 1727, - "bottom": 1757, - "left": 608, - "right": 811 - } - }, - { - "doc_offset": { - "start": 2472, - "end": 2482 - }, - "page_num": 2, - "text": "processing", - "position": { - "top": 1727, - "bottom": 1765, - "left": 833, - "right": 1027 - } - }, - { - "doc_offset": { - "start": 2483, - "end": 2488 - }, - "page_num": 2, - "text": "being", - "position": { - "top": 1727, - "bottom": 1765, - "left": 1049, - "right": 1145 - } - }, - { - "doc_offset": { - "start": 2489, - "end": 2498 - }, - "page_num": 2, - "text": "completed", - "position": { - "top": 1727, - "bottom": 1764, - "left": 1166, - "right": 1355 - } - }, - { - "doc_offset": { - "start": 2499, - "end": 2501 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 1727, - "bottom": 1757, - "left": 1378, - "right": 1403 - } - }, - { - "doc_offset": { - "start": 2502, - "end": 2505 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 1729, - "bottom": 1757, - "left": 1424, - "right": 1479 - } - }, - { - "doc_offset": { - "start": 2506, - "end": 2514 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 1727, - "bottom": 1764, - "left": 1498, - "right": 1628 - } - }, - { - "doc_offset": { - "start": 2515, - "end": 2524 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 1727, - "bottom": 1757, - "left": 1647, - "right": 1803 - } - }, - { - "doc_offset": { - "start": 2525, - "end": 2527 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 1735, - "bottom": 1757, - "left": 1823, - "right": 1864 - } - }, - { - "doc_offset": { - "start": 2528, - "end": 2531 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1727, - "bottom": 1757, - "left": 1884, - "right": 1940 - } - }, - { - "doc_offset": { - "start": 2532, - "end": 2542 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 1728, - "bottom": 1757, - "left": 1975, - "right": 2177 - } - }, - { - "doc_offset": { - "start": 2543, - "end": 2550 - }, - "page_num": 2, - "text": "object.", - "position": { - "top": 1727, - "bottom": 1764, - "left": 2214, - "right": 2334 - } - }, - { - "doc_offset": { - "start": 2551, - "end": 2558 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 1777, - "bottom": 1806, - "left": 247, - "right": 375 - } - }, - { - "doc_offset": { - "start": 2559, - "end": 2563 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 1777, - "bottom": 1806, - "left": 391, - "right": 441 - } - }, - { - "doc_offset": { - "start": 2564, - "end": 2576 - }, - "page_num": 2, - "text": "approximated", - "position": { - "top": 1777, - "bottom": 1814, - "left": 455, - "right": 702 - } - }, - { - "doc_offset": { - "start": 2577, - "end": 2579 - }, - "page_num": 2, - "text": "by", - "position": { - "top": 1777, - "bottom": 1814, - "left": 719, - "right": 760 - } - }, - { - "doc_offset": { - "start": 2580, - "end": 2583 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1777, - "bottom": 1806, - "left": 772, - "right": 828 - } - }, - { - "doc_offset": { - "start": 2584, - "end": 2594 - }, - "page_num": 2, - "text": "completion", - "position": { - "top": 1777, - "bottom": 1814, - "left": 842, - "right": 1040 - } - }, - { - "doc_offset": { - "start": 2595, - "end": 2599 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1055, - "right": 1132 - } - }, - { - "doc_offset": { - "start": 2600, - "end": 2602 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 1776, - "bottom": 1806, - "left": 1145, - "right": 1179 - } - }, - { - "doc_offset": { - "start": 2603, - "end": 2607 - }, - "page_num": 2, - "text": "Auto", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1190, - "right": 1274 - } - }, - { - "doc_offset": { - "start": 2608, - "end": 2614 - }, - "page_num": 2, - "text": "Review", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1290, - "right": 1418 - } - }, - { - "doc_offset": { - "start": 2615, - "end": 2617 - }, - "page_num": 2, - "text": "in", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1432, - "right": 1459 - } - }, - { - "doc_offset": { - "start": 2618, - "end": 2621 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1473, - "right": 1529 - } - }, - { - "doc_offset": { - "start": 2622, - "end": 2629 - }, - "page_num": 2, - "text": "reviews", - "position": { - "top": 1778, - "bottom": 1806, - "left": 1559, - "right": 1697 - } - }, - { - "doc_offset": { - "start": 2630, - "end": 2634 - }, - "page_num": 2, - "text": "list", - "position": { - "top": 1777, - "bottom": 1806, - "left": 1728, - "right": 1775 - } - }, - { - "doc_offset": { - "start": 2635, - "end": 2641 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 1826, - "bottom": 1863, - "left": 245, - "right": 363 - } - }, - { - "doc_offset": { - "start": 2642, - "end": 2652 - }, - "page_num": 2, - "text": "reviewType", - "position": { - "top": 1828, - "bottom": 1863, - "left": 393, - "right": 594 - } - }, - { - "doc_offset": { - "start": 2653, - "end": 2655 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 1840, - "bottom": 1851, - "left": 623, - "right": 668 - } - }, - { - "doc_offset": { - "start": 2656, - "end": 2664 - }, - "page_num": 2, - "text": "\u201cAUTO\u201d).", - "position": { - "top": 1826, - "bottom": 1863, - "left": 684, - "right": 844 - } - }, - { - "doc_offset": { - "start": 2665, - "end": 2666 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 1923, - "bottom": 1947, - "left": 213, - "right": 229 - } - }, - { - "doc_offset": { - "start": 2667, - "end": 2670 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 1932, - "bottom": 1961, - "left": 242, - "right": 309 - } - }, - { - "doc_offset": { - "start": 2671, - "end": 2675 - }, - "page_num": 2, - "text": "HITL", - "position": { - "top": 1932, - "bottom": 1961, - "left": 324, - "right": 407 - } - }, - { - "doc_offset": { - "start": 2676, - "end": 2682 - }, - "page_num": 2, - "text": "review", - "position": { - "top": 1932, - "bottom": 1961, - "left": 421, - "right": 534 - } - }, - { - "doc_offset": { - "start": 2683, - "end": 2687 - }, - "page_num": 2, - "text": "data", - "position": { - "top": 1932, - "bottom": 1961, - "left": 548, - "right": 626 - } - }, - { - "doc_offset": { - "start": 2688, - "end": 2694 - }, - "page_num": 2, - "text": "points", - "position": { - "top": 1932, - "bottom": 1969, - "left": 641, - "right": 749 - } - }, - { - "doc_offset": { - "start": 2695, - "end": 2699 - }, - "page_num": 2, - "text": "must", - "position": { - "top": 1933, - "bottom": 1961, - "left": 764, - "right": 851 - } - }, - { - "doc_offset": { - "start": 2700, - "end": 2704 - }, - "page_num": 2, - "text": "come", - "position": { - "top": 1939, - "bottom": 1961, - "left": 865, - "right": 964 - } - }, - { - "doc_offset": { - "start": 2705, - "end": 2709 - }, - "page_num": 2, - "text": "from", - "position": { - "top": 1931, - "bottom": 1961, - "left": 977, - "right": 1056 - } - }, - { - "doc_offset": { - "start": 2710, - "end": 2713 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1071, - "right": 1127 - } - }, - { - "doc_offset": { - "start": 2714, - "end": 2720 - }, - "page_num": 2, - "text": "Manual", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1142, - "right": 1269 - } - }, - { - "doc_offset": { - "start": 2721, - "end": 2727 - }, - "page_num": 2, - "text": "Review", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1286, - "right": 1414 - } - }, - { - "doc_offset": { - "start": 2728, - "end": 2730 - }, - "page_num": 2, - "text": "in", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1429, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 2731, - "end": 2734 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1469, - "right": 1525 - } - }, - { - "doc_offset": { - "start": 2735, - "end": 2742 - }, - "page_num": 2, - "text": "reviews", - "position": { - "top": 1933, - "bottom": 1961, - "left": 1556, - "right": 1694 - } - }, - { - "doc_offset": { - "start": 2743, - "end": 2747 - }, - "page_num": 2, - "text": "list", - "position": { - "top": 1932, - "bottom": 1961, - "left": 1724, - "right": 1772 - } - }, - { - "doc_offset": { - "start": 2748, - "end": 2754 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 1981, - "bottom": 2018, - "left": 245, - "right": 363 - } - }, - { - "doc_offset": { - "start": 2755, - "end": 2765 - }, - "page_num": 2, - "text": "reviewType", - "position": { - "top": 1983, - "bottom": 2018, - "left": 393, - "right": 594 - } - }, - { - "doc_offset": { - "start": 2766, - "end": 2768 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 1995, - "bottom": 2006, - "left": 623, - "right": 668 - } - }, - { - "doc_offset": { - "start": 2769, - "end": 2779 - }, - "page_num": 2, - "text": "\u201cMANUAL\u201d).", - "position": { - "top": 1981, - "bottom": 2018, - "left": 684, - "right": 903 - } - }, - { - "doc_offset": { - "start": 2780, - "end": 2781 - }, - "page_num": 2, - "text": "3", - "position": { - "top": 2078, - "bottom": 2102, - "left": 213, - "right": 229 - } - }, - { - "doc_offset": { - "start": 2782, - "end": 2785 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 2086, - "bottom": 2116, - "left": 249, - "right": 316 - } - }, - { - "doc_offset": { - "start": 2786, - "end": 2790 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 2086, - "bottom": 2116, - "left": 336, - "right": 413 - } - }, - { - "doc_offset": { - "start": 2791, - "end": 2793 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2086, - "bottom": 2116, - "left": 434, - "right": 468 - } - }, - { - "doc_offset": { - "start": 2794, - "end": 2803 - }, - "page_num": 2, - "text": "retrieval", - "position": { - "top": 2086, - "bottom": 2116, - "left": 489, - "right": 626 - } - }, - { - "doc_offset": { - "start": 2804, - "end": 2806 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2086, - "bottom": 2116, - "left": 650, - "right": 676 - } - }, - { - "doc_offset": { - "start": 2807, - "end": 2810 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 2088, - "bottom": 2116, - "left": 698, - "right": 753 - } - }, - { - "doc_offset": { - "start": 2811, - "end": 2819 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 2086, - "bottom": 2124, - "left": 774, - "right": 904 - } - }, - { - "doc_offset": { - "start": 2820, - "end": 2829 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 2086, - "bottom": 2116, - "left": 924, - "right": 1081 - } - }, - { - "doc_offset": { - "start": 2830, - "end": 2832 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 2094, - "bottom": 2116, - "left": 1102, - "right": 1143 - } - }, - { - "doc_offset": { - "start": 2833, - "end": 2836 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2086, - "bottom": 2116, - "left": 1165, - "right": 1221 - } - }, - { - "doc_offset": { - "start": 2837, - "end": 2847 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2088, - "bottom": 2116, - "left": 1257, - "right": 1459 - } - }, - { - "doc_offset": { - "start": 2848, - "end": 2855 - }, - "page_num": 2, - "text": "object.", - "position": { - "top": 2086, - "bottom": 2123, - "left": 1496, - "right": 1615 - } - }, - { - "doc_offset": { - "start": 2856, - "end": 2863 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 2086, - "bottom": 2116, - "left": 1641, - "right": 1769 - } - }, - { - "doc_offset": { - "start": 2864, - "end": 2868 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 2086, - "bottom": 2116, - "left": 1793, - "right": 1843 - } - }, - { - "doc_offset": { - "start": 2869, - "end": 2881 - }, - "page_num": 2, - "text": "approximated", - "position": { - "top": 2086, - "bottom": 2123, - "left": 1864, - "right": 2112 - } - }, - { - "doc_offset": { - "start": 2882, - "end": 2884 - }, - "page_num": 2, - "text": "by", - "position": { - "top": 2086, - "bottom": 2124, - "left": 2136, - "right": 2177 - } - }, - { - "doc_offset": { - "start": 2885, - "end": 2888 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2086, - "bottom": 2116, - "left": 2197, - "right": 2253 - } - }, - { - "doc_offset": { - "start": 2889, - "end": 2893 - }, - "page_num": 2, - "text": "last", - "position": { - "top": 2086, - "bottom": 2116, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 2894, - "end": 2900 - }, - "page_num": 2, - "text": "update", - "position": { - "top": 2136, - "bottom": 2173, - "left": 246, - "right": 370 - } - }, - { - "doc_offset": { - "start": 2901, - "end": 2905 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 2136, - "bottom": 2166, - "left": 382, - "right": 459 - } - }, - { - "doc_offset": { - "start": 2906, - "end": 2908 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2136, - "bottom": 2166, - "left": 473, - "right": 507 - } - }, - { - "doc_offset": { - "start": 2909, - "end": 2912 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2136, - "bottom": 2166, - "left": 518, - "right": 574 - } - }, - { - "doc_offset": { - "start": 2913, - "end": 2923 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2136, - "bottom": 2166, - "left": 588, - "right": 790 - } - }, - { - "doc_offset": { - "start": 2924, - "end": 2928 - }, - "page_num": 2, - "text": "once", - "position": { - "top": 2144, - "bottom": 2166, - "left": 806, - "right": 893 - } - }, - { - "doc_offset": { - "start": 2929, - "end": 2932 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2136, - "bottom": 2166, - "left": 905, - "right": 961 - } - }, - { - "doc_offset": { - "start": 2933, - "end": 2942 - }, - "page_num": 2, - "text": "retrieved", - "position": { - "top": 2137, - "bottom": 2166, - "left": 992, - "right": 1172 - } - }, - { - "doc_offset": { - "start": 2943, - "end": 2947 - }, - "page_num": 2, - "text": "flag", - "position": { - "top": 2136, - "bottom": 2174, - "left": 1200, - "right": 1263 - } - }, - { - "doc_offset": { - "start": 2948, - "end": 2950 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2136, - "bottom": 2166, - "left": 1279, - "right": 1305 - } - }, - { - "doc_offset": { - "start": 2951, - "end": 2955 - }, - "page_num": 2, - "text": "set.", - "position": { - "top": 2138, - "bottom": 2166, - "left": 1318, - "right": 1380 - } - }, - { - "doc_offset": { - "start": 2956, - "end": 2957 - }, - "page_num": 2, - "text": "4", - "position": { - "top": 2233, - "bottom": 2257, - "left": 213, - "right": 229 - } - }, - { - "doc_offset": { - "start": 2958, - "end": 2961 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 2241, - "bottom": 2271, - "left": 246, - "right": 313 - } - }, - { - "doc_offset": { - "start": 2962, - "end": 2969 - }, - "page_num": 2, - "text": "failure", - "position": { - "top": 2241, - "bottom": 2271, - "left": 330, - "right": 437 - } - }, - { - "doc_offset": { - "start": 2970, - "end": 2976 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2243, - "bottom": 2271, - "left": 455, - "right": 563 - } - }, - { - "doc_offset": { - "start": 2977, - "end": 2979 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2241, - "bottom": 2271, - "left": 582, - "right": 608 - } - }, - { - "doc_offset": { - "start": 2980, - "end": 2983 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 2243, - "bottom": 2271, - "left": 627, - "right": 682 - } - }, - { - "doc_offset": { - "start": 2984, - "end": 2992 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 2241, - "bottom": 2279, - "left": 700, - "right": 830 - } - }, - { - "doc_offset": { - "start": 2993, - "end": 3002 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 2241, - "bottom": 2271, - "left": 847, - "right": 1003 - } - }, - { - "doc_offset": { - "start": 3003, - "end": 3005 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 2249, - "bottom": 2271, - "left": 1021, - "right": 1063 - } - }, - { - "doc_offset": { - "start": 3006, - "end": 3009 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2241, - "bottom": 2271, - "left": 1081, - "right": 1137 - } - }, - { - "doc_offset": { - "start": 3010, - "end": 3020 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2243, - "bottom": 2271, - "left": 1170, - "right": 1372 - } - }, - { - "doc_offset": { - "start": 3021, - "end": 3027 - }, - "page_num": 2, - "text": "object", - "position": { - "top": 2241, - "bottom": 2278, - "left": 1405, - "right": 1515 - } - }, - { - "doc_offset": { - "start": 3028, - "end": 3030 - }, - "page_num": 2, - "text": "as", - "position": { - "top": 2249, - "bottom": 2271, - "left": 1533, - "right": 1572 - } - }, - { - "doc_offset": { - "start": 3031, - "end": 3032 - }, - "page_num": 2, - "text": "a", - "position": { - "top": 2249, - "bottom": 2271, - "left": 1590, - "right": 1610 - } - }, - { - "doc_offset": { - "start": 3033, - "end": 3041 - }, - "page_num": 2, - "text": "boolean.", - "position": { - "top": 2241, - "bottom": 2271, - "left": 1629, - "right": 1780 - } - }, - { - "doc_offset": { - "start": 3042, - "end": 3049 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 2241, - "bottom": 2271, - "left": 1802, - "right": 1930 - } - }, - { - "doc_offset": { - "start": 3050, - "end": 3054 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 2241, - "bottom": 2271, - "left": 1951, - "right": 2000 - } - }, - { - "doc_offset": { - "start": 3055, - "end": 3062 - }, - "page_num": 2, - "text": "derived", - "position": { - "top": 2241, - "bottom": 2271, - "left": 2018, - "right": 2149 - } - }, - { - "doc_offset": { - "start": 3063, - "end": 3068 - }, - "page_num": 2, - "text": "using", - "position": { - "top": 2241, - "bottom": 2279, - "left": 2169, - "right": 2262 - } - }, - { - "doc_offset": { - "start": 3069, - "end": 3072 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2241, - "bottom": 2271, - "left": 2280, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 3073, - "end": 3079 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2295, - "bottom": 2321, - "left": 260, - "right": 379 - } - }, - { - "doc_offset": { - "start": 3080, - "end": 3082 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2291, - "bottom": 2320, - "left": 408, - "right": 442 - } - }, - { - "doc_offset": { - "start": 3083, - "end": 3086 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2291, - "bottom": 2320, - "left": 454, - "right": 510 - } - }, - { - "doc_offset": { - "start": 3087, - "end": 3097 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2291, - "bottom": 2320, - "left": 523, - "right": 725 - } - }, - { - "doc_offset": { - "start": 3098, - "end": 3104 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 2290, - "bottom": 2328, - "left": 741, - "right": 859 - } - }, - { - "doc_offset": { - "start": 3105, - "end": 3111 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2295, - "bottom": 2321, - "left": 888, - "right": 1007 - } - }, - { - "doc_offset": { - "start": 3112, - "end": 3114 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 2304, - "bottom": 2315, - "left": 1036, - "right": 1081 - } - }, - { - "doc_offset": { - "start": 3115, - "end": 3125 - }, - "page_num": 2, - "text": "\u201cFAILED\u201d).", - "position": { - "top": 2290, - "bottom": 2328, - "left": 1097, - "right": 1281 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_3_text.txt b/tests/data/etloutput/4288/107456/101155/page_3_text.txt deleted file mode 100644 index 95a2d34..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_3_text.txt +++ /dev/null @@ -1,49 +0,0 @@ -Example GraphQL Query -query Submissions { -submissions(orderBy: UPDATED_BY, desc: true, limit: 1000) { -submissions { -id -createdAt -inputFiles { -id -filename -} -reviews { -createdBy -startedAt -completedAt -rejected -notes -reviewType -} -retrieved -updatedAt -workflowId -} -} -} -Scheduled Process Logic -This is a heavyweight query. Submissions are ordered by updatedAt descending, and results should be -paginated such that processing can stop once all submissions have been processed whose updatedAt -date is greater than the timestamp of the previous run of the integration. -Data Reconciliation -The output will include the primary key id needed to update existing rows and insert new rows into the -Metrics database. -1.4 -Submission File -Column -Type -GraphQL Source -id -int -submission.inputFile.id -name -str -submission.inputFile.filename -submission_id -int -submission.id -See the Submission section's example GraphQL query. -Data Reconciliation -The output will include the primary key id needed to update existing rows and insert new rows into the -Metrics database. \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_3_tokens.json b/tests/data/etloutput/4288/107456/101155/page_3_tokens.json deleted file mode 100644 index 65d74a7..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_3_tokens.json +++ /dev/null @@ -1,2116 +0,0 @@ -[ - { - "doc_offset": { - "start": 3126, - "end": 3133 - }, - "page_num": 3, - "text": "Example", - "position": { - "top": 16, - "bottom": 55, - "left": 215, - "right": 391 - } - }, - { - "doc_offset": { - "start": 3134, - "end": 3141 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 15, - "bottom": 55, - "left": 406, - "right": 591 - } - }, - { - "doc_offset": { - "start": 3142, - "end": 3147 - }, - "page_num": 3, - "text": "Query", - "position": { - "top": 15, - "bottom": 55, - "left": 606, - "right": 729 - } - }, - { - "doc_offset": { - "start": 3148, - "end": 3153 - }, - "page_num": 3, - "text": "query", - "position": { - "top": 139, - "bottom": 174, - "left": 244, - "right": 374 - } - }, - { - "doc_offset": { - "start": 3154, - "end": 3165 - }, - "page_num": 3, - "text": "Submissions", - "position": { - "top": 128, - "bottom": 165, - "left": 405, - "right": 693 - } - }, - { - "doc_offset": { - "start": 3166, - "end": 3167 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 128, - "bottom": 172, - "left": 728, - "right": 747 - } - }, - { - "doc_offset": { - "start": 3168, - "end": 3188 - }, - "page_num": 3, - "text": "submissions(orderBy:", - "position": { - "top": 190, - "bottom": 236, - "left": 334, - "right": 856 - } - }, - { - "doc_offset": { - "start": 3189, - "end": 3200 - }, - "page_num": 3, - "text": "UPDATED_BY,", - "position": { - "top": 192, - "bottom": 235, - "left": 895, - "right": 1178 - } - }, - { - "doc_offset": { - "start": 3201, - "end": 3206 - }, - "page_num": 3, - "text": "desc:", - "position": { - "top": 191, - "bottom": 227, - "left": 1216, - "right": 1338 - } - }, - { - "doc_offset": { - "start": 3207, - "end": 3212 - }, - "page_num": 3, - "text": "true,", - "position": { - "top": 194, - "bottom": 235, - "left": 1376, - "right": 1499 - } - }, - { - "doc_offset": { - "start": 3213, - "end": 3219 - }, - "page_num": 3, - "text": "limit:", - "position": { - "top": 190, - "bottom": 227, - "left": 1538, - "right": 1686 - } - }, - { - "doc_offset": { - "start": 3220, - "end": 3225 - }, - "page_num": 3, - "text": "1000)", - "position": { - "top": 190, - "bottom": 234, - "left": 1727, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 3226, - "end": 3227 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 190, - "bottom": 234, - "left": 1888, - "right": 1907 - } - }, - { - "doc_offset": { - "start": 3228, - "end": 3239 - }, - "page_num": 3, - "text": "submissions", - "position": { - "top": 253, - "bottom": 289, - "left": 441, - "right": 728 - } - }, - { - "doc_offset": { - "start": 3240, - "end": 3241 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 253, - "bottom": 297, - "left": 763, - "right": 783 - } - }, - { - "doc_offset": { - "start": 3242, - "end": 3244 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 315, - "bottom": 352, - "left": 548, - "right": 595 - } - }, - { - "doc_offset": { - "start": 3245, - "end": 3254 - }, - "page_num": 3, - "text": "createdAt", - "position": { - "top": 378, - "bottom": 414, - "left": 548, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3255, - "end": 3265 - }, - "page_num": 3, - "text": "inputFiles", - "position": { - "top": 440, - "bottom": 485, - "left": 548, - "right": 809 - } - }, - { - "doc_offset": { - "start": 3266, - "end": 3267 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 440, - "bottom": 484, - "left": 844, - "right": 863 - } - }, - { - "doc_offset": { - "start": 3268, - "end": 3270 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 503, - "bottom": 539, - "left": 655, - "right": 702 - } - }, - { - "doc_offset": { - "start": 3271, - "end": 3279 - }, - "page_num": 3, - "text": "filename", - "position": { - "top": 565, - "bottom": 602, - "left": 655, - "right": 863 - } - }, - { - "doc_offset": { - "start": 3280, - "end": 3281 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 628, - "bottom": 672, - "left": 547, - "right": 567 - } - }, - { - "doc_offset": { - "start": 3282, - "end": 3289 - }, - "page_num": 3, - "text": "reviews", - "position": { - "top": 690, - "bottom": 727, - "left": 550, - "right": 728 - } - }, - { - "doc_offset": { - "start": 3290, - "end": 3291 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 690, - "bottom": 734, - "left": 763, - "right": 783 - } - }, - { - "doc_offset": { - "start": 3292, - "end": 3301 - }, - "page_num": 3, - "text": "createdBy", - "position": { - "top": 753, - "bottom": 799, - "left": 655, - "right": 892 - } - }, - { - "doc_offset": { - "start": 3302, - "end": 3311 - }, - "page_num": 3, - "text": "startedAt", - "position": { - "top": 816, - "bottom": 852, - "left": 655, - "right": 889 - } - }, - { - "doc_offset": { - "start": 3312, - "end": 3323 - }, - "page_num": 3, - "text": "completedAt", - "position": { - "top": 878, - "bottom": 923, - "left": 655, - "right": 943 - } - }, - { - "doc_offset": { - "start": 3324, - "end": 3332 - }, - "page_num": 3, - "text": "rejected", - "position": { - "top": 940, - "bottom": 986, - "left": 657, - "right": 863 - } - }, - { - "doc_offset": { - "start": 3333, - "end": 3338 - }, - "page_num": 3, - "text": "notes", - "position": { - "top": 1006, - "bottom": 1039, - "left": 655, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3339, - "end": 3349 - }, - "page_num": 3, - "text": "reviewType", - "position": { - "top": 1065, - "bottom": 1111, - "left": 657, - "right": 916 - } - }, - { - "doc_offset": { - "start": 3350, - "end": 3351 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1128, - "bottom": 1172, - "left": 547, - "right": 567 - } - }, - { - "doc_offset": { - "start": 3352, - "end": 3361 - }, - "page_num": 3, - "text": "retrieved", - "position": { - "top": 1190, - "bottom": 1227, - "left": 550, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3362, - "end": 3371 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1253, - "bottom": 1298, - "left": 548, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3372, - "end": 3382 - }, - "page_num": 3, - "text": "workflowId", - "position": { - "top": 1315, - "bottom": 1352, - "left": 545, - "right": 809 - } - }, - { - "doc_offset": { - "start": 3383, - "end": 3384 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1378, - "bottom": 1422, - "left": 440, - "right": 460 - } - }, - { - "doc_offset": { - "start": 3385, - "end": 3386 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1440, - "bottom": 1484, - "left": 333, - "right": 352 - } - }, - { - "doc_offset": { - "start": 3387, - "end": 3388 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1503, - "bottom": 1547, - "left": 226, - "right": 245 - } - }, - { - "doc_offset": { - "start": 3389, - "end": 3398 - }, - "page_num": 3, - "text": "Scheduled", - "position": { - "top": 1623, - "bottom": 1656, - "left": 213, - "right": 430 - } - }, - { - "doc_offset": { - "start": 3399, - "end": 3406 - }, - "page_num": 3, - "text": "Process", - "position": { - "top": 1624, - "bottom": 1656, - "left": 448, - "right": 613 - } - }, - { - "doc_offset": { - "start": 3407, - "end": 3412 - }, - "page_num": 3, - "text": "Logic", - "position": { - "top": 1624, - "bottom": 1664, - "left": 629, - "right": 741 - } - }, - { - "doc_offset": { - "start": 3413, - "end": 3417 - }, - "page_num": 3, - "text": "This", - "position": { - "top": 1728, - "bottom": 1760, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 3418, - "end": 3420 - }, - "page_num": 3, - "text": "is", - "position": { - "top": 1728, - "bottom": 1760, - "left": 314, - "right": 342 - } - }, - { - "doc_offset": { - "start": 3421, - "end": 3422 - }, - "page_num": 3, - "text": "a", - "position": { - "top": 1736, - "bottom": 1760, - "left": 363, - "right": 384 - } - }, - { - "doc_offset": { - "start": 3423, - "end": 3434 - }, - "page_num": 3, - "text": "heavyweight", - "position": { - "top": 1728, - "bottom": 1768, - "left": 406, - "right": 647 - } - }, - { - "doc_offset": { - "start": 3435, - "end": 3441 - }, - "page_num": 3, - "text": "query.", - "position": { - "top": 1736, - "bottom": 1768, - "left": 668, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3442, - "end": 3453 - }, - "page_num": 3, - "text": "Submissions", - "position": { - "top": 1727, - "bottom": 1760, - "left": 805, - "right": 1053 - } - }, - { - "doc_offset": { - "start": 3454, - "end": 3457 - }, - "page_num": 3, - "text": "are", - "position": { - "top": 1736, - "bottom": 1760, - "left": 1074, - "right": 1132 - } - }, - { - "doc_offset": { - "start": 3458, - "end": 3465 - }, - "page_num": 3, - "text": "ordered", - "position": { - "top": 1728, - "bottom": 1760, - "left": 1153, - "right": 1301 - } - }, - { - "doc_offset": { - "start": 3466, - "end": 3468 - }, - "page_num": 3, - "text": "by", - "position": { - "top": 1728, - "bottom": 1768, - "left": 1325, - "right": 1369 - } - }, - { - "doc_offset": { - "start": 3469, - "end": 3478 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1730, - "bottom": 1767, - "left": 1406, - "right": 1601 - } - }, - { - "doc_offset": { - "start": 3479, - "end": 3490 - }, - "page_num": 3, - "text": "descending,", - "position": { - "top": 1728, - "bottom": 1768, - "left": 1639, - "right": 1874 - } - }, - { - "doc_offset": { - "start": 3491, - "end": 3494 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 1728, - "bottom": 1760, - "left": 1898, - "right": 1967 - } - }, - { - "doc_offset": { - "start": 3495, - "end": 3502 - }, - "page_num": 3, - "text": "results", - "position": { - "top": 1728, - "bottom": 1760, - "left": 1992, - "right": 2117 - } - }, - { - "doc_offset": { - "start": 3503, - "end": 3509 - }, - "page_num": 3, - "text": "should", - "position": { - "top": 1728, - "bottom": 1760, - "left": 2139, - "right": 2266 - } - }, - { - "doc_offset": { - "start": 3510, - "end": 3512 - }, - "page_num": 3, - "text": "be", - "position": { - "top": 1728, - "bottom": 1760, - "left": 2291, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 3513, - "end": 3522 - }, - "page_num": 3, - "text": "paginated", - "position": { - "top": 1789, - "bottom": 1830, - "left": 215, - "right": 404 - } - }, - { - "doc_offset": { - "start": 3523, - "end": 3527 - }, - "page_num": 3, - "text": "such", - "position": { - "top": 1789, - "bottom": 1821, - "left": 428, - "right": 517 - } - }, - { - "doc_offset": { - "start": 3528, - "end": 3532 - }, - "page_num": 3, - "text": "that", - "position": { - "top": 1789, - "bottom": 1821, - "left": 540, - "right": 613 - } - }, - { - "doc_offset": { - "start": 3533, - "end": 3543 - }, - "page_num": 3, - "text": "processing", - "position": { - "top": 1789, - "bottom": 1830, - "left": 637, - "right": 846 - } - }, - { - "doc_offset": { - "start": 3544, - "end": 3547 - }, - "page_num": 3, - "text": "can", - "position": { - "top": 1797, - "bottom": 1821, - "left": 869, - "right": 936 - } - }, - { - "doc_offset": { - "start": 3548, - "end": 3552 - }, - "page_num": 3, - "text": "stop", - "position": { - "top": 1791, - "bottom": 1829, - "left": 959, - "right": 1043 - } - }, - { - "doc_offset": { - "start": 3553, - "end": 3557 - }, - "page_num": 3, - "text": "once", - "position": { - "top": 1797, - "bottom": 1821, - "left": 1065, - "right": 1159 - } - }, - { - "doc_offset": { - "start": 3558, - "end": 3561 - }, - "page_num": 3, - "text": "all", - "position": { - "top": 1789, - "bottom": 1821, - "left": 1180, - "right": 1219 - } - }, - { - "doc_offset": { - "start": 3562, - "end": 3573 - }, - "page_num": 3, - "text": "submissions", - "position": { - "top": 1789, - "bottom": 1821, - "left": 1242, - "right": 1483 - } - }, - { - "doc_offset": { - "start": 3574, - "end": 3578 - }, - "page_num": 3, - "text": "have", - "position": { - "top": 1789, - "bottom": 1821, - "left": 1506, - "right": 1596 - } - }, - { - "doc_offset": { - "start": 3579, - "end": 3583 - }, - "page_num": 3, - "text": "been", - "position": { - "top": 1789, - "bottom": 1821, - "left": 1619, - "right": 1710 - } - }, - { - "doc_offset": { - "start": 3584, - "end": 3593 - }, - "page_num": 3, - "text": "processed", - "position": { - "top": 1789, - "bottom": 1829, - "left": 1735, - "right": 1934 - } - }, - { - "doc_offset": { - "start": 3594, - "end": 3599 - }, - "page_num": 3, - "text": "whose", - "position": { - "top": 1789, - "bottom": 1821, - "left": 1957, - "right": 2083 - } - }, - { - "doc_offset": { - "start": 3600, - "end": 3609 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1791, - "bottom": 1828, - "left": 2121, - "right": 2316 - } - }, - { - "doc_offset": { - "start": 3610, - "end": 3614 - }, - "page_num": 3, - "text": "date", - "position": { - "top": 1851, - "bottom": 1882, - "left": 214, - "right": 298 - } - }, - { - "doc_offset": { - "start": 3615, - "end": 3617 - }, - "page_num": 3, - "text": "is", - "position": { - "top": 1851, - "bottom": 1882, - "left": 314, - "right": 341 - } - }, - { - "doc_offset": { - "start": 3618, - "end": 3625 - }, - "page_num": 3, - "text": "greater", - "position": { - "top": 1852, - "bottom": 1891, - "left": 356, - "right": 492 - } - }, - { - "doc_offset": { - "start": 3626, - "end": 3630 - }, - "page_num": 3, - "text": "than", - "position": { - "top": 1851, - "bottom": 1882, - "left": 505, - "right": 588 - } - }, - { - "doc_offset": { - "start": 3631, - "end": 3634 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1851, - "bottom": 1882, - "left": 603, - "right": 663 - } - }, - { - "doc_offset": { - "start": 3635, - "end": 3644 - }, - "page_num": 3, - "text": "timestamp", - "position": { - "top": 1851, - "bottom": 1890, - "left": 677, - "right": 882 - } - }, - { - "doc_offset": { - "start": 3645, - "end": 3647 - }, - "page_num": 3, - "text": "of", - "position": { - "top": 1850, - "bottom": 1882, - "left": 897, - "right": 934 - } - }, - { - "doc_offset": { - "start": 3648, - "end": 3651 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1851, - "bottom": 1882, - "left": 946, - "right": 1006 - } - }, - { - "doc_offset": { - "start": 3652, - "end": 3660 - }, - "page_num": 3, - "text": "previous", - "position": { - "top": 1851, - "bottom": 1890, - "left": 1023, - "right": 1184 - } - }, - { - "doc_offset": { - "start": 3661, - "end": 3664 - }, - "page_num": 3, - "text": "run", - "position": { - "top": 1859, - "bottom": 1882, - "left": 1201, - "right": 1258 - } - }, - { - "doc_offset": { - "start": 3665, - "end": 3667 - }, - "page_num": 3, - "text": "of", - "position": { - "top": 1850, - "bottom": 1882, - "left": 1275, - "right": 1311 - } - }, - { - "doc_offset": { - "start": 3668, - "end": 3671 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1851, - "bottom": 1882, - "left": 1324, - "right": 1384 - } - }, - { - "doc_offset": { - "start": 3672, - "end": 3684 - }, - "page_num": 3, - "text": "integration.", - "position": { - "top": 1851, - "bottom": 1891, - "left": 1400, - "right": 1613 - } - }, - { - "doc_offset": { - "start": 3685, - "end": 3689 - }, - "page_num": 3, - "text": "Data", - "position": { - "top": 1957, - "bottom": 1988, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 3690, - "end": 3704 - }, - "page_num": 3, - "text": "Reconciliation", - "position": { - "top": 1957, - "bottom": 1988, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 3705, - "end": 3708 - }, - "page_num": 3, - "text": "The", - "position": { - "top": 2061, - "bottom": 2092, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 3709, - "end": 3715 - }, - "page_num": 3, - "text": "output", - "position": { - "top": 2062, - "bottom": 2100, - "left": 304, - "right": 428 - } - }, - { - "doc_offset": { - "start": 3716, - "end": 3720 - }, - "page_num": 3, - "text": "will", - "position": { - "top": 2061, - "bottom": 2092, - "left": 447, - "right": 506 - } - }, - { - "doc_offset": { - "start": 3721, - "end": 3728 - }, - "page_num": 3, - "text": "include", - "position": { - "top": 2061, - "bottom": 2092, - "left": 529, - "right": 666 - } - }, - { - "doc_offset": { - "start": 3729, - "end": 3732 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2061, - "bottom": 2092, - "left": 685, - "right": 745 - } - }, - { - "doc_offset": { - "start": 3733, - "end": 3740 - }, - "page_num": 3, - "text": "primary", - "position": { - "top": 2061, - "bottom": 2101, - "left": 766, - "right": 910 - } - }, - { - "doc_offset": { - "start": 3741, - "end": 3744 - }, - "page_num": 3, - "text": "key", - "position": { - "top": 2061, - "bottom": 2101, - "left": 931, - "right": 995 - } - }, - { - "doc_offset": { - "start": 3745, - "end": 3747 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 2062, - "bottom": 2092, - "left": 1031, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 3748, - "end": 3754 - }, - "page_num": 3, - "text": "needed", - "position": { - "top": 2061, - "bottom": 2092, - "left": 1107, - "right": 1248 - } - }, - { - "doc_offset": { - "start": 3755, - "end": 3757 - }, - "page_num": 3, - "text": "to", - "position": { - "top": 2062, - "bottom": 2092, - "left": 1269, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 3758, - "end": 3764 - }, - "page_num": 3, - "text": "update", - "position": { - "top": 2061, - "bottom": 2100, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 3765, - "end": 3773 - }, - "page_num": 3, - "text": "existing", - "position": { - "top": 2061, - "bottom": 2101, - "left": 1481, - "right": 1627 - } - }, - { - "doc_offset": { - "start": 3774, - "end": 3778 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 2069, - "bottom": 2092, - "left": 1650, - "right": 1740 - } - }, - { - "doc_offset": { - "start": 3779, - "end": 3782 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 2061, - "bottom": 2092, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 3783, - "end": 3789 - }, - "page_num": 3, - "text": "insert", - "position": { - "top": 2061, - "bottom": 2092, - "left": 1853, - "right": 1957 - } - }, - { - "doc_offset": { - "start": 3790, - "end": 3793 - }, - "page_num": 3, - "text": "new", - "position": { - "top": 2069, - "bottom": 2092, - "left": 1978, - "right": 2055 - } - }, - { - "doc_offset": { - "start": 3794, - "end": 3798 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 2069, - "bottom": 2092, - "left": 2076, - "right": 2166 - } - }, - { - "doc_offset": { - "start": 3799, - "end": 3803 - }, - "page_num": 3, - "text": "into", - "position": { - "top": 2061, - "bottom": 2092, - "left": 2188, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 3804, - "end": 3807 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2061, - "bottom": 2092, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 3808, - "end": 3815 - }, - "page_num": 3, - "text": "Metrics", - "position": { - "top": 2122, - "bottom": 2153, - "left": 216, - "right": 356 - } - }, - { - "doc_offset": { - "start": 3816, - "end": 3825 - }, - "page_num": 3, - "text": "database.", - "position": { - "top": 2122, - "bottom": 2153, - "left": 371, - "right": 559 - } - }, - { - "doc_offset": { - "start": 3826, - "end": 3829 - }, - "page_num": 3, - "text": "1.4", - "position": { - "top": 2313, - "bottom": 2354, - "left": 219, - "right": 310 - } - }, - { - "doc_offset": { - "start": 3830, - "end": 3840 - }, - "page_num": 3, - "text": "Submission", - "position": { - "top": 2311, - "bottom": 2355, - "left": 366, - "right": 721 - } - }, - { - "doc_offset": { - "start": 3841, - "end": 3845 - }, - "page_num": 3, - "text": "File", - "position": { - "top": 2311, - "bottom": 2355, - "left": 750, - "right": 855 - } - }, - { - "doc_offset": { - "start": 3846, - "end": 3852 - }, - "page_num": 3, - "text": "Column", - "position": { - "top": 2470, - "bottom": 2502, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 3853, - "end": 3857 - }, - "page_num": 3, - "text": "Type", - "position": { - "top": 2471, - "bottom": 2510, - "left": 855, - "right": 950 - } - }, - { - "doc_offset": { - "start": 3858, - "end": 3865 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 2470, - "bottom": 2510, - "left": 1159, - "right": 1344 - } - }, - { - "doc_offset": { - "start": 3866, - "end": 3872 - }, - "page_num": 3, - "text": "Source", - "position": { - "top": 2470, - "bottom": 2502, - "left": 1358, - "right": 1504 - } - }, - { - "doc_offset": { - "start": 3873, - "end": 3875 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 2571, - "bottom": 2603, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 3876, - "end": 3879 - }, - "page_num": 3, - "text": "int", - "position": { - "top": 2571, - "bottom": 2603, - "left": 858, - "right": 901 - } - }, - { - "doc_offset": { - "start": 3880, - "end": 3903 - }, - "page_num": 3, - "text": "submission.inputFile.id", - "position": { - "top": 2571, - "bottom": 2608, - "left": 1175, - "right": 1682 - } - }, - { - "doc_offset": { - "start": 3904, - "end": 3908 - }, - "page_num": 3, - "text": "name", - "position": { - "top": 2672, - "bottom": 2696, - "left": 264, - "right": 369 - } - }, - { - "doc_offset": { - "start": 3909, - "end": 3912 - }, - "page_num": 3, - "text": "str", - "position": { - "top": 2666, - "bottom": 2696, - "left": 856, - "right": 905 - } - }, - { - "doc_offset": { - "start": 3913, - "end": 3942 - }, - "page_num": 3, - "text": "submission.inputFile.filename", - "position": { - "top": 2663, - "bottom": 2701, - "left": 1175, - "right": 1816 - } - }, - { - "doc_offset": { - "start": 3943, - "end": 3956 - }, - "page_num": 3, - "text": "submission_id", - "position": { - "top": 2756, - "bottom": 2793, - "left": 262, - "right": 538 - } - }, - { - "doc_offset": { - "start": 3957, - "end": 3960 - }, - "page_num": 3, - "text": "int", - "position": { - "top": 2756, - "bottom": 2788, - "left": 858, - "right": 901 - } - }, - { - "doc_offset": { - "start": 3961, - "end": 3974 - }, - "page_num": 3, - "text": "submission.id", - "position": { - "top": 2756, - "bottom": 2786, - "left": 1175, - "right": 1459 - } - }, - { - "doc_offset": { - "start": 3975, - "end": 3978 - }, - "page_num": 3, - "text": "See", - "position": { - "top": 2885, - "bottom": 2917, - "left": 214, - "right": 286 - } - }, - { - "doc_offset": { - "start": 3979, - "end": 3982 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2885, - "bottom": 2917, - "left": 300, - "right": 360 - } - }, - { - "doc_offset": { - "start": 3983, - "end": 3993 - }, - "page_num": 3, - "text": "Submission", - "position": { - "top": 2884, - "bottom": 2918, - "left": 375, - "right": 598 - } - }, - { - "doc_offset": { - "start": 3994, - "end": 4003 - }, - "page_num": 3, - "text": "section's", - "position": { - "top": 2885, - "bottom": 2917, - "left": 612, - "right": 786 - } - }, - { - "doc_offset": { - "start": 4004, - "end": 4011 - }, - "page_num": 3, - "text": "example", - "position": { - "top": 2885, - "bottom": 2925, - "left": 801, - "right": 964 - } - }, - { - "doc_offset": { - "start": 4012, - "end": 4019 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 2885, - "bottom": 2925, - "left": 979, - "right": 1156 - } - }, - { - "doc_offset": { - "start": 4020, - "end": 4026 - }, - "page_num": 3, - "text": "query.", - "position": { - "top": 2893, - "bottom": 2926, - "left": 1170, - "right": 1284 - } - }, - { - "doc_offset": { - "start": 4027, - "end": 4031 - }, - "page_num": 3, - "text": "Data", - "position": { - "top": 2991, - "bottom": 3023, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 4032, - "end": 4046 - }, - "page_num": 3, - "text": "Reconciliation", - "position": { - "top": 2991, - "bottom": 3023, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 4047, - "end": 4050 - }, - "page_num": 3, - "text": "The", - "position": { - "top": 3095, - "bottom": 3127, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 4051, - "end": 4057 - }, - "page_num": 3, - "text": "output", - "position": { - "top": 3097, - "bottom": 3135, - "left": 304, - "right": 428 - } - }, - { - "doc_offset": { - "start": 4058, - "end": 4062 - }, - "page_num": 3, - "text": "will", - "position": { - "top": 3095, - "bottom": 3127, - "left": 447, - "right": 506 - } - }, - { - "doc_offset": { - "start": 4063, - "end": 4070 - }, - "page_num": 3, - "text": "include", - "position": { - "top": 3095, - "bottom": 3127, - "left": 529, - "right": 666 - } - }, - { - "doc_offset": { - "start": 4071, - "end": 4074 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 3095, - "bottom": 3127, - "left": 685, - "right": 745 - } - }, - { - "doc_offset": { - "start": 4075, - "end": 4082 - }, - "page_num": 3, - "text": "primary", - "position": { - "top": 3095, - "bottom": 3136, - "left": 766, - "right": 910 - } - }, - { - "doc_offset": { - "start": 4083, - "end": 4086 - }, - "page_num": 3, - "text": "key", - "position": { - "top": 3095, - "bottom": 3136, - "left": 931, - "right": 995 - } - }, - { - "doc_offset": { - "start": 4087, - "end": 4089 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 3097, - "bottom": 3127, - "left": 1031, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 4090, - "end": 4096 - }, - "page_num": 3, - "text": "needed", - "position": { - "top": 3095, - "bottom": 3127, - "left": 1107, - "right": 1248 - } - }, - { - "doc_offset": { - "start": 4097, - "end": 4099 - }, - "page_num": 3, - "text": "to", - "position": { - "top": 3097, - "bottom": 3127, - "left": 1269, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 4100, - "end": 4106 - }, - "page_num": 3, - "text": "update", - "position": { - "top": 3095, - "bottom": 3135, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 4107, - "end": 4115 - }, - "page_num": 3, - "text": "existing", - "position": { - "top": 3095, - "bottom": 3136, - "left": 1481, - "right": 1627 - } - }, - { - "doc_offset": { - "start": 4116, - "end": 4120 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 3103, - "bottom": 3127, - "left": 1650, - "right": 1740 - } - }, - { - "doc_offset": { - "start": 4121, - "end": 4124 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 3095, - "bottom": 3127, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 4125, - "end": 4131 - }, - "page_num": 3, - "text": "insert", - "position": { - "top": 3095, - "bottom": 3127, - "left": 1853, - "right": 1957 - } - }, - { - "doc_offset": { - "start": 4132, - "end": 4135 - }, - "page_num": 3, - "text": "new", - "position": { - "top": 3103, - "bottom": 3127, - "left": 1978, - "right": 2055 - } - }, - { - "doc_offset": { - "start": 4136, - "end": 4140 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 3103, - "bottom": 3127, - "left": 2076, - "right": 2166 - } - }, - { - "doc_offset": { - "start": 4141, - "end": 4145 - }, - "page_num": 3, - "text": "into", - "position": { - "top": 3095, - "bottom": 3127, - "left": 2188, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 4146, - "end": 4149 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 3095, - "bottom": 3127, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 4150, - "end": 4157 - }, - "page_num": 3, - "text": "Metrics", - "position": { - "top": 3157, - "bottom": 3188, - "left": 216, - "right": 356 - } - }, - { - "doc_offset": { - "start": 4158, - "end": 4167 - }, - "page_num": 3, - "text": "database.", - "position": { - "top": 3157, - "bottom": 3188, - "left": 371, - "right": 559 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_4_text.txt b/tests/data/etloutput/4288/107456/101155/page_4_text.txt deleted file mode 100644 index 9840c5e..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_4_text.txt +++ /dev/null @@ -1,33 +0,0 @@ -1.5 -Reviewer -Column -Type -GraphQL Source -userSnapshot.id -id -int -name -str -userSnapshot.name -email -str -userSnapshot.email -enabled -bool -userSnapshot.enabled -Example GraphQL Query -query Users { -userSnapshot(orderBy: ID, desc: false, limit: 1000) { -results { -id -name -email -enabled -} -} -} -Scheduled Process Logic -This is a lightweight query. All reviewers will be pulled every time the integration is run. -Data Reconciliation -The output will include the primary key id needed to update existing rows and insert new rows into the -Metrics database. \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_4_tokens.json b/tests/data/etloutput/4288/107456/101155/page_4_tokens.json deleted file mode 100644 index 053fb77..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_4_tokens.json +++ /dev/null @@ -1,1150 +0,0 @@ -[ - { - "doc_offset": { - "start": 4168, - "end": 4171 - }, - "page_num": 4, - "text": "1.5", - "position": { - "top": 59, - "bottom": 101, - "left": 219, - "right": 309 - } - }, - { - "doc_offset": { - "start": 4172, - "end": 4180 - }, - "page_num": 4, - "text": "Reviewer", - "position": { - "top": 57, - "bottom": 101, - "left": 368, - "right": 657 - } - }, - { - "doc_offset": { - "start": 4181, - "end": 4187 - }, - "page_num": 4, - "text": "Column", - "position": { - "top": 216, - "bottom": 248, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 4188, - "end": 4192 - }, - "page_num": 4, - "text": "Type", - "position": { - "top": 216, - "bottom": 255, - "left": 796, - "right": 891 - } - }, - { - "doc_offset": { - "start": 4193, - "end": 4200 - }, - "page_num": 4, - "text": "GraphQL", - "position": { - "top": 216, - "bottom": 255, - "left": 1194, - "right": 1380 - } - }, - { - "doc_offset": { - "start": 4201, - "end": 4207 - }, - "page_num": 4, - "text": "Source", - "position": { - "top": 216, - "bottom": 248, - "left": 1394, - "right": 1539 - } - }, - { - "doc_offset": { - "start": 4208, - "end": 4223 - }, - "page_num": 4, - "text": "userSnapshot.id", - "position": { - "top": 317, - "bottom": 354, - "left": 1210, - "right": 1539 - } - }, - { - "doc_offset": { - "start": 4224, - "end": 4226 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 317, - "bottom": 349, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 4227, - "end": 4230 - }, - "page_num": 4, - "text": "int", - "position": { - "top": 317, - "bottom": 348, - "left": 799, - "right": 842 - } - }, - { - "doc_offset": { - "start": 4231, - "end": 4235 - }, - "page_num": 4, - "text": "name", - "position": { - "top": 418, - "bottom": 441, - "left": 264, - "right": 369 - } - }, - { - "doc_offset": { - "start": 4236, - "end": 4239 - }, - "page_num": 4, - "text": "str", - "position": { - "top": 412, - "bottom": 441, - "left": 797, - "right": 846 - } - }, - { - "doc_offset": { - "start": 4240, - "end": 4257 - }, - "page_num": 4, - "text": "userSnapshot.name", - "position": { - "top": 410, - "bottom": 447, - "left": 1210, - "right": 1584 - } - }, - { - "doc_offset": { - "start": 4258, - "end": 4263 - }, - "page_num": 4, - "text": "email", - "position": { - "top": 502, - "bottom": 534, - "left": 263, - "right": 362 - } - }, - { - "doc_offset": { - "start": 4264, - "end": 4267 - }, - "page_num": 4, - "text": "str", - "position": { - "top": 504, - "bottom": 534, - "left": 797, - "right": 846 - } - }, - { - "doc_offset": { - "start": 4268, - "end": 4286 - }, - "page_num": 4, - "text": "userSnapshot.email", - "position": { - "top": 502, - "bottom": 539, - "left": 1210, - "right": 1604 - } - }, - { - "doc_offset": { - "start": 4287, - "end": 4294 - }, - "page_num": 4, - "text": "enabled", - "position": { - "top": 595, - "bottom": 626, - "left": 263, - "right": 414 - } - }, - { - "doc_offset": { - "start": 4295, - "end": 4299 - }, - "page_num": 4, - "text": "bool", - "position": { - "top": 595, - "bottom": 626, - "left": 799, - "right": 879 - } - }, - { - "doc_offset": { - "start": 4300, - "end": 4320 - }, - "page_num": 4, - "text": "userSnapshot.enabled", - "position": { - "top": 595, - "bottom": 632, - "left": 1210, - "right": 1651 - } - }, - { - "doc_offset": { - "start": 4321, - "end": 4328 - }, - "page_num": 4, - "text": "Example", - "position": { - "top": 725, - "bottom": 764, - "left": 215, - "right": 391 - } - }, - { - "doc_offset": { - "start": 4329, - "end": 4336 - }, - "page_num": 4, - "text": "GraphQL", - "position": { - "top": 724, - "bottom": 764, - "left": 406, - "right": 591 - } - }, - { - "doc_offset": { - "start": 4337, - "end": 4342 - }, - "page_num": 4, - "text": "Query", - "position": { - "top": 724, - "bottom": 764, - "left": 606, - "right": 729 - } - }, - { - "doc_offset": { - "start": 4343, - "end": 4348 - }, - "page_num": 4, - "text": "query", - "position": { - "top": 848, - "bottom": 883, - "left": 244, - "right": 374 - } - }, - { - "doc_offset": { - "start": 4349, - "end": 4354 - }, - "page_num": 4, - "text": "Users", - "position": { - "top": 839, - "bottom": 874, - "left": 404, - "right": 532 - } - }, - { - "doc_offset": { - "start": 4355, - "end": 4356 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 837, - "bottom": 881, - "left": 567, - "right": 586 - } - }, - { - "doc_offset": { - "start": 4357, - "end": 4378 - }, - "page_num": 4, - "text": "userSnapshot(orderBy:", - "position": { - "top": 899, - "bottom": 945, - "left": 333, - "right": 883 - } - }, - { - "doc_offset": { - "start": 4379, - "end": 4382 - }, - "page_num": 4, - "text": "ID,", - "position": { - "top": 901, - "bottom": 945, - "left": 923, - "right": 990 - } - }, - { - "doc_offset": { - "start": 4383, - "end": 4388 - }, - "page_num": 4, - "text": "desc:", - "position": { - "top": 900, - "bottom": 936, - "left": 1029, - "right": 1150 - } - }, - { - "doc_offset": { - "start": 4389, - "end": 4395 - }, - "page_num": 4, - "text": "false,", - "position": { - "top": 899, - "bottom": 945, - "left": 1191, - "right": 1338 - } - }, - { - "doc_offset": { - "start": 4396, - "end": 4402 - }, - "page_num": 4, - "text": "limit:", - "position": { - "top": 899, - "bottom": 936, - "left": 1377, - "right": 1525 - } - }, - { - "doc_offset": { - "start": 4403, - "end": 4408 - }, - "page_num": 4, - "text": "1000)", - "position": { - "top": 899, - "bottom": 943, - "left": 1566, - "right": 1692 - } - }, - { - "doc_offset": { - "start": 4409, - "end": 4410 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 899, - "bottom": 943, - "left": 1727, - "right": 1746 - } - }, - { - "doc_offset": { - "start": 4411, - "end": 4418 - }, - "page_num": 4, - "text": "results", - "position": { - "top": 963, - "bottom": 998, - "left": 443, - "right": 621 - } - }, - { - "doc_offset": { - "start": 4419, - "end": 4420 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 962, - "bottom": 1006, - "left": 656, - "right": 676 - } - }, - { - "doc_offset": { - "start": 4421, - "end": 4423 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 1024, - "bottom": 1061, - "left": 548, - "right": 595 - } - }, - { - "doc_offset": { - "start": 4424, - "end": 4428 - }, - "page_num": 4, - "text": "name", - "position": { - "top": 1098, - "bottom": 1123, - "left": 548, - "right": 649 - } - }, - { - "doc_offset": { - "start": 4429, - "end": 4434 - }, - "page_num": 4, - "text": "email", - "position": { - "top": 1149, - "bottom": 1186, - "left": 547, - "right": 673 - } - }, - { - "doc_offset": { - "start": 4435, - "end": 4442 - }, - "page_num": 4, - "text": "enabled", - "position": { - "top": 1213, - "bottom": 1248, - "left": 547, - "right": 729 - } - }, - { - "doc_offset": { - "start": 4443, - "end": 4444 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1337, - "bottom": 1381, - "left": 333, - "right": 352 - } - }, - { - "doc_offset": { - "start": 4445, - "end": 4446 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1399, - "bottom": 1443, - "left": 226, - "right": 245 - } - }, - { - "doc_offset": { - "start": 4447, - "end": 4448 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1274, - "bottom": 1318, - "left": 440, - "right": 460 - } - }, - { - "doc_offset": { - "start": 4449, - "end": 4458 - }, - "page_num": 4, - "text": "Scheduled", - "position": { - "top": 1520, - "bottom": 1553, - "left": 213, - "right": 430 - } - }, - { - "doc_offset": { - "start": 4459, - "end": 4466 - }, - "page_num": 4, - "text": "Process", - "position": { - "top": 1521, - "bottom": 1553, - "left": 448, - "right": 613 - } - }, - { - "doc_offset": { - "start": 4467, - "end": 4472 - }, - "page_num": 4, - "text": "Logic", - "position": { - "top": 1521, - "bottom": 1560, - "left": 629, - "right": 741 - } - }, - { - "doc_offset": { - "start": 4473, - "end": 4477 - }, - "page_num": 4, - "text": "This", - "position": { - "top": 1625, - "bottom": 1656, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 4478, - "end": 4480 - }, - "page_num": 4, - "text": "is", - "position": { - "top": 1625, - "bottom": 1656, - "left": 308, - "right": 335 - } - }, - { - "doc_offset": { - "start": 4481, - "end": 4482 - }, - "page_num": 4, - "text": "a", - "position": { - "top": 1633, - "bottom": 1656, - "left": 351, - "right": 372 - } - }, - { - "doc_offset": { - "start": 4483, - "end": 4494 - }, - "page_num": 4, - "text": "lightweight", - "position": { - "top": 1625, - "bottom": 1665, - "left": 388, - "right": 595 - } - }, - { - "doc_offset": { - "start": 4495, - "end": 4501 - }, - "page_num": 4, - "text": "query.", - "position": { - "top": 1633, - "bottom": 1665, - "left": 611, - "right": 724 - } - }, - { - "doc_offset": { - "start": 4502, - "end": 4505 - }, - "page_num": 4, - "text": "All", - "position": { - "top": 1625, - "bottom": 1656, - "left": 740, - "right": 785 - } - }, - { - "doc_offset": { - "start": 4506, - "end": 4515 - }, - "page_num": 4, - "text": "reviewers", - "position": { - "top": 1625, - "bottom": 1656, - "left": 803, - "right": 984 - } - }, - { - "doc_offset": { - "start": 4516, - "end": 4520 - }, - "page_num": 4, - "text": "will", - "position": { - "top": 1625, - "bottom": 1656, - "left": 999, - "right": 1057 - } - }, - { - "doc_offset": { - "start": 4521, - "end": 4523 - }, - "page_num": 4, - "text": "be", - "position": { - "top": 1625, - "bottom": 1656, - "left": 1075, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 4524, - "end": 4530 - }, - "page_num": 4, - "text": "pulled", - "position": { - "top": 1625, - "bottom": 1665, - "left": 1137, - "right": 1250 - } - }, - { - "doc_offset": { - "start": 4531, - "end": 4536 - }, - "page_num": 4, - "text": "every", - "position": { - "top": 1633, - "bottom": 1665, - "left": 1267, - "right": 1370 - } - }, - { - "doc_offset": { - "start": 4537, - "end": 4541 - }, - "page_num": 4, - "text": "time", - "position": { - "top": 1625, - "bottom": 1656, - "left": 1383, - "right": 1466 - } - }, - { - "doc_offset": { - "start": 4542, - "end": 4545 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1625, - "bottom": 1656, - "left": 1480, - "right": 1540 - } - }, - { - "doc_offset": { - "start": 4546, - "end": 4557 - }, - "page_num": 4, - "text": "integration", - "position": { - "top": 1625, - "bottom": 1665, - "left": 1556, - "right": 1758 - } - }, - { - "doc_offset": { - "start": 4558, - "end": 4560 - }, - "page_num": 4, - "text": "is", - "position": { - "top": 1625, - "bottom": 1656, - "left": 1776, - "right": 1803 - } - }, - { - "doc_offset": { - "start": 4561, - "end": 4565 - }, - "page_num": 4, - "text": "run.", - "position": { - "top": 1633, - "bottom": 1656, - "left": 1819, - "right": 1888 - } - }, - { - "doc_offset": { - "start": 4566, - "end": 4570 - }, - "page_num": 4, - "text": "Data", - "position": { - "top": 1731, - "bottom": 1763, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 4571, - "end": 4585 - }, - "page_num": 4, - "text": "Reconciliation", - "position": { - "top": 1731, - "bottom": 1763, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 4586, - "end": 4589 - }, - "page_num": 4, - "text": "The", - "position": { - "top": 1835, - "bottom": 1866, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 4590, - "end": 4596 - }, - "page_num": 4, - "text": "output", - "position": { - "top": 1837, - "bottom": 1875, - "left": 304, - "right": 428 - } - }, - { - "doc_offset": { - "start": 4597, - "end": 4601 - }, - "page_num": 4, - "text": "will", - "position": { - "top": 1835, - "bottom": 1866, - "left": 447, - "right": 506 - } - }, - { - "doc_offset": { - "start": 4602, - "end": 4609 - }, - "page_num": 4, - "text": "include", - "position": { - "top": 1835, - "bottom": 1866, - "left": 529, - "right": 666 - } - }, - { - "doc_offset": { - "start": 4610, - "end": 4613 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1835, - "bottom": 1866, - "left": 685, - "right": 745 - } - }, - { - "doc_offset": { - "start": 4614, - "end": 4621 - }, - "page_num": 4, - "text": "primary", - "position": { - "top": 1835, - "bottom": 1875, - "left": 766, - "right": 910 - } - }, - { - "doc_offset": { - "start": 4622, - "end": 4625 - }, - "page_num": 4, - "text": "key", - "position": { - "top": 1835, - "bottom": 1875, - "left": 931, - "right": 995 - } - }, - { - "doc_offset": { - "start": 4626, - "end": 4628 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 1836, - "bottom": 1866, - "left": 1031, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 4629, - "end": 4635 - }, - "page_num": 4, - "text": "needed", - "position": { - "top": 1835, - "bottom": 1866, - "left": 1107, - "right": 1248 - } - }, - { - "doc_offset": { - "start": 4636, - "end": 4638 - }, - "page_num": 4, - "text": "to", - "position": { - "top": 1837, - "bottom": 1866, - "left": 1269, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 4639, - "end": 4645 - }, - "page_num": 4, - "text": "update", - "position": { - "top": 1835, - "bottom": 1875, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 4646, - "end": 4654 - }, - "page_num": 4, - "text": "existing", - "position": { - "top": 1835, - "bottom": 1875, - "left": 1481, - "right": 1627 - } - }, - { - "doc_offset": { - "start": 4655, - "end": 4659 - }, - "page_num": 4, - "text": "rows", - "position": { - "top": 1843, - "bottom": 1866, - "left": 1650, - "right": 1740 - } - }, - { - "doc_offset": { - "start": 4660, - "end": 4663 - }, - "page_num": 4, - "text": "and", - "position": { - "top": 1835, - "bottom": 1866, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 4664, - "end": 4670 - }, - "page_num": 4, - "text": "insert", - "position": { - "top": 1835, - "bottom": 1866, - "left": 1853, - "right": 1957 - } - }, - { - "doc_offset": { - "start": 4671, - "end": 4674 - }, - "page_num": 4, - "text": "new", - "position": { - "top": 1843, - "bottom": 1866, - "left": 1978, - "right": 2055 - } - }, - { - "doc_offset": { - "start": 4675, - "end": 4679 - }, - "page_num": 4, - "text": "rows", - "position": { - "top": 1843, - "bottom": 1866, - "left": 2076, - "right": 2166 - } - }, - { - "doc_offset": { - "start": 4680, - "end": 4684 - }, - "page_num": 4, - "text": "into", - "position": { - "top": 1835, - "bottom": 1866, - "left": 2188, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 4685, - "end": 4688 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1835, - "bottom": 1866, - "left": 2276, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 4689, - "end": 4696 - }, - "page_num": 4, - "text": "Metrics", - "position": { - "top": 1896, - "bottom": 1928, - "left": 216, - "right": 356 - } - }, - { - "doc_offset": { - "start": 4697, - "end": 4706 - }, - "page_num": 4, - "text": "database.", - "position": { - "top": 1896, - "bottom": 1928, - "left": 371, - "right": 559 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_5_text.txt b/tests/data/etloutput/4288/107456/101155/page_5_text.txt deleted file mode 100644 index d925fde..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_5_text.txt +++ /dev/null @@ -1,42 +0,0 @@ -1.6 -Prediction -Column -id -uuid -Type -Result File Source -Generated by integration5 -label -str -Prediction.Label 6,7 -predicted_value -str -Prediction.Text 8,7 -reviewed_value -str -Prediction.Text 8,7 -submission_file_id -int -model_id -int -Prediction.Document.Id 7 -Prediction.Model.Id 7 -5 Predictions do not have a system-assigned unique identifier. Recommended that the integration pulling this data -generates a unique UUIDv7 for each prediction. -6 For performance reasons, this column should have an index. Depending upon the DBMS, this column may need to -be normalized out, hashed, or otherwise converted to an indexable type. -7 Based on the Result File classes in the Indico Toolkit (available in Python and C# versions). -8 As predictions do not have a system-assigned unique identifier, predicted values and reviewed values must be -matched by similarity within the integration. An example of doing so is available in the Indico-developed -groundtruth program. -Scheduled Process Logic -This is a heavyweight query tied to submissions. Because predictions have no system-assigned unique -identifier, and the identifier assigned by the integration is not stable, predictions must be pulled only once -per submission. This should occur at the terminal state of the submission just before it's omitted from future -processing: i.e. when the submission is marked as retrieved. Once a submission is marked as retrieved, -there should be no further updates to the submission resetting its updatedAt attribute, therefore it will be -omitted from all future runs of the integration. -Data Reconciliation -The output does not include a primary key needed to update existing rows. As such it will only contain new -rows to be inserted into the Metrics database. -formatted by Markdeep 1.17 ✒ \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/101155/page_5_tokens.json b/tests/data/etloutput/4288/107456/101155/page_5_tokens.json deleted file mode 100644 index 0bb8467..0000000 --- a/tests/data/etloutput/4288/107456/101155/page_5_tokens.json +++ /dev/null @@ -1,3712 +0,0 @@ -[ - { - "doc_offset": { - "start": 4707, - "end": 4710 - }, - "page_num": 5, - "text": "1.6", - "position": { - "top": 143, - "bottom": 185, - "left": 219, - "right": 309 - } - }, - { - "doc_offset": { - "start": 4711, - "end": 4721 - }, - "page_num": 5, - "text": "Prediction", - "position": { - "top": 142, - "bottom": 185, - "left": 368, - "right": 680 - } - }, - { - "doc_offset": { - "start": 4722, - "end": 4728 - }, - "page_num": 5, - "text": "Column", - "position": { - "top": 300, - "bottom": 333, - "left": 263, - "right": 421 - } - }, - { - "doc_offset": { - "start": 4729, - "end": 4731 - }, - "page_num": 5, - "text": "id", - "position": { - "top": 408, - "bottom": 440, - "left": 264, - "right": 294 - } - }, - { - "doc_offset": { - "start": 4732, - "end": 4736 - }, - "page_num": 5, - "text": "uuid", - "position": { - "top": 408, - "bottom": 440, - "left": 1015, - "right": 1094 - } - }, - { - "doc_offset": { - "start": 4737, - "end": 4741 - }, - "page_num": 5, - "text": "Type", - "position": { - "top": 301, - "bottom": 340, - "left": 1013, - "right": 1108 - } - }, - { - "doc_offset": { - "start": 4742, - "end": 4748 - }, - "page_num": 5, - "text": "Result", - "position": { - "top": 301, - "bottom": 333, - "left": 1332, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 4749, - "end": 4753 - }, - "page_num": 5, - "text": "File", - "position": { - "top": 301, - "bottom": 333, - "left": 1477, - "right": 1546 - } - }, - { - "doc_offset": { - "start": 4754, - "end": 4760 - }, - "page_num": 5, - "text": "Source", - "position": { - "top": 300, - "bottom": 333, - "left": 1561, - "right": 1706 - } - }, - { - "doc_offset": { - "start": 4761, - "end": 4770 - }, - "page_num": 5, - "text": "Generated", - "position": { - "top": 414, - "bottom": 447, - "left": 1331, - "right": 1532 - } - }, - { - "doc_offset": { - "start": 4771, - "end": 4773 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 415, - "bottom": 455, - "left": 1550, - "right": 1594 - } - }, - { - "doc_offset": { - "start": 4774, - "end": 4786 - }, - "page_num": 5, - "text": "integration5", - "position": { - "top": 412, - "bottom": 455, - "left": 1610, - "right": 1832 - } - }, - { - "doc_offset": { - "start": 4787, - "end": 4792 - }, - "page_num": 5, - "text": "label", - "position": { - "top": 512, - "bottom": 544, - "left": 264, - "right": 350 - } - }, - { - "doc_offset": { - "start": 4793, - "end": 4796 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 514, - "bottom": 544, - "left": 1014, - "right": 1063 - } - }, - { - "doc_offset": { - "start": 4797, - "end": 4813 - }, - "page_num": 5, - "text": "Prediction.Label", - "position": { - "top": 521, - "bottom": 552, - "left": 1347, - "right": 1696 - } - }, - { - "doc_offset": { - "start": 4814, - "end": 4817 - }, - "page_num": 5, - "text": "6,7", - "position": { - "top": 510, - "bottom": 543, - "left": 1717, - "right": 1764 - } - }, - { - "doc_offset": { - "start": 4818, - "end": 4833 - }, - "page_num": 5, - "text": "predicted_value", - "position": { - "top": 615, - "bottom": 655, - "left": 264, - "right": 570 - } - }, - { - "doc_offset": { - "start": 4834, - "end": 4837 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 617, - "bottom": 647, - "left": 1014, - "right": 1063 - } - }, - { - "doc_offset": { - "start": 4838, - "end": 4853 - }, - "page_num": 5, - "text": "Prediction.Text", - "position": { - "top": 624, - "bottom": 655, - "left": 1347, - "right": 1676 - } - }, - { - "doc_offset": { - "start": 4854, - "end": 4857 - }, - "page_num": 5, - "text": "8,7", - "position": { - "top": 613, - "bottom": 646, - "left": 1695, - "right": 1743 - } - }, - { - "doc_offset": { - "start": 4858, - "end": 4872 - }, - "page_num": 5, - "text": "reviewed_value", - "position": { - "top": 718, - "bottom": 755, - "left": 264, - "right": 560 - } - }, - { - "doc_offset": { - "start": 4873, - "end": 4876 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 720, - "bottom": 750, - "left": 1014, - "right": 1063 - } - }, - { - "doc_offset": { - "start": 4877, - "end": 4892 - }, - "page_num": 5, - "text": "Prediction.Text", - "position": { - "top": 727, - "bottom": 758, - "left": 1347, - "right": 1676 - } - }, - { - "doc_offset": { - "start": 4893, - "end": 4896 - }, - "page_num": 5, - "text": "8,7", - "position": { - "top": 716, - "bottom": 748, - "left": 1695, - "right": 1743 - } - }, - { - "doc_offset": { - "start": 4897, - "end": 4915 - }, - "page_num": 5, - "text": "submission_file_id", - "position": { - "top": 820, - "bottom": 857, - "left": 262, - "right": 615 - } - }, - { - "doc_offset": { - "start": 4916, - "end": 4919 - }, - "page_num": 5, - "text": "int", - "position": { - "top": 821, - "bottom": 852, - "left": 1015, - "right": 1059 - } - }, - { - "doc_offset": { - "start": 4920, - "end": 4928 - }, - "page_num": 5, - "text": "model_id", - "position": { - "top": 924, - "bottom": 960, - "left": 264, - "right": 437 - } - }, - { - "doc_offset": { - "start": 4929, - "end": 4932 - }, - "page_num": 5, - "text": "int", - "position": { - "top": 924, - "bottom": 955, - "left": 1015, - "right": 1059 - } - }, - { - "doc_offset": { - "start": 4933, - "end": 4955 - }, - "page_num": 5, - "text": "Prediction.Document.Id", - "position": { - "top": 830, - "bottom": 860, - "left": 1347, - "right": 1832 - } - }, - { - "doc_offset": { - "start": 4956, - "end": 4957 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 826, - "bottom": 851, - "left": 1851, - "right": 1867 - } - }, - { - "doc_offset": { - "start": 4958, - "end": 4977 - }, - "page_num": 5, - "text": "Prediction.Model.Id", - "position": { - "top": 933, - "bottom": 963, - "left": 1347, - "right": 1765 - } - }, - { - "doc_offset": { - "start": 4978, - "end": 4979 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 928, - "bottom": 954, - "left": 1784, - "right": 1800 - } - }, - { - "doc_offset": { - "start": 4980, - "end": 4981 - }, - "page_num": 5, - "text": "5", - "position": { - "top": 1055, - "bottom": 1079, - "left": 213, - "right": 229 - } - }, - { - "doc_offset": { - "start": 4982, - "end": 4993 - }, - "page_num": 5, - "text": "Predictions", - "position": { - "top": 1063, - "bottom": 1093, - "left": 249, - "right": 449 - } - }, - { - "doc_offset": { - "start": 4994, - "end": 4996 - }, - "page_num": 5, - "text": "do", - "position": { - "top": 1063, - "bottom": 1093, - "left": 467, - "right": 511 - } - }, - { - "doc_offset": { - "start": 4997, - "end": 5000 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1065, - "bottom": 1093, - "left": 531, - "right": 585 - } - }, - { - "doc_offset": { - "start": 5001, - "end": 5005 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1063, - "bottom": 1093, - "left": 605, - "right": 688 - } - }, - { - "doc_offset": { - "start": 5006, - "end": 5007 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1071, - "bottom": 1093, - "left": 705, - "right": 725 - } - }, - { - "doc_offset": { - "start": 5008, - "end": 5023 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1063, - "bottom": 1101, - "left": 742, - "right": 1047 - } - }, - { - "doc_offset": { - "start": 5024, - "end": 5030 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1063, - "bottom": 1100, - "left": 1068, - "right": 1187 - } - }, - { - "doc_offset": { - "start": 5031, - "end": 5042 - }, - "page_num": 5, - "text": "identifier.", - "position": { - "top": 1063, - "bottom": 1093, - "left": 1206, - "right": 1363 - } - }, - { - "doc_offset": { - "start": 5043, - "end": 5054 - }, - "page_num": 5, - "text": "Recommended", - "position": { - "top": 1063, - "bottom": 1093, - "left": 1385, - "right": 1658 - } - }, - { - "doc_offset": { - "start": 5055, - "end": 5059 - }, - "page_num": 5, - "text": "that", - "position": { - "top": 1063, - "bottom": 1093, - "left": 1676, - "right": 1745 - } - }, - { - "doc_offset": { - "start": 5060, - "end": 5063 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1063, - "bottom": 1093, - "left": 1761, - "right": 1817 - } - }, - { - "doc_offset": { - "start": 5064, - "end": 5075 - }, - "page_num": 5, - "text": "integration", - "position": { - "top": 1063, - "bottom": 1101, - "left": 1836, - "right": 2024 - } - }, - { - "doc_offset": { - "start": 5076, - "end": 5083 - }, - "page_num": 5, - "text": "pulling", - "position": { - "top": 1063, - "bottom": 1101, - "left": 2044, - "right": 2159 - } - }, - { - "doc_offset": { - "start": 5084, - "end": 5088 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1063, - "bottom": 1093, - "left": 2177, - "right": 2240 - } - }, - { - "doc_offset": { - "start": 5089, - "end": 5093 - }, - "page_num": 5, - "text": "data", - "position": { - "top": 1063, - "bottom": 1093, - "left": 2258, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5094, - "end": 5103 - }, - "page_num": 5, - "text": "generates", - "position": { - "top": 1112, - "bottom": 1148, - "left": 245, - "right": 422 - } - }, - { - "doc_offset": { - "start": 5104, - "end": 5105 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1118, - "bottom": 1140, - "left": 436, - "right": 456 - } - }, - { - "doc_offset": { - "start": 5106, - "end": 5112 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1110, - "bottom": 1147, - "left": 470, - "right": 589 - } - }, - { - "doc_offset": { - "start": 5113, - "end": 5119 - }, - "page_num": 5, - "text": "UUIDv7", - "position": { - "top": 1110, - "bottom": 1140, - "left": 605, - "right": 740 - } - }, - { - "doc_offset": { - "start": 5120, - "end": 5123 - }, - "page_num": 5, - "text": "for", - "position": { - "top": 1110, - "bottom": 1140, - "left": 754, - "right": 803 - } - }, - { - "doc_offset": { - "start": 5124, - "end": 5128 - }, - "page_num": 5, - "text": "each", - "position": { - "top": 1110, - "bottom": 1140, - "left": 815, - "right": 899 - } - }, - { - "doc_offset": { - "start": 5129, - "end": 5140 - }, - "page_num": 5, - "text": "prediction.", - "position": { - "top": 1110, - "bottom": 1147, - "left": 916, - "right": 1103 - } - }, - { - "doc_offset": { - "start": 5141, - "end": 5142 - }, - "page_num": 5, - "text": "6", - "position": { - "top": 1204, - "bottom": 1228, - "left": 213, - "right": 230 - } - }, - { - "doc_offset": { - "start": 5143, - "end": 5146 - }, - "page_num": 5, - "text": "For", - "position": { - "top": 1213, - "bottom": 1242, - "left": 246, - "right": 303 - } - }, - { - "doc_offset": { - "start": 5147, - "end": 5158 - }, - "page_num": 5, - "text": "performance", - "position": { - "top": 1212, - "bottom": 1250, - "left": 318, - "right": 546 - } - }, - { - "doc_offset": { - "start": 5159, - "end": 5167 - }, - "page_num": 5, - "text": "reasons,", - "position": { - "top": 1220, - "bottom": 1247, - "left": 561, - "right": 710 - } - }, - { - "doc_offset": { - "start": 5168, - "end": 5172 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1213, - "bottom": 1242, - "left": 726, - "right": 789 - } - }, - { - "doc_offset": { - "start": 5173, - "end": 5179 - }, - "page_num": 5, - "text": "column", - "position": { - "top": 1213, - "bottom": 1242, - "left": 804, - "right": 934 - } - }, - { - "doc_offset": { - "start": 5180, - "end": 5186 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 1213, - "bottom": 1242, - "left": 950, - "right": 1068 - } - }, - { - "doc_offset": { - "start": 5187, - "end": 5191 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1213, - "bottom": 1242, - "left": 1085, - "right": 1168 - } - }, - { - "doc_offset": { - "start": 5192, - "end": 5194 - }, - "page_num": 5, - "text": "an", - "position": { - "top": 1220, - "bottom": 1242, - "left": 1183, - "right": 1223 - } - }, - { - "doc_offset": { - "start": 5195, - "end": 5201 - }, - "page_num": 5, - "text": "index.", - "position": { - "top": 1213, - "bottom": 1242, - "left": 1241, - "right": 1344 - } - }, - { - "doc_offset": { - "start": 5202, - "end": 5211 - }, - "page_num": 5, - "text": "Depending", - "position": { - "top": 1213, - "bottom": 1250, - "left": 1363, - "right": 1555 - } - }, - { - "doc_offset": { - "start": 5212, - "end": 5216 - }, - "page_num": 5, - "text": "upon", - "position": { - "top": 1220, - "bottom": 1250, - "left": 1573, - "right": 1660 - } - }, - { - "doc_offset": { - "start": 5217, - "end": 5220 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1213, - "bottom": 1242, - "left": 1676, - "right": 1731 - } - }, - { - "doc_offset": { - "start": 5221, - "end": 5226 - }, - "page_num": 5, - "text": "DBMS,", - "position": { - "top": 1212, - "bottom": 1247, - "left": 1748, - "right": 1871 - } - }, - { - "doc_offset": { - "start": 5227, - "end": 5231 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1213, - "bottom": 1242, - "left": 1886, - "right": 1950 - } - }, - { - "doc_offset": { - "start": 5232, - "end": 5238 - }, - "page_num": 5, - "text": "column", - "position": { - "top": 1213, - "bottom": 1242, - "left": 1965, - "right": 2094 - } - }, - { - "doc_offset": { - "start": 5239, - "end": 5242 - }, - "page_num": 5, - "text": "may", - "position": { - "top": 1220, - "bottom": 1250, - "left": 2112, - "right": 2186 - } - }, - { - "doc_offset": { - "start": 5243, - "end": 5247 - }, - "page_num": 5, - "text": "need", - "position": { - "top": 1213, - "bottom": 1242, - "left": 2201, - "right": 2286 - } - }, - { - "doc_offset": { - "start": 5248, - "end": 5250 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1214, - "bottom": 1242, - "left": 2301, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5251, - "end": 5253 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1259, - "bottom": 1289, - "left": 246, - "right": 288 - } - }, - { - "doc_offset": { - "start": 5254, - "end": 5264 - }, - "page_num": 5, - "text": "normalized", - "position": { - "top": 1259, - "bottom": 1289, - "left": 303, - "right": 497 - } - }, - { - "doc_offset": { - "start": 5265, - "end": 5269 - }, - "page_num": 5, - "text": "out,", - "position": { - "top": 1261, - "bottom": 1294, - "left": 513, - "right": 578 - } - }, - { - "doc_offset": { - "start": 5270, - "end": 5277 - }, - "page_num": 5, - "text": "hashed,", - "position": { - "top": 1259, - "bottom": 1294, - "left": 595, - "right": 734 - } - }, - { - "doc_offset": { - "start": 5278, - "end": 5280 - }, - "page_num": 5, - "text": "or", - "position": { - "top": 1267, - "bottom": 1289, - "left": 750, - "right": 785 - } - }, - { - "doc_offset": { - "start": 5281, - "end": 5290 - }, - "page_num": 5, - "text": "otherwise", - "position": { - "top": 1259, - "bottom": 1289, - "left": 798, - "right": 972 - } - }, - { - "doc_offset": { - "start": 5291, - "end": 5300 - }, - "page_num": 5, - "text": "converted", - "position": { - "top": 1259, - "bottom": 1289, - "left": 985, - "right": 1163 - } - }, - { - "doc_offset": { - "start": 5301, - "end": 5303 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1261, - "bottom": 1289, - "left": 1178, - "right": 1212 - } - }, - { - "doc_offset": { - "start": 5304, - "end": 5306 - }, - "page_num": 5, - "text": "an", - "position": { - "top": 1267, - "bottom": 1289, - "left": 1226, - "right": 1267 - } - }, - { - "doc_offset": { - "start": 5307, - "end": 5316 - }, - "page_num": 5, - "text": "indexable", - "position": { - "top": 1259, - "bottom": 1289, - "left": 1283, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 5317, - "end": 5322 - }, - "page_num": 5, - "text": "type.", - "position": { - "top": 1261, - "bottom": 1297, - "left": 1468, - "right": 1554 - } - }, - { - "doc_offset": { - "start": 5323, - "end": 5324 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 1353, - "bottom": 1377, - "left": 214, - "right": 229 - } - }, - { - "doc_offset": { - "start": 5325, - "end": 5330 - }, - "page_num": 5, - "text": "Based", - "position": { - "top": 1362, - "bottom": 1391, - "left": 245, - "right": 355 - } - }, - { - "doc_offset": { - "start": 5331, - "end": 5333 - }, - "page_num": 5, - "text": "on", - "position": { - "top": 1369, - "bottom": 1391, - "left": 371, - "right": 413 - } - }, - { - "doc_offset": { - "start": 5334, - "end": 5337 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1362, - "bottom": 1391, - "left": 427, - "right": 483 - } - }, - { - "doc_offset": { - "start": 5338, - "end": 5344 - }, - "page_num": 5, - "text": "Result", - "position": { - "top": 1362, - "bottom": 1391, - "left": 498, - "right": 608 - } - }, - { - "doc_offset": { - "start": 5345, - "end": 5349 - }, - "page_num": 5, - "text": "File", - "position": { - "top": 1362, - "bottom": 1391, - "left": 624, - "right": 683 - } - }, - { - "doc_offset": { - "start": 5350, - "end": 5357 - }, - "page_num": 5, - "text": "classes", - "position": { - "top": 1362, - "bottom": 1391, - "left": 697, - "right": 829 - } - }, - { - "doc_offset": { - "start": 5358, - "end": 5360 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1362, - "bottom": 1391, - "left": 845, - "right": 871 - } - }, - { - "doc_offset": { - "start": 5361, - "end": 5364 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1362, - "bottom": 1391, - "left": 885, - "right": 941 - } - }, - { - "doc_offset": { - "start": 5365, - "end": 5371 - }, - "page_num": 5, - "text": "Indico", - "position": { - "top": 1362, - "bottom": 1391, - "left": 957, - "right": 1063 - } - }, - { - "doc_offset": { - "start": 5372, - "end": 5379 - }, - "page_num": 5, - "text": "Toolkit", - "position": { - "top": 1362, - "bottom": 1391, - "left": 1076, - "right": 1192 - } - }, - { - "doc_offset": { - "start": 5380, - "end": 5390 - }, - "page_num": 5, - "text": "(available", - "position": { - "top": 1361, - "bottom": 1399, - "left": 1207, - "right": 1373 - } - }, - { - "doc_offset": { - "start": 5391, - "end": 5393 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1362, - "bottom": 1391, - "left": 1388, - "right": 1414 - } - }, - { - "doc_offset": { - "start": 5394, - "end": 5400 - }, - "page_num": 5, - "text": "Python", - "position": { - "top": 1360, - "bottom": 1400, - "left": 1430, - "right": 1556 - } - }, - { - "doc_offset": { - "start": 5401, - "end": 5404 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1362, - "bottom": 1391, - "left": 1569, - "right": 1634 - } - }, - { - "doc_offset": { - "start": 5405, - "end": 5407 - }, - "page_num": 5, - "text": "C#", - "position": { - "top": 1362, - "bottom": 1391, - "left": 1649, - "right": 1697 - } - }, - { - "doc_offset": { - "start": 5408, - "end": 5418 - }, - "page_num": 5, - "text": "versions).", - "position": { - "top": 1361, - "bottom": 1399, - "left": 1712, - "right": 1881 - } - }, - { - "doc_offset": { - "start": 5419, - "end": 5420 - }, - "page_num": 5, - "text": "8", - "position": { - "top": 1456, - "bottom": 1481, - "left": 213, - "right": 229 - } - }, - { - "doc_offset": { - "start": 5421, - "end": 5423 - }, - "page_num": 5, - "text": "As", - "position": { - "top": 1465, - "bottom": 1495, - "left": 248, - "right": 293 - } - }, - { - "doc_offset": { - "start": 5424, - "end": 5435 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1465, - "bottom": 1502, - "left": 315, - "right": 513 - } - }, - { - "doc_offset": { - "start": 5436, - "end": 5438 - }, - "page_num": 5, - "text": "do", - "position": { - "top": 1465, - "bottom": 1495, - "left": 532, - "right": 577 - } - }, - { - "doc_offset": { - "start": 5439, - "end": 5442 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1467, - "bottom": 1495, - "left": 598, - "right": 653 - } - }, - { - "doc_offset": { - "start": 5443, - "end": 5447 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1465, - "bottom": 1495, - "left": 674, - "right": 757 - } - }, - { - "doc_offset": { - "start": 5448, - "end": 5449 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1473, - "bottom": 1495, - "left": 777, - "right": 797 - } - }, - { - "doc_offset": { - "start": 5450, - "end": 5465 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1465, - "bottom": 1503, - "left": 816, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 5466, - "end": 5472 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1465, - "bottom": 1502, - "left": 1144, - "right": 1263 - } - }, - { - "doc_offset": { - "start": 5473, - "end": 5484 - }, - "page_num": 5, - "text": "identifier,", - "position": { - "top": 1465, - "bottom": 1500, - "left": 1284, - "right": 1441 - } - }, - { - "doc_offset": { - "start": 5485, - "end": 5494 - }, - "page_num": 5, - "text": "predicted", - "position": { - "top": 1465, - "bottom": 1502, - "left": 1465, - "right": 1632 - } - }, - { - "doc_offset": { - "start": 5495, - "end": 5501 - }, - "page_num": 5, - "text": "values", - "position": { - "top": 1465, - "bottom": 1495, - "left": 1652, - "right": 1766 - } - }, - { - "doc_offset": { - "start": 5502, - "end": 5505 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1465, - "bottom": 1495, - "left": 1786, - "right": 1851 - } - }, - { - "doc_offset": { - "start": 5506, - "end": 5514 - }, - "page_num": 5, - "text": "reviewed", - "position": { - "top": 1465, - "bottom": 1495, - "left": 1873, - "right": 2030 - } - }, - { - "doc_offset": { - "start": 5515, - "end": 5521 - }, - "page_num": 5, - "text": "values", - "position": { - "top": 1465, - "bottom": 1495, - "left": 2051, - "right": 2165 - } - }, - { - "doc_offset": { - "start": 5522, - "end": 5526 - }, - "page_num": 5, - "text": "must", - "position": { - "top": 1467, - "bottom": 1495, - "left": 2186, - "right": 2273 - } - }, - { - "doc_offset": { - "start": 5527, - "end": 5529 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1465, - "bottom": 1495, - "left": 2294, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5530, - "end": 5537 - }, - "page_num": 5, - "text": "matched", - "position": { - "top": 1512, - "bottom": 1541, - "left": 246, - "right": 400 - } - }, - { - "doc_offset": { - "start": 5538, - "end": 5540 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 1512, - "bottom": 1549, - "left": 431, - "right": 473 - } - }, - { - "doc_offset": { - "start": 5541, - "end": 5551 - }, - "page_num": 5, - "text": "similarity", - "position": { - "top": 1512, - "bottom": 1549, - "left": 500, - "right": 658 - } - }, - { - "doc_offset": { - "start": 5552, - "end": 5558 - }, - "page_num": 5, - "text": "within", - "position": { - "top": 1512, - "bottom": 1541, - "left": 684, - "right": 788 - } - }, - { - "doc_offset": { - "start": 5559, - "end": 5562 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1512, - "bottom": 1541, - "left": 816, - "right": 872 - } - }, - { - "doc_offset": { - "start": 5563, - "end": 5575 - }, - "page_num": 5, - "text": "integration.", - "position": { - "top": 1512, - "bottom": 1550, - "left": 901, - "right": 1099 - } - }, - { - "doc_offset": { - "start": 5576, - "end": 5578 - }, - "page_num": 5, - "text": "An", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1128, - "right": 1174 - } - }, - { - "doc_offset": { - "start": 5579, - "end": 5586 - }, - "page_num": 5, - "text": "example", - "position": { - "top": 1512, - "bottom": 1549, - "left": 1204, - "right": 1356 - } - }, - { - "doc_offset": { - "start": 5587, - "end": 5589 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1384, - "right": 1418 - } - }, - { - "doc_offset": { - "start": 5590, - "end": 5595 - }, - "page_num": 5, - "text": "doing", - "position": { - "top": 1512, - "bottom": 1550, - "left": 1445, - "right": 1543 - } - }, - { - "doc_offset": { - "start": 5596, - "end": 5598 - }, - "page_num": 5, - "text": "so", - "position": { - "top": 1520, - "bottom": 1541, - "left": 1572, - "right": 1613 - } - }, - { - "doc_offset": { - "start": 5599, - "end": 5601 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1643, - "right": 1668 - } - }, - { - "doc_offset": { - "start": 5602, - "end": 5611 - }, - "page_num": 5, - "text": "available", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1697, - "right": 1853 - } - }, - { - "doc_offset": { - "start": 5612, - "end": 5614 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1882, - "right": 1908 - } - }, - { - "doc_offset": { - "start": 5615, - "end": 5618 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1512, - "bottom": 1541, - "left": 1937, - "right": 1993 - } - }, - { - "doc_offset": { - "start": 5619, - "end": 5635 - }, - "page_num": 5, - "text": "Indico-developed", - "position": { - "top": 1512, - "bottom": 1549, - "left": 2023, - "right": 2334 - } - }, - { - "doc_offset": { - "start": 5636, - "end": 5647 - }, - "page_num": 5, - "text": "groundtruth", - "position": { - "top": 1557, - "bottom": 1597, - "left": 244, - "right": 464 - } - }, - { - "doc_offset": { - "start": 5648, - "end": 5656 - }, - "page_num": 5, - "text": "program.", - "position": { - "top": 1566, - "bottom": 1596, - "left": 479, - "right": 638 - } - }, - { - "doc_offset": { - "start": 5657, - "end": 5666 - }, - "page_num": 5, - "text": "Scheduled", - "position": { - "top": 1657, - "bottom": 1690, - "left": 213, - "right": 430 - } - }, - { - "doc_offset": { - "start": 5667, - "end": 5674 - }, - "page_num": 5, - "text": "Process", - "position": { - "top": 1658, - "bottom": 1689, - "left": 448, - "right": 613 - } - }, - { - "doc_offset": { - "start": 5675, - "end": 5680 - }, - "page_num": 5, - "text": "Logic", - "position": { - "top": 1658, - "bottom": 1697, - "left": 629, - "right": 741 - } - }, - { - "doc_offset": { - "start": 5681, - "end": 5685 - }, - "page_num": 5, - "text": "This", - "position": { - "top": 1762, - "bottom": 1793, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 5686, - "end": 5688 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1762, - "bottom": 1793, - "left": 317, - "right": 344 - } - }, - { - "doc_offset": { - "start": 5689, - "end": 5690 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1770, - "bottom": 1793, - "left": 368, - "right": 389 - } - }, - { - "doc_offset": { - "start": 5691, - "end": 5702 - }, - "page_num": 5, - "text": "heavyweight", - "position": { - "top": 1762, - "bottom": 1802, - "left": 413, - "right": 654 - } - }, - { - "doc_offset": { - "start": 5703, - "end": 5708 - }, - "page_num": 5, - "text": "query", - "position": { - "top": 1770, - "bottom": 1802, - "left": 678, - "right": 786 - } - }, - { - "doc_offset": { - "start": 5709, - "end": 5713 - }, - "page_num": 5, - "text": "tied", - "position": { - "top": 1762, - "bottom": 1793, - "left": 808, - "right": 877 - } - }, - { - "doc_offset": { - "start": 5714, - "end": 5716 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1763, - "bottom": 1793, - "left": 901, - "right": 938 - } - }, - { - "doc_offset": { - "start": 5717, - "end": 5729 - }, - "page_num": 5, - "text": "submissions.", - "position": { - "top": 1762, - "bottom": 1793, - "left": 962, - "right": 1213 - } - }, - { - "doc_offset": { - "start": 5730, - "end": 5737 - }, - "page_num": 5, - "text": "Because", - "position": { - "top": 1762, - "bottom": 1793, - "left": 1241, - "right": 1407 - } - }, - { - "doc_offset": { - "start": 5738, - "end": 5749 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1762, - "bottom": 1801, - "left": 1432, - "right": 1644 - } - }, - { - "doc_offset": { - "start": 5750, - "end": 5754 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1762, - "bottom": 1793, - "left": 1669, - "right": 1759 - } - }, - { - "doc_offset": { - "start": 5755, - "end": 5757 - }, - "page_num": 5, - "text": "no", - "position": { - "top": 1770, - "bottom": 1793, - "left": 1783, - "right": 1829 - } - }, - { - "doc_offset": { - "start": 5758, - "end": 5773 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1762, - "bottom": 1802, - "left": 1852, - "right": 2181 - } - }, - { - "doc_offset": { - "start": 5774, - "end": 5780 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1762, - "bottom": 1801, - "left": 2208, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5781, - "end": 5792 - }, - "page_num": 5, - "text": "identifier,", - "position": { - "top": 1823, - "bottom": 1860, - "left": 215, - "right": 384 - } - }, - { - "doc_offset": { - "start": 5793, - "end": 5796 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1823, - "bottom": 1855, - "left": 406, - "right": 475 - } - }, - { - "doc_offset": { - "start": 5797, - "end": 5800 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1823, - "bottom": 1855, - "left": 495, - "right": 556 - } - }, - { - "doc_offset": { - "start": 5801, - "end": 5811 - }, - "page_num": 5, - "text": "identifier", - "position": { - "top": 1823, - "bottom": 1855, - "left": 576, - "right": 741 - } - }, - { - "doc_offset": { - "start": 5812, - "end": 5820 - }, - "page_num": 5, - "text": "assigned", - "position": { - "top": 1823, - "bottom": 1863, - "left": 759, - "right": 931 - } - }, - { - "doc_offset": { - "start": 5821, - "end": 5823 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 1823, - "bottom": 1863, - "left": 953, - "right": 998 - } - }, - { - "doc_offset": { - "start": 5824, - "end": 5827 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1823, - "bottom": 1855, - "left": 1015, - "right": 1076 - } - }, - { - "doc_offset": { - "start": 5828, - "end": 5839 - }, - "page_num": 5, - "text": "integration", - "position": { - "top": 1823, - "bottom": 1863, - "left": 1096, - "right": 1298 - } - }, - { - "doc_offset": { - "start": 5840, - "end": 5842 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1823, - "bottom": 1855, - "left": 1320, - "right": 1348 - } - }, - { - "doc_offset": { - "start": 5843, - "end": 5846 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1825, - "bottom": 1855, - "left": 1369, - "right": 1428 - } - }, - { - "doc_offset": { - "start": 5847, - "end": 5854 - }, - "page_num": 5, - "text": "stable,", - "position": { - "top": 1823, - "bottom": 1860, - "left": 1447, - "right": 1572 - } - }, - { - "doc_offset": { - "start": 5855, - "end": 5866 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1823, - "bottom": 1863, - "left": 1596, - "right": 1809 - } - }, - { - "doc_offset": { - "start": 5867, - "end": 5871 - }, - "page_num": 5, - "text": "must", - "position": { - "top": 1825, - "bottom": 1855, - "left": 1830, - "right": 1923 - } - }, - { - "doc_offset": { - "start": 5872, - "end": 5874 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1823, - "bottom": 1855, - "left": 1944, - "right": 1989 - } - }, - { - "doc_offset": { - "start": 5875, - "end": 5881 - }, - "page_num": 5, - "text": "pulled", - "position": { - "top": 1823, - "bottom": 1863, - "left": 2010, - "right": 2123 - } - }, - { - "doc_offset": { - "start": 5882, - "end": 5886 - }, - "page_num": 5, - "text": "only", - "position": { - "top": 1823, - "bottom": 1863, - "left": 2144, - "right": 2224 - } - }, - { - "doc_offset": { - "start": 5887, - "end": 5891 - }, - "page_num": 5, - "text": "once", - "position": { - "top": 1831, - "bottom": 1855, - "left": 2242, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5892, - "end": 5895 - }, - "page_num": 5, - "text": "per", - "position": { - "top": 1892, - "bottom": 1924, - "left": 215, - "right": 276 - } - }, - { - "doc_offset": { - "start": 5896, - "end": 5907 - }, - "page_num": 5, - "text": "submission.", - "position": { - "top": 1884, - "bottom": 1916, - "left": 291, - "right": 520 - } - }, - { - "doc_offset": { - "start": 5908, - "end": 5912 - }, - "page_num": 5, - "text": "This", - "position": { - "top": 1884, - "bottom": 1916, - "left": 537, - "right": 617 - } - }, - { - "doc_offset": { - "start": 5913, - "end": 5919 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 1884, - "bottom": 1916, - "left": 633, - "right": 760 - } - }, - { - "doc_offset": { - "start": 5920, - "end": 5925 - }, - "page_num": 5, - "text": "occur", - "position": { - "top": 1892, - "bottom": 1916, - "left": 777, - "right": 887 - } - }, - { - "doc_offset": { - "start": 5926, - "end": 5928 - }, - "page_num": 5, - "text": "at", - "position": { - "top": 1886, - "bottom": 1916, - "left": 902, - "right": 936 - } - }, - { - "doc_offset": { - "start": 5929, - "end": 5932 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1884, - "bottom": 1916, - "left": 951, - "right": 1011 - } - }, - { - "doc_offset": { - "start": 5933, - "end": 5941 - }, - "page_num": 5, - "text": "terminal", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1026, - "right": 1179 - } - }, - { - "doc_offset": { - "start": 5942, - "end": 5947 - }, - "page_num": 5, - "text": "state", - "position": { - "top": 1886, - "bottom": 1916, - "left": 1197, - "right": 1291 - } - }, - { - "doc_offset": { - "start": 5948, - "end": 5950 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1307, - "right": 1343 - } - }, - { - "doc_offset": { - "start": 5951, - "end": 5954 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1357, - "right": 1417 - } - }, - { - "doc_offset": { - "start": 5955, - "end": 5965 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1433, - "right": 1651 - } - }, - { - "doc_offset": { - "start": 5966, - "end": 5970 - }, - "page_num": 5, - "text": "just", - "position": { - "top": 1884, - "bottom": 1924, - "left": 1667, - "right": 1735 - } - }, - { - "doc_offset": { - "start": 5971, - "end": 5977 - }, - "page_num": 5, - "text": "before", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1753, - "right": 1874 - } - }, - { - "doc_offset": { - "start": 5978, - "end": 5982 - }, - "page_num": 5, - "text": "it's", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1891, - "right": 1945 - } - }, - { - "doc_offset": { - "start": 5983, - "end": 5990 - }, - "page_num": 5, - "text": "omitted", - "position": { - "top": 1884, - "bottom": 1916, - "left": 1961, - "right": 2105 - } - }, - { - "doc_offset": { - "start": 5991, - "end": 5995 - }, - "page_num": 5, - "text": "from", - "position": { - "top": 1884, - "bottom": 1916, - "left": 2122, - "right": 2208 - } - }, - { - "doc_offset": { - "start": 5996, - "end": 6002 - }, - "page_num": 5, - "text": "future", - "position": { - "top": 1884, - "bottom": 1916, - "left": 2225, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 6003, - "end": 6014 - }, - "page_num": 5, - "text": "processing:", - "position": { - "top": 1945, - "bottom": 1986, - "left": 215, - "right": 435 - } - }, - { - "doc_offset": { - "start": 6015, - "end": 6019 - }, - "page_num": 5, - "text": "i.e.", - "position": { - "top": 1945, - "bottom": 1977, - "left": 461, - "right": 512 - } - }, - { - "doc_offset": { - "start": 6020, - "end": 6024 - }, - "page_num": 5, - "text": "when", - "position": { - "top": 1945, - "bottom": 1977, - "left": 536, - "right": 637 - } - }, - { - "doc_offset": { - "start": 6025, - "end": 6028 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1945, - "bottom": 1977, - "left": 660, - "right": 720 - } - }, - { - "doc_offset": { - "start": 6029, - "end": 6039 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1945, - "bottom": 1977, - "left": 741, - "right": 959 - } - }, - { - "doc_offset": { - "start": 6040, - "end": 6042 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1945, - "bottom": 1977, - "left": 984, - "right": 1012 - } - }, - { - "doc_offset": { - "start": 6043, - "end": 6049 - }, - "page_num": 5, - "text": "marked", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1035, - "right": 1177 - } - }, - { - "doc_offset": { - "start": 6050, - "end": 6052 - }, - "page_num": 5, - "text": "as", - "position": { - "top": 1953, - "bottom": 1977, - "left": 1200, - "right": 1243 - } - }, - { - "doc_offset": { - "start": 6053, - "end": 6063 - }, - "page_num": 5, - "text": "retrieved.", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1266, - "right": 1442 - } - }, - { - "doc_offset": { - "start": 6064, - "end": 6068 - }, - "page_num": 5, - "text": "Once", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1467, - "right": 1568 - } - }, - { - "doc_offset": { - "start": 6069, - "end": 6070 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1953, - "bottom": 1977, - "left": 1590, - "right": 1611 - } - }, - { - "doc_offset": { - "start": 6071, - "end": 6081 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1633, - "right": 1851 - } - }, - { - "doc_offset": { - "start": 6082, - "end": 6084 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1876, - "right": 1903 - } - }, - { - "doc_offset": { - "start": 6085, - "end": 6091 - }, - "page_num": 5, - "text": "marked", - "position": { - "top": 1945, - "bottom": 1977, - "left": 1926, - "right": 2068 - } - }, - { - "doc_offset": { - "start": 6092, - "end": 6094 - }, - "page_num": 5, - "text": "as", - "position": { - "top": 1953, - "bottom": 1977, - "left": 2092, - "right": 2134 - } - }, - { - "doc_offset": { - "start": 6095, - "end": 6105 - }, - "page_num": 5, - "text": "retrieved,", - "position": { - "top": 1945, - "bottom": 1983, - "left": 2157, - "right": 2333 - } - }, - { - "doc_offset": { - "start": 6106, - "end": 6111 - }, - "page_num": 5, - "text": "there", - "position": { - "top": 2007, - "bottom": 2038, - "left": 212, - "right": 310 - } - }, - { - "doc_offset": { - "start": 6112, - "end": 6118 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 2007, - "bottom": 2038, - "left": 328, - "right": 455 - } - }, - { - "doc_offset": { - "start": 6119, - "end": 6121 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 2007, - "bottom": 2038, - "left": 477, - "right": 522 - } - }, - { - "doc_offset": { - "start": 6122, - "end": 6124 - }, - "page_num": 5, - "text": "no", - "position": { - "top": 2015, - "bottom": 2038, - "left": 542, - "right": 587 - } - }, - { - "doc_offset": { - "start": 6125, - "end": 6132 - }, - "page_num": 5, - "text": "further", - "position": { - "top": 2006, - "bottom": 2038, - "left": 605, - "right": 733 - } - }, - { - "doc_offset": { - "start": 6133, - "end": 6140 - }, - "page_num": 5, - "text": "updates", - "position": { - "top": 2007, - "bottom": 2046, - "left": 752, - "right": 906 - } - }, - { - "doc_offset": { - "start": 6141, - "end": 6143 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2008, - "bottom": 2038, - "left": 924, - "right": 961 - } - }, - { - "doc_offset": { - "start": 6144, - "end": 6147 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2007, - "bottom": 2038, - "left": 979, - "right": 1039 - } - }, - { - "doc_offset": { - "start": 6148, - "end": 6158 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 2007, - "bottom": 2038, - "left": 1057, - "right": 1275 - } - }, - { - "doc_offset": { - "start": 6159, - "end": 6168 - }, - "page_num": 5, - "text": "resetting", - "position": { - "top": 2007, - "bottom": 2047, - "left": 1297, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 6169, - "end": 6172 - }, - "page_num": 5, - "text": "its", - "position": { - "top": 2007, - "bottom": 2038, - "left": 1482, - "right": 1523 - } - }, - { - "doc_offset": { - "start": 6173, - "end": 6182 - }, - "page_num": 5, - "text": "updatedAt", - "position": { - "top": 2009, - "bottom": 2046, - "left": 1558, - "right": 1753 - } - }, - { - "doc_offset": { - "start": 6183, - "end": 6193 - }, - "page_num": 5, - "text": "attribute,", - "position": { - "top": 2007, - "bottom": 2044, - "left": 1789, - "right": 1959 - } - }, - { - "doc_offset": { - "start": 6194, - "end": 6203 - }, - "page_num": 5, - "text": "therefore", - "position": { - "top": 2006, - "bottom": 2038, - "left": 1979, - "right": 2152 - } - }, - { - "doc_offset": { - "start": 6204, - "end": 6206 - }, - "page_num": 5, - "text": "it", - "position": { - "top": 2007, - "bottom": 2038, - "left": 2172, - "right": 2191 - } - }, - { - "doc_offset": { - "start": 6207, - "end": 6211 - }, - "page_num": 5, - "text": "will", - "position": { - "top": 2007, - "bottom": 2038, - "left": 2210, - "right": 2268 - } - }, - { - "doc_offset": { - "start": 6212, - "end": 6214 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 2007, - "bottom": 2038, - "left": 2291, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 6215, - "end": 6222 - }, - "page_num": 5, - "text": "omitted", - "position": { - "top": 2068, - "bottom": 2100, - "left": 214, - "right": 358 - } - }, - { - "doc_offset": { - "start": 6223, - "end": 6227 - }, - "page_num": 5, - "text": "from", - "position": { - "top": 2067, - "bottom": 2100, - "left": 374, - "right": 460 - } - }, - { - "doc_offset": { - "start": 6228, - "end": 6231 - }, - "page_num": 5, - "text": "all", - "position": { - "top": 2068, - "bottom": 2100, - "left": 476, - "right": 515 - } - }, - { - "doc_offset": { - "start": 6232, - "end": 6238 - }, - "page_num": 5, - "text": "future", - "position": { - "top": 2067, - "bottom": 2100, - "left": 530, - "right": 642 - } - }, - { - "doc_offset": { - "start": 6239, - "end": 6243 - }, - "page_num": 5, - "text": "runs", - "position": { - "top": 2076, - "bottom": 2100, - "left": 657, - "right": 739 - } - }, - { - "doc_offset": { - "start": 6244, - "end": 6246 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 2067, - "bottom": 2100, - "left": 754, - "right": 790 - } - }, - { - "doc_offset": { - "start": 6247, - "end": 6250 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2068, - "bottom": 2100, - "left": 803, - "right": 863 - } - }, - { - "doc_offset": { - "start": 6251, - "end": 6263 - }, - "page_num": 5, - "text": "integration.", - "position": { - "top": 2068, - "bottom": 2108, - "left": 879, - "right": 1092 - } - }, - { - "doc_offset": { - "start": 6264, - "end": 6268 - }, - "page_num": 5, - "text": "Data", - "position": { - "top": 2174, - "bottom": 2206, - "left": 215, - "right": 308 - } - }, - { - "doc_offset": { - "start": 6269, - "end": 6283 - }, - "page_num": 5, - "text": "Reconciliation", - "position": { - "top": 2174, - "bottom": 2206, - "left": 325, - "right": 618 - } - }, - { - "doc_offset": { - "start": 6284, - "end": 6287 - }, - "page_num": 5, - "text": "The", - "position": { - "top": 2278, - "bottom": 2310, - "left": 212, - "right": 284 - } - }, - { - "doc_offset": { - "start": 6288, - "end": 6294 - }, - "page_num": 5, - "text": "output", - "position": { - "top": 2280, - "bottom": 2318, - "left": 301, - "right": 425 - } - }, - { - "doc_offset": { - "start": 6295, - "end": 6299 - }, - "page_num": 5, - "text": "does", - "position": { - "top": 2278, - "bottom": 2310, - "left": 442, - "right": 536 - } - }, - { - "doc_offset": { - "start": 6300, - "end": 6303 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 2280, - "bottom": 2310, - "left": 554, - "right": 613 - } - }, - { - "doc_offset": { - "start": 6304, - "end": 6311 - }, - "page_num": 5, - "text": "include", - "position": { - "top": 2278, - "bottom": 2310, - "left": 632, - "right": 769 - } - }, - { - "doc_offset": { - "start": 6312, - "end": 6313 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 2286, - "bottom": 2310, - "left": 785, - "right": 807 - } - }, - { - "doc_offset": { - "start": 6314, - "end": 6321 - }, - "page_num": 5, - "text": "primary", - "position": { - "top": 2278, - "bottom": 2318, - "left": 824, - "right": 969 - } - }, - { - "doc_offset": { - "start": 6322, - "end": 6325 - }, - "page_num": 5, - "text": "key", - "position": { - "top": 2278, - "bottom": 2318, - "left": 986, - "right": 1051 - } - }, - { - "doc_offset": { - "start": 6326, - "end": 6332 - }, - "page_num": 5, - "text": "needed", - "position": { - "top": 2278, - "bottom": 2310, - "left": 1068, - "right": 1209 - } - }, - { - "doc_offset": { - "start": 6333, - "end": 6335 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2280, - "bottom": 2310, - "left": 1227, - "right": 1264 - } - }, - { - "doc_offset": { - "start": 6336, - "end": 6342 - }, - "page_num": 5, - "text": "update", - "position": { - "top": 2278, - "bottom": 2318, - "left": 1282, - "right": 1415 - } - }, - { - "doc_offset": { - "start": 6343, - "end": 6351 - }, - "page_num": 5, - "text": "existing", - "position": { - "top": 2278, - "bottom": 2318, - "left": 1432, - "right": 1578 - } - }, - { - "doc_offset": { - "start": 6352, - "end": 6357 - }, - "page_num": 5, - "text": "rows.", - "position": { - "top": 2286, - "bottom": 2310, - "left": 1598, - "right": 1698 - } - }, - { - "doc_offset": { - "start": 6358, - "end": 6360 - }, - "page_num": 5, - "text": "As", - "position": { - "top": 2278, - "bottom": 2310, - "left": 1715, - "right": 1765 - } - }, - { - "doc_offset": { - "start": 6361, - "end": 6365 - }, - "page_num": 5, - "text": "such", - "position": { - "top": 2278, - "bottom": 2310, - "left": 1781, - "right": 1871 - } - }, - { - "doc_offset": { - "start": 6366, - "end": 6368 - }, - "page_num": 5, - "text": "it", - "position": { - "top": 2278, - "bottom": 2309, - "left": 1891, - "right": 1910 - } - }, - { - "doc_offset": { - "start": 6369, - "end": 6373 - }, - "page_num": 5, - "text": "will", - "position": { - "top": 2278, - "bottom": 2309, - "left": 1927, - "right": 1985 - } - }, - { - "doc_offset": { - "start": 6374, - "end": 6378 - }, - "page_num": 5, - "text": "only", - "position": { - "top": 2278, - "bottom": 2318, - "left": 2004, - "right": 2083 - } - }, - { - "doc_offset": { - "start": 6379, - "end": 6386 - }, - "page_num": 5, - "text": "contain", - "position": { - "top": 2278, - "bottom": 2310, - "left": 2099, - "right": 2239 - } - }, - { - "doc_offset": { - "start": 6387, - "end": 6390 - }, - "page_num": 5, - "text": "new", - "position": { - "top": 2286, - "bottom": 2310, - "left": 2259, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 6391, - "end": 6395 - }, - "page_num": 5, - "text": "rows", - "position": { - "top": 2347, - "bottom": 2371, - "left": 215, - "right": 305 - } - }, - { - "doc_offset": { - "start": 6396, - "end": 6398 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2341, - "bottom": 2371, - "left": 319, - "right": 355 - } - }, - { - "doc_offset": { - "start": 6399, - "end": 6401 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 2339, - "bottom": 2371, - "left": 372, - "right": 418 - } - }, - { - "doc_offset": { - "start": 6402, - "end": 6410 - }, - "page_num": 5, - "text": "inserted", - "position": { - "top": 2339, - "bottom": 2371, - "left": 434, - "right": 585 - } - }, - { - "doc_offset": { - "start": 6411, - "end": 6415 - }, - "page_num": 5, - "text": "into", - "position": { - "top": 2339, - "bottom": 2371, - "left": 603, - "right": 672 - } - }, - { - "doc_offset": { - "start": 6416, - "end": 6419 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2339, - "bottom": 2371, - "left": 686, - "right": 746 - } - }, - { - "doc_offset": { - "start": 6420, - "end": 6427 - }, - "page_num": 5, - "text": "Metrics", - "position": { - "top": 2339, - "bottom": 2371, - "left": 763, - "right": 903 - } - }, - { - "doc_offset": { - "start": 6428, - "end": 6437 - }, - "page_num": 5, - "text": "database.", - "position": { - "top": 2339, - "bottom": 2371, - "left": 918, - "right": 1106 - } - }, - { - "doc_offset": { - "start": 6438, - "end": 6447 - }, - "page_num": 5, - "text": "formatted", - "position": { - "top": 2700, - "bottom": 2720, - "left": 1927, - "right": 2048 - } - }, - { - "doc_offset": { - "start": 6448, - "end": 6450 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 2700, - "bottom": 2726, - "left": 2056, - "right": 2087 - } - }, - { - "doc_offset": { - "start": 6451, - "end": 6459 - }, - "page_num": 5, - "text": "Markdeep", - "position": { - "top": 2700, - "bottom": 2726, - "left": 2094, - "right": 2218 - } - }, - { - "doc_offset": { - "start": 6460, - "end": 6464 - }, - "page_num": 5, - "text": "1.17", - "position": { - "top": 2700, - "bottom": 2720, - "left": 2231, - "right": 2282 - } - }, - { - "doc_offset": { - "start": 6465, - "end": 6466 - }, - "page_num": 5, - "text": "\u2712", - "position": { - "top": 2691, - "bottom": 2731, - "left": 2288, - "right": 2328 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4288/107456/submission_107456_result.json b/tests/data/etloutput/4288/107456/submission_107456_result.json deleted file mode 100644 index 0598a13..0000000 --- a/tests/data/etloutput/4288/107456/submission_107456_result.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "file_version": 3, - "submission_id": 107456, - "modelgroup_metadata": { - "4630": { - "id": 4630, - "task_type": "form_extraction", - "name": "Standard Document v2", - "selected_model": { - "id": 8228, - "model_type": "form_extraction" - } - } - }, - "submission_results": [ - { - "submissionfile_id": 101155, - "etl_output": "indico-file:///storage/submission/4288/107456/101155/etl_output.json", - "input_filename": "data_model.pdf", - "input_filepath": "indico-file:///storage/submission/4288/107456/101155.pdf", - "input_filesize": 130938, - "model_results": { - "ORIGINAL": { - "4630": [] - } - }, - "component_results": { - "ORIGINAL": {} - }, - "rejected": { - "models": { - "4630": [] - }, - "components": {} - } - } - ], - "reviews": {} -} \ No newline at end of file diff --git a/tests/data/etloutput/4289/107457/101156/etl_output.json b/tests/data/etloutput/4289/107457/101156/etl_output.json deleted file mode 100644 index 5f6c212..0000000 --- a/tests/data/etloutput/4289/107457/101156/etl_output.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "pages": [ - { - "page_num": 0, - "image": "indico-file:///storage/submission/4289/107457/101156/original_page_0.png", - "thumbnail": "indico-file:///storage/submission/4289/107457/101156/original_thumbnail_0.png", - "doc_start_offset": 0, - "doc_end_offset": 1360, - "page_info": "indico-file:///storage/submission/4289/107457/101156/page_info_0.json" - }, - { - "page_num": 1, - "image": "indico-file:///storage/submission/4289/107457/101156/original_page_1.png", - "thumbnail": "indico-file:///storage/submission/4289/107457/101156/original_thumbnail_1.png", - "doc_start_offset": 1361, - "doc_end_offset": 1845, - "page_info": "indico-file:///storage/submission/4289/107457/101156/page_info_1.json" - }, - { - "page_num": 2, - "image": "indico-file:///storage/submission/4289/107457/101156/original_page_2.png", - "thumbnail": "indico-file:///storage/submission/4289/107457/101156/original_thumbnail_2.png", - "doc_start_offset": 1846, - "doc_end_offset": 3141, - "page_info": "indico-file:///storage/submission/4289/107457/101156/page_info_2.json" - }, - { - "page_num": 3, - "image": "indico-file:///storage/submission/4289/107457/101156/original_page_3.png", - "thumbnail": "indico-file:///storage/submission/4289/107457/101156/original_thumbnail_3.png", - "doc_start_offset": 3142, - "doc_end_offset": 4185, - "page_info": "indico-file:///storage/submission/4289/107457/101156/page_info_3.json" - }, - { - "page_num": 4, - "image": "indico-file:///storage/submission/4289/107457/101156/original_page_4.png", - "thumbnail": "indico-file:///storage/submission/4289/107457/101156/original_thumbnail_4.png", - "doc_start_offset": 4186, - "doc_end_offset": 4729, - "page_info": "indico-file:///storage/submission/4289/107457/101156/page_info_4.json" - }, - { - "page_num": 5, - "image": "indico-file:///storage/submission/4289/107457/101156/original_page_5.png", - "thumbnail": "indico-file:///storage/submission/4289/107457/101156/original_thumbnail_5.png", - "doc_start_offset": 4730, - "doc_end_offset": 6494, - "page_info": "indico-file:///storage/submission/4289/107457/101156/page_info_5.json" - } - ], - "num_pages": 6, - "metadata": {} -} \ No newline at end of file diff --git a/tests/data/etloutput/4289/107457/101156/page_info_0.json b/tests/data/etloutput/4289/107457/101156/page_info_0.json deleted file mode 100644 index 9884b5f..0000000 --- a/tests/data/etloutput/4289/107457/101156/page_info_0.json +++ /dev/null @@ -1,2982 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 0, - "end": 1360 - }, - "page_num": 0, - "text": "Indico Metrics Integration Data Model\nThis document covers the intermediate data model used to pull Data Intake metrics\nfrom Indico to be aggregated and displayed within Metrics.\nContents\nThis document assumes that a single integration process is run on a schedule and\nuses 4 discrete GraphQL queries to download low-level metrics using the Indico\nGraphQL API. Scheduling recommendations are provided below.\nThese metrics are lightly processed and denormalized to match the intermediate\ndata model defined below. The integration will produce data in a consumable\nformat, such as SQL UPSERT\nqueries, an importable CSV file, or an importable\nJSON file.\n1 Entities\n1.1 Workflow\n1.2 Model\n1.3 Submission\n1.4 Submission File\n1.5 Reviewer\n1.6 Prediction\nOnce imported, Metrics can filter and aggregate the intermediate data as described below to display higher-\nlevel data points to fulfill the reporting requirements defined elsewhere.\n1 Entities\n1.1 Workflow\nColumn\tType\tGraphQL Source\nid\tint\tworkflow.id\nname\tstr\tworkflow. name\nExample GraphQL Query\nquery Workflows {\nworkflows {\nworkflows {\nid\nname\n}\n}\n}\nScheduled Process Logic\nThis is a lightweight query. All workflows will be pulled every time the integration is run.\nData Reconciliation\nThe output will include the primary key id needed to update existing rows and insert new rows into the\nMetrics database." - } - ], - "tokens": [ - { - "doc_offset": { - "start": 0, - "end": 6 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 164, - "bottom": 239, - "left": 406, - "right": 684 - } - }, - { - "doc_offset": { - "start": 7, - "end": 14 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 164, - "bottom": 247, - "left": 717, - "right": 1051 - } - }, - { - "doc_offset": { - "start": 15, - "end": 26 - }, - "page_num": 0, - "text": "Integration", - "position": { - "top": 164, - "bottom": 252, - "left": 1084, - "right": 1587 - } - }, - { - "doc_offset": { - "start": 27, - "end": 31 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 164, - "bottom": 249, - "left": 1637, - "right": 1839 - } - }, - { - "doc_offset": { - "start": 32, - "end": 37 - }, - "page_num": 0, - "text": "Model", - "position": { - "top": 164, - "bottom": 242, - "left": 1872, - "right": 2146 - } - }, - { - "doc_offset": { - "start": 38, - "end": 42 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 385, - "bottom": 429, - "left": 213, - "right": 293 - } - }, - { - "doc_offset": { - "start": 43, - "end": 51 - }, - "page_num": 0, - "text": "document", - "position": { - "top": 385, - "bottom": 429, - "left": 303, - "right": 502 - } - }, - { - "doc_offset": { - "start": 52, - "end": 58 - }, - "page_num": 0, - "text": "covers", - "position": { - "top": 383, - "bottom": 431, - "left": 512, - "right": 646 - } - }, - { - "doc_offset": { - "start": 59, - "end": 62 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 383, - "bottom": 432, - "left": 657, - "right": 722 - } - }, - { - "doc_offset": { - "start": 63, - "end": 75 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 383, - "bottom": 432, - "left": 732, - "right": 977 - } - }, - { - "doc_offset": { - "start": 76, - "end": 80 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 383, - "bottom": 432, - "left": 991, - "right": 1077 - } - }, - { - "doc_offset": { - "start": 81, - "end": 86 - }, - "page_num": 0, - "text": "model", - "position": { - "top": 383, - "bottom": 432, - "left": 1087, - "right": 1214 - } - }, - { - "doc_offset": { - "start": 87, - "end": 91 - }, - "page_num": 0, - "text": "used", - "position": { - "top": 383, - "bottom": 432, - "left": 1224, - "right": 1320 - } - }, - { - "doc_offset": { - "start": 92, - "end": 94 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 383, - "bottom": 432, - "left": 1333, - "right": 1373 - } - }, - { - "doc_offset": { - "start": 95, - "end": 99 - }, - "page_num": 0, - "text": "pull", - "position": { - "top": 383, - "bottom": 432, - "left": 1386, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 100, - "end": 104 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 383, - "bottom": 432, - "left": 1471, - "right": 1564 - } - }, - { - "doc_offset": { - "start": 105, - "end": 111 - }, - "page_num": 0, - "text": "Intake", - "position": { - "top": 385, - "bottom": 431, - "left": 1574, - "right": 1694 - } - }, - { - "doc_offset": { - "start": 112, - "end": 119 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 385, - "bottom": 429, - "left": 1706, - "right": 1855 - } - }, - { - "doc_offset": { - "start": 120, - "end": 124 - }, - "page_num": 0, - "text": "from", - "position": { - "top": 446, - "bottom": 492, - "left": 212, - "right": 282 - } - }, - { - "doc_offset": { - "start": 125, - "end": 131 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 446, - "bottom": 494, - "left": 308, - "right": 429 - } - }, - { - "doc_offset": { - "start": 132, - "end": 134 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 446, - "bottom": 495, - "left": 441, - "right": 481 - } - }, - { - "doc_offset": { - "start": 135, - "end": 137 - }, - "page_num": 0, - "text": "be", - "position": { - "top": 446, - "bottom": 495, - "left": 491, - "right": 544 - } - }, - { - "doc_offset": { - "start": 138, - "end": 148 - }, - "page_num": 0, - "text": "aggregated", - "position": { - "top": 446, - "bottom": 495, - "left": 557, - "right": 777 - } - }, - { - "doc_offset": { - "start": 149, - "end": 152 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 446, - "bottom": 495, - "left": 793, - "right": 865 - } - }, - { - "doc_offset": { - "start": 153, - "end": 162 - }, - "page_num": 0, - "text": "displayed", - "position": { - "top": 446, - "bottom": 495, - "left": 879, - "right": 1064 - } - }, - { - "doc_offset": { - "start": 163, - "end": 169 - }, - "page_num": 0, - "text": "within", - "position": { - "top": 445, - "bottom": 494, - "left": 1077, - "right": 1190 - } - }, - { - "doc_offset": { - "start": 170, - "end": 178 - }, - "page_num": 0, - "text": "Metrics.", - "position": { - "top": 445, - "bottom": 491, - "left": 1203, - "right": 1365 - } - }, - { - "doc_offset": { - "start": 179, - "end": 187 - }, - "page_num": 0, - "text": "Contents", - "position": { - "top": 429, - "bottom": 476, - "left": 2065, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 188, - "end": 192 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 552, - "bottom": 594, - "left": 212, - "right": 290 - } - }, - { - "doc_offset": { - "start": 193, - "end": 201 - }, - "page_num": 0, - "text": "document", - "position": { - "top": 552, - "bottom": 595, - "left": 305, - "right": 510 - } - }, - { - "doc_offset": { - "start": 202, - "end": 209 - }, - "page_num": 0, - "text": "assumes", - "position": { - "top": 551, - "bottom": 598, - "left": 520, - "right": 694 - } - }, - { - "doc_offset": { - "start": 210, - "end": 214 - }, - "page_num": 0, - "text": "that", - "position": { - "top": 551, - "bottom": 600, - "left": 704, - "right": 789 - } - }, - { - "doc_offset": { - "start": 215, - "end": 216 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 551, - "bottom": 600, - "left": 799, - "right": 823 - } - }, - { - "doc_offset": { - "start": 217, - "end": 223 - }, - "page_num": 0, - "text": "single", - "position": { - "top": 551, - "bottom": 600, - "left": 836, - "right": 949 - } - }, - { - "doc_offset": { - "start": 224, - "end": 235 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 551, - "bottom": 600, - "left": 962, - "right": 1171 - } - }, - { - "doc_offset": { - "start": 236, - "end": 243 - }, - "page_num": 0, - "text": "process", - "position": { - "top": 551, - "bottom": 600, - "left": 1187, - "right": 1346 - } - }, - { - "doc_offset": { - "start": 244, - "end": 246 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 551, - "bottom": 600, - "left": 1356, - "right": 1392 - } - }, - { - "doc_offset": { - "start": 247, - "end": 250 - }, - "page_num": 0, - "text": "run", - "position": { - "top": 551, - "bottom": 598, - "left": 1402, - "right": 1466 - } - }, - { - "doc_offset": { - "start": 251, - "end": 253 - }, - "page_num": 0, - "text": "on", - "position": { - "top": 551, - "bottom": 598, - "left": 1482, - "right": 1531 - } - }, - { - "doc_offset": { - "start": 254, - "end": 255 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 551, - "bottom": 598, - "left": 1547, - "right": 1571 - } - }, - { - "doc_offset": { - "start": 256, - "end": 264 - }, - "page_num": 0, - "text": "schedule", - "position": { - "top": 551, - "bottom": 597, - "left": 1587, - "right": 1762 - } - }, - { - "doc_offset": { - "start": 265, - "end": 268 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 551, - "bottom": 595, - "left": 1777, - "right": 1848 - } - }, - { - "doc_offset": { - "start": 269, - "end": 273 - }, - "page_num": 0, - "text": "uses", - "position": { - "top": 615, - "bottom": 658, - "left": 210, - "right": 303 - } - }, - { - "doc_offset": { - "start": 274, - "end": 275 - }, - "page_num": 0, - "text": "4", - "position": { - "top": 614, - "bottom": 660, - "left": 320, - "right": 345 - } - }, - { - "doc_offset": { - "start": 276, - "end": 284 - }, - "page_num": 0, - "text": "discrete", - "position": { - "top": 614, - "bottom": 660, - "left": 365, - "right": 520 - } - }, - { - "doc_offset": { - "start": 285, - "end": 292 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 613, - "bottom": 660, - "left": 538, - "right": 719 - } - }, - { - "doc_offset": { - "start": 293, - "end": 300 - }, - "page_num": 0, - "text": "queries", - "position": { - "top": 611, - "bottom": 661, - "left": 739, - "right": 883 - } - }, - { - "doc_offset": { - "start": 301, - "end": 303 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 611, - "bottom": 661, - "left": 899, - "right": 939 - } - }, - { - "doc_offset": { - "start": 304, - "end": 312 - }, - "page_num": 0, - "text": "download", - "position": { - "top": 611, - "bottom": 661, - "left": 959, - "right": 1151 - } - }, - { - "doc_offset": { - "start": 313, - "end": 322 - }, - "page_num": 0, - "text": "low-level", - "position": { - "top": 611, - "bottom": 661, - "left": 1168, - "right": 1350 - } - }, - { - "doc_offset": { - "start": 323, - "end": 330 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 611, - "bottom": 661, - "left": 1362, - "right": 1509 - } - }, - { - "doc_offset": { - "start": 331, - "end": 336 - }, - "page_num": 0, - "text": "using", - "position": { - "top": 613, - "bottom": 660, - "left": 1527, - "right": 1633 - } - }, - { - "doc_offset": { - "start": 337, - "end": 340 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 613, - "bottom": 660, - "left": 1650, - "right": 1714 - } - }, - { - "doc_offset": { - "start": 341, - "end": 347 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 613, - "bottom": 660, - "left": 1731, - "right": 1850 - } - }, - { - "doc_offset": { - "start": 348, - "end": 355 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 673, - "bottom": 720, - "left": 212, - "right": 386 - } - }, - { - "doc_offset": { - "start": 356, - "end": 360 - }, - "page_num": 0, - "text": "API.", - "position": { - "top": 673, - "bottom": 721, - "left": 399, - "right": 487 - } - }, - { - "doc_offset": { - "start": 361, - "end": 371 - }, - "page_num": 0, - "text": "Scheduling", - "position": { - "top": 673, - "bottom": 723, - "left": 495, - "right": 710 - } - }, - { - "doc_offset": { - "start": 372, - "end": 387 - }, - "page_num": 0, - "text": "recommendations", - "position": { - "top": 673, - "bottom": 723, - "left": 720, - "right": 1078 - } - }, - { - "doc_offset": { - "start": 388, - "end": 391 - }, - "page_num": 0, - "text": "are", - "position": { - "top": 674, - "bottom": 723, - "left": 1090, - "right": 1150 - } - }, - { - "doc_offset": { - "start": 392, - "end": 400 - }, - "page_num": 0, - "text": "provided", - "position": { - "top": 674, - "bottom": 723, - "left": 1160, - "right": 1332 - } - }, - { - "doc_offset": { - "start": 401, - "end": 407 - }, - "page_num": 0, - "text": "below.", - "position": { - "top": 674, - "bottom": 721, - "left": 1342, - "right": 1474 - } - }, - { - "doc_offset": { - "start": 408, - "end": 413 - }, - "page_num": 0, - "text": "These", - "position": { - "top": 779, - "bottom": 825, - "left": 214, - "right": 329 - } - }, - { - "doc_offset": { - "start": 414, - "end": 421 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 779, - "bottom": 825, - "left": 345, - "right": 494 - } - }, - { - "doc_offset": { - "start": 422, - "end": 425 - }, - "page_num": 0, - "text": "are", - "position": { - "top": 779, - "bottom": 826, - "left": 512, - "right": 571 - } - }, - { - "doc_offset": { - "start": 426, - "end": 433 - }, - "page_num": 0, - "text": "lightly", - "position": { - "top": 779, - "bottom": 827, - "left": 587, - "right": 709 - } - }, - { - "doc_offset": { - "start": 434, - "end": 443 - }, - "page_num": 0, - "text": "processed", - "position": { - "top": 779, - "bottom": 827, - "left": 724, - "right": 929 - } - }, - { - "doc_offset": { - "start": 444, - "end": 447 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 779, - "bottom": 827, - "left": 951, - "right": 1022 - } - }, - { - "doc_offset": { - "start": 448, - "end": 460 - }, - "page_num": 0, - "text": "denormalized", - "position": { - "top": 777, - "bottom": 827, - "left": 1041, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 461, - "end": 463 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 777, - "bottom": 826, - "left": 1325, - "right": 1365 - } - }, - { - "doc_offset": { - "start": 464, - "end": 469 - }, - "page_num": 0, - "text": "match", - "position": { - "top": 777, - "bottom": 826, - "left": 1383, - "right": 1505 - } - }, - { - "doc_offset": { - "start": 470, - "end": 473 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 779, - "bottom": 825, - "left": 1527, - "right": 1590 - } - }, - { - "doc_offset": { - "start": 474, - "end": 486 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 779, - "bottom": 823, - "left": 1604, - "right": 1853 - } - }, - { - "doc_offset": { - "start": 487, - "end": 491 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 840, - "bottom": 885, - "left": 209, - "right": 296 - } - }, - { - "doc_offset": { - "start": 492, - "end": 497 - }, - "page_num": 0, - "text": "model", - "position": { - "top": 840, - "bottom": 886, - "left": 319, - "right": 455 - } - }, - { - "doc_offset": { - "start": 498, - "end": 505 - }, - "page_num": 0, - "text": "defined", - "position": { - "top": 839, - "bottom": 888, - "left": 465, - "right": 611 - } - }, - { - "doc_offset": { - "start": 506, - "end": 512 - }, - "page_num": 0, - "text": "below.", - "position": { - "top": 839, - "bottom": 888, - "left": 637, - "right": 776 - } - }, - { - "doc_offset": { - "start": 513, - "end": 516 - }, - "page_num": 0, - "text": "The", - "position": { - "top": 839, - "bottom": 889, - "left": 793, - "right": 865 - } - }, - { - "doc_offset": { - "start": 517, - "end": 528 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 839, - "bottom": 889, - "left": 885, - "right": 1094 - } - }, - { - "doc_offset": { - "start": 529, - "end": 533 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 839, - "bottom": 889, - "left": 1120, - "right": 1196 - } - }, - { - "doc_offset": { - "start": 534, - "end": 541 - }, - "page_num": 0, - "text": "produce", - "position": { - "top": 839, - "bottom": 889, - "left": 1206, - "right": 1370 - } - }, - { - "doc_offset": { - "start": 542, - "end": 546 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 839, - "bottom": 889, - "left": 1393, - "right": 1485 - } - }, - { - "doc_offset": { - "start": 547, - "end": 549 - }, - "page_num": 0, - "text": "in", - "position": { - "top": 839, - "bottom": 888, - "left": 1502, - "right": 1540 - } - }, - { - "doc_offset": { - "start": 550, - "end": 551 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 839, - "bottom": 888, - "left": 1565, - "right": 1590 - } - }, - { - "doc_offset": { - "start": 552, - "end": 562 - }, - "page_num": 0, - "text": "consumable", - "position": { - "top": 840, - "bottom": 886, - "left": 1614, - "right": 1855 - } - }, - { - "doc_offset": { - "start": 563, - "end": 570 - }, - "page_num": 0, - "text": "format,", - "position": { - "top": 902, - "bottom": 948, - "left": 210, - "right": 356 - } - }, - { - "doc_offset": { - "start": 571, - "end": 575 - }, - "page_num": 0, - "text": "such", - "position": { - "top": 902, - "bottom": 948, - "left": 369, - "right": 458 - } - }, - { - "doc_offset": { - "start": 576, - "end": 578 - }, - "page_num": 0, - "text": "as", - "position": { - "top": 902, - "bottom": 948, - "left": 485, - "right": 530 - } - }, - { - "doc_offset": { - "start": 579, - "end": 582 - }, - "page_num": 0, - "text": "SQL", - "position": { - "top": 902, - "bottom": 948, - "left": 551, - "right": 634 - } - }, - { - "doc_offset": { - "start": 583, - "end": 589 - }, - "page_num": 0, - "text": "UPSERT", - "position": { - "top": 903, - "bottom": 946, - "left": 670, - "right": 809 - } - }, - { - "doc_offset": { - "start": 590, - "end": 598 - }, - "page_num": 0, - "text": "queries,", - "position": { - "top": 902, - "bottom": 952, - "left": 840, - "right": 1007 - } - }, - { - "doc_offset": { - "start": 599, - "end": 601 - }, - "page_num": 0, - "text": "an", - "position": { - "top": 900, - "bottom": 952, - "left": 1018, - "right": 1062 - } - }, - { - "doc_offset": { - "start": 602, - "end": 612 - }, - "page_num": 0, - "text": "importable", - "position": { - "top": 900, - "bottom": 952, - "left": 1080, - "right": 1297 - } - }, - { - "doc_offset": { - "start": 613, - "end": 616 - }, - "page_num": 0, - "text": "CSV", - "position": { - "top": 900, - "bottom": 951, - "left": 1317, - "right": 1402 - } - }, - { - "doc_offset": { - "start": 617, - "end": 622 - }, - "page_num": 0, - "text": "file,", - "position": { - "top": 900, - "bottom": 951, - "left": 1422, - "right": 1501 - } - }, - { - "doc_offset": { - "start": 623, - "end": 625 - }, - "page_num": 0, - "text": "or", - "position": { - "top": 900, - "bottom": 951, - "left": 1511, - "right": 1561 - } - }, - { - "doc_offset": { - "start": 626, - "end": 628 - }, - "page_num": 0, - "text": "an", - "position": { - "top": 900, - "bottom": 951, - "left": 1574, - "right": 1620 - } - }, - { - "doc_offset": { - "start": 629, - "end": 639 - }, - "page_num": 0, - "text": "importable", - "position": { - "top": 902, - "bottom": 949, - "left": 1640, - "right": 1853 - } - }, - { - "doc_offset": { - "start": 640, - "end": 644 - }, - "page_num": 0, - "text": "JSON", - "position": { - "top": 962, - "bottom": 1006, - "left": 212, - "right": 316 - } - }, - { - "doc_offset": { - "start": 645, - "end": 650 - }, - "page_num": 0, - "text": "file.", - "position": { - "top": 965, - "bottom": 1006, - "left": 339, - "right": 408 - } - }, - { - "doc_offset": { - "start": 651, - "end": 652 - }, - "page_num": 0, - "text": "1", - "position": { - "top": 564, - "bottom": 600, - "left": 1979, - "right": 1998 - } - }, - { - "doc_offset": { - "start": 653, - "end": 661 - }, - "page_num": 0, - "text": "Entities", - "position": { - "top": 562, - "bottom": 600, - "left": 2018, - "right": 2168 - } - }, - { - "doc_offset": { - "start": 662, - "end": 665 - }, - "page_num": 0, - "text": "1.1", - "position": { - "top": 615, - "bottom": 648, - "left": 2007, - "right": 2050 - } - }, - { - "doc_offset": { - "start": 666, - "end": 674 - }, - "page_num": 0, - "text": "Workflow", - "position": { - "top": 614, - "bottom": 648, - "left": 2067, - "right": 2220 - } - }, - { - "doc_offset": { - "start": 675, - "end": 678 - }, - "page_num": 0, - "text": "1.2", - "position": { - "top": 664, - "bottom": 697, - "left": 2007, - "right": 2052 - } - }, - { - "doc_offset": { - "start": 679, - "end": 684 - }, - "page_num": 0, - "text": "Model", - "position": { - "top": 664, - "bottom": 696, - "left": 2070, - "right": 2177 - } - }, - { - "doc_offset": { - "start": 685, - "end": 688 - }, - "page_num": 0, - "text": "1.3", - "position": { - "top": 711, - "bottom": 749, - "left": 2007, - "right": 2052 - } - }, - { - "doc_offset": { - "start": 689, - "end": 699 - }, - "page_num": 0, - "text": "Submission", - "position": { - "top": 711, - "bottom": 747, - "left": 2072, - "right": 2259 - } - }, - { - "doc_offset": { - "start": 700, - "end": 703 - }, - "page_num": 0, - "text": "1.4", - "position": { - "top": 759, - "bottom": 797, - "left": 2005, - "right": 2051 - } - }, - { - "doc_offset": { - "start": 704, - "end": 714 - }, - "page_num": 0, - "text": "Submission", - "position": { - "top": 759, - "bottom": 797, - "left": 2071, - "right": 2260 - } - }, - { - "doc_offset": { - "start": 715, - "end": 719 - }, - "page_num": 0, - "text": "File", - "position": { - "top": 757, - "bottom": 797, - "left": 2274, - "right": 2335 - } - }, - { - "doc_offset": { - "start": 720, - "end": 723 - }, - "page_num": 0, - "text": "1.5", - "position": { - "top": 810, - "bottom": 846, - "left": 2005, - "right": 2048 - } - }, - { - "doc_offset": { - "start": 724, - "end": 732 - }, - "page_num": 0, - "text": "Reviewer", - "position": { - "top": 809, - "bottom": 846, - "left": 2070, - "right": 2226 - } - }, - { - "doc_offset": { - "start": 733, - "end": 736 - }, - "page_num": 0, - "text": "1.6", - "position": { - "top": 857, - "bottom": 896, - "left": 2007, - "right": 2050 - } - }, - { - "doc_offset": { - "start": 737, - "end": 747 - }, - "page_num": 0, - "text": "Prediction", - "position": { - "top": 856, - "bottom": 895, - "left": 2071, - "right": 2239 - } - }, - { - "doc_offset": { - "start": 748, - "end": 752 - }, - "page_num": 0, - "text": "Once", - "position": { - "top": 1067, - "bottom": 1117, - "left": 210, - "right": 310 - } - }, - { - "doc_offset": { - "start": 753, - "end": 762 - }, - "page_num": 0, - "text": "imported,", - "position": { - "top": 1067, - "bottom": 1117, - "left": 320, - "right": 515 - } - }, - { - "doc_offset": { - "start": 763, - "end": 770 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 1067, - "bottom": 1117, - "left": 525, - "right": 676 - } - }, - { - "doc_offset": { - "start": 771, - "end": 774 - }, - "page_num": 0, - "text": "can", - "position": { - "top": 1067, - "bottom": 1117, - "left": 687, - "right": 756 - } - }, - { - "doc_offset": { - "start": 775, - "end": 781 - }, - "page_num": 0, - "text": "filter", - "position": { - "top": 1067, - "bottom": 1117, - "left": 769, - "right": 858 - } - }, - { - "doc_offset": { - "start": 782, - "end": 785 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 1067, - "bottom": 1117, - "left": 868, - "right": 941 - } - }, - { - "doc_offset": { - "start": 786, - "end": 795 - }, - "page_num": 0, - "text": "aggregate", - "position": { - "top": 1067, - "bottom": 1117, - "left": 958, - "right": 1151 - } - }, - { - "doc_offset": { - "start": 796, - "end": 799 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1161, - "right": 1227 - } - }, - { - "doc_offset": { - "start": 800, - "end": 812 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1237, - "right": 1484 - } - }, - { - "doc_offset": { - "start": 813, - "end": 817 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1498, - "right": 1587 - } - }, - { - "doc_offset": { - "start": 818, - "end": 820 - }, - "page_num": 0, - "text": "as", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1597, - "right": 1646 - } - }, - { - "doc_offset": { - "start": 821, - "end": 830 - }, - "page_num": 0, - "text": "described", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1657, - "right": 1850 - } - }, - { - "doc_offset": { - "start": 831, - "end": 836 - }, - "page_num": 0, - "text": "below", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1860, - "right": 1972 - } - }, - { - "doc_offset": { - "start": 837, - "end": 839 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1992, - "right": 2035 - } - }, - { - "doc_offset": { - "start": 840, - "end": 847 - }, - "page_num": 0, - "text": "display", - "position": { - "top": 1067, - "bottom": 1117, - "left": 2045, - "right": 2183 - } - }, - { - "doc_offset": { - "start": 848, - "end": 855 - }, - "page_num": 0, - "text": "higher-", - "position": { - "top": 1067, - "bottom": 1117, - "left": 2194, - "right": 2333 - } - }, - { - "doc_offset": { - "start": 856, - "end": 861 - }, - "page_num": 0, - "text": "level", - "position": { - "top": 1130, - "bottom": 1177, - "left": 206, - "right": 300 - } - }, - { - "doc_offset": { - "start": 862, - "end": 866 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 1130, - "bottom": 1178, - "left": 310, - "right": 398 - } - }, - { - "doc_offset": { - "start": 867, - "end": 873 - }, - "page_num": 0, - "text": "points", - "position": { - "top": 1130, - "bottom": 1178, - "left": 406, - "right": 530 - } - }, - { - "doc_offset": { - "start": 874, - "end": 876 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 1128, - "bottom": 1178, - "left": 540, - "right": 581 - } - }, - { - "doc_offset": { - "start": 877, - "end": 884 - }, - "page_num": 0, - "text": "fulfill", - "position": { - "top": 1128, - "bottom": 1180, - "left": 591, - "right": 681 - } - }, - { - "doc_offset": { - "start": 885, - "end": 888 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 1128, - "bottom": 1180, - "left": 691, - "right": 756 - } - }, - { - "doc_offset": { - "start": 889, - "end": 898 - }, - "page_num": 0, - "text": "reporting", - "position": { - "top": 1128, - "bottom": 1180, - "left": 766, - "right": 944 - } - }, - { - "doc_offset": { - "start": 899, - "end": 911 - }, - "page_num": 0, - "text": "requirements", - "position": { - "top": 1128, - "bottom": 1178, - "left": 954, - "right": 1213 - } - }, - { - "doc_offset": { - "start": 912, - "end": 919 - }, - "page_num": 0, - "text": "defined", - "position": { - "top": 1128, - "bottom": 1177, - "left": 1221, - "right": 1368 - } - }, - { - "doc_offset": { - "start": 920, - "end": 930 - }, - "page_num": 0, - "text": "elsewhere.", - "position": { - "top": 1128, - "bottom": 1175, - "left": 1381, - "right": 1591 - } - }, - { - "doc_offset": { - "start": 931, - "end": 932 - }, - "page_num": 0, - "text": "1", - "position": { - "top": 1317, - "bottom": 1379, - "left": 220, - "right": 252 - } - }, - { - "doc_offset": { - "start": 933, - "end": 941 - }, - "page_num": 0, - "text": "Entities", - "position": { - "top": 1317, - "bottom": 1376, - "left": 310, - "right": 571 - } - }, - { - "doc_offset": { - "start": 942, - "end": 945 - }, - "page_num": 0, - "text": "1.1", - "position": { - "top": 1526, - "bottom": 1584, - "left": 220, - "right": 308 - } - }, - { - "doc_offset": { - "start": 946, - "end": 954 - }, - "page_num": 0, - "text": "Workflow", - "position": { - "top": 1528, - "bottom": 1584, - "left": 363, - "right": 643 - } - }, - { - "doc_offset": { - "start": 955, - "end": 961 - }, - "page_num": 0, - "text": "Column", - "position": { - "top": 1691, - "bottom": 1731, - "left": 262, - "right": 416 - } - }, - { - "doc_offset": { - "start": 962, - "end": 966 - }, - "page_num": 0, - "text": "Type", - "position": { - "top": 1690, - "bottom": 1735, - "left": 875, - "right": 966 - } - }, - { - "doc_offset": { - "start": 967, - "end": 974 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 1688, - "bottom": 1734, - "left": 1328, - "right": 1509 - } - }, - { - "doc_offset": { - "start": 975, - "end": 981 - }, - "page_num": 0, - "text": "Source", - "position": { - "top": 1688, - "bottom": 1734, - "left": 1525, - "right": 1670 - } - }, - { - "doc_offset": { - "start": 982, - "end": 984 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 1788, - "bottom": 1824, - "left": 257, - "right": 287 - } - }, - { - "doc_offset": { - "start": 985, - "end": 988 - }, - "page_num": 0, - "text": "int", - "position": { - "top": 1786, - "bottom": 1833, - "left": 868, - "right": 925 - } - }, - { - "doc_offset": { - "start": 989, - "end": 1000 - }, - "page_num": 0, - "text": "workflow.id", - "position": { - "top": 1790, - "bottom": 1829, - "left": 1339, - "right": 1584 - } - }, - { - "doc_offset": { - "start": 1001, - "end": 1005 - }, - "page_num": 0, - "text": "name", - "position": { - "top": 1877, - "bottom": 1927, - "left": 256, - "right": 366 - } - }, - { - "doc_offset": { - "start": 1006, - "end": 1009 - }, - "page_num": 0, - "text": "str", - "position": { - "top": 1876, - "bottom": 1927, - "left": 871, - "right": 922 - } - }, - { - "doc_offset": { - "start": 1010, - "end": 1019 - }, - "page_num": 0, - "text": "workflow.", - "position": { - "top": 1884, - "bottom": 1920, - "left": 1339, - "right": 1531 - } - }, - { - "doc_offset": { - "start": 1020, - "end": 1024 - }, - "page_num": 0, - "text": "name", - "position": { - "top": 1884, - "bottom": 1920, - "left": 1538, - "right": 1628 - } - }, - { - "doc_offset": { - "start": 1025, - "end": 1032 - }, - "page_num": 0, - "text": "Example", - "position": { - "top": 2010, - "bottom": 2059, - "left": 210, - "right": 389 - } - }, - { - "doc_offset": { - "start": 1033, - "end": 1040 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 2009, - "bottom": 2059, - "left": 403, - "right": 590 - } - }, - { - "doc_offset": { - "start": 1041, - "end": 1046 - }, - "page_num": 0, - "text": "Query", - "position": { - "top": 2008, - "bottom": 2062, - "left": 604, - "right": 730 - } - }, - { - "doc_offset": { - "start": 1047, - "end": 1052 - }, - "page_num": 0, - "text": "query", - "position": { - "top": 2128, - "bottom": 2177, - "left": 240, - "right": 373 - } - }, - { - "doc_offset": { - "start": 1053, - "end": 1062 - }, - "page_num": 0, - "text": "Workflows", - "position": { - "top": 2125, - "bottom": 2177, - "left": 395, - "right": 643 - } - }, - { - "doc_offset": { - "start": 1063, - "end": 1064 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2124, - "bottom": 2179, - "left": 674, - "right": 701 - } - }, - { - "doc_offset": { - "start": 1065, - "end": 1074 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2189, - "bottom": 2234, - "left": 325, - "right": 570 - } - }, - { - "doc_offset": { - "start": 1075, - "end": 1076 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2187, - "bottom": 2235, - "left": 603, - "right": 624 - } - }, - { - "doc_offset": { - "start": 1077, - "end": 1086 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2251, - "bottom": 2300, - "left": 435, - "right": 680 - } - }, - { - "doc_offset": { - "start": 1087, - "end": 1088 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2250, - "bottom": 2300, - "left": 707, - "right": 734 - } - }, - { - "doc_offset": { - "start": 1089, - "end": 1091 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 2311, - "bottom": 2354, - "left": 547, - "right": 593 - } - }, - { - "doc_offset": { - "start": 1092, - "end": 1096 - }, - "page_num": 0, - "text": "name", - "position": { - "top": 2383, - "bottom": 2419, - "left": 542, - "right": 644 - } - }, - { - "doc_offset": { - "start": 1097, - "end": 1098 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2437, - "bottom": 2485, - "left": 438, - "right": 455 - } - }, - { - "doc_offset": { - "start": 1099, - "end": 1100 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2500, - "bottom": 2548, - "left": 328, - "right": 346 - } - }, - { - "doc_offset": { - "start": 1101, - "end": 1102 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2563, - "bottom": 2609, - "left": 222, - "right": 246 - } - }, - { - "doc_offset": { - "start": 1103, - "end": 1112 - }, - "page_num": 0, - "text": "Scheduled", - "position": { - "top": 2684, - "bottom": 2725, - "left": 212, - "right": 426 - } - }, - { - "doc_offset": { - "start": 1113, - "end": 1120 - }, - "page_num": 0, - "text": "Process", - "position": { - "top": 2682, - "bottom": 2728, - "left": 442, - "right": 614 - } - }, - { - "doc_offset": { - "start": 1121, - "end": 1126 - }, - "page_num": 0, - "text": "Logic", - "position": { - "top": 2681, - "bottom": 2731, - "left": 624, - "right": 739 - } - }, - { - "doc_offset": { - "start": 1127, - "end": 1131 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 2785, - "bottom": 2833, - "left": 213, - "right": 287 - } - }, - { - "doc_offset": { - "start": 1132, - "end": 1134 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 2784, - "bottom": 2834, - "left": 297, - "right": 338 - } - }, - { - "doc_offset": { - "start": 1135, - "end": 1136 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 2784, - "bottom": 2834, - "left": 348, - "right": 366 - } - }, - { - "doc_offset": { - "start": 1137, - "end": 1148 - }, - "page_num": 0, - "text": "lightweight", - "position": { - "top": 2784, - "bottom": 2834, - "left": 378, - "right": 594 - } - }, - { - "doc_offset": { - "start": 1149, - "end": 1155 - }, - "page_num": 0, - "text": "query.", - "position": { - "top": 2784, - "bottom": 2834, - "left": 605, - "right": 727 - } - }, - { - "doc_offset": { - "start": 1156, - "end": 1159 - }, - "page_num": 0, - "text": "All", - "position": { - "top": 2784, - "bottom": 2834, - "left": 737, - "right": 786 - } - }, - { - "doc_offset": { - "start": 1160, - "end": 1169 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2784, - "bottom": 2835, - "left": 796, - "right": 998 - } - }, - { - "doc_offset": { - "start": 1170, - "end": 1174 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1008, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 1175, - "end": 1177 - }, - "page_num": 0, - "text": "be", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1081, - "right": 1133 - } - }, - { - "doc_offset": { - "start": 1178, - "end": 1184 - }, - "page_num": 0, - "text": "pulled", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1143, - "right": 1264 - } - }, - { - "doc_offset": { - "start": 1185, - "end": 1190 - }, - "page_num": 0, - "text": "every", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1276, - "right": 1381 - } - }, - { - "doc_offset": { - "start": 1191, - "end": 1195 - }, - "page_num": 0, - "text": "time", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1391, - "right": 1476 - } - }, - { - "doc_offset": { - "start": 1196, - "end": 1199 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1487, - "right": 1550 - } - }, - { - "doc_offset": { - "start": 1200, - "end": 1211 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 2784, - "bottom": 2834, - "left": 1560, - "right": 1770 - } - }, - { - "doc_offset": { - "start": 1212, - "end": 1214 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 2784, - "bottom": 2834, - "left": 1780, - "right": 1813 - } - }, - { - "doc_offset": { - "start": 1215, - "end": 1219 - }, - "page_num": 0, - "text": "run.", - "position": { - "top": 2785, - "bottom": 2834, - "left": 1823, - "right": 1903 - } - }, - { - "doc_offset": { - "start": 1220, - "end": 1224 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 2891, - "bottom": 2937, - "left": 210, - "right": 308 - } - }, - { - "doc_offset": { - "start": 1225, - "end": 1239 - }, - "page_num": 0, - "text": "Reconciliation", - "position": { - "top": 2891, - "bottom": 2937, - "left": 320, - "right": 616 - } - }, - { - "doc_offset": { - "start": 1240, - "end": 1243 - }, - "page_num": 0, - "text": "The", - "position": { - "top": 2994, - "bottom": 3043, - "left": 212, - "right": 283 - } - }, - { - "doc_offset": { - "start": 1244, - "end": 1250 - }, - "page_num": 0, - "text": "output", - "position": { - "top": 2994, - "bottom": 3043, - "left": 296, - "right": 431 - } - }, - { - "doc_offset": { - "start": 1251, - "end": 1255 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 2994, - "bottom": 3045, - "left": 441, - "right": 510 - } - }, - { - "doc_offset": { - "start": 1256, - "end": 1263 - }, - "page_num": 0, - "text": "include", - "position": { - "top": 2994, - "bottom": 3045, - "left": 520, - "right": 667 - } - }, - { - "doc_offset": { - "start": 1264, - "end": 1267 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 2994, - "bottom": 3045, - "left": 677, - "right": 743 - } - }, - { - "doc_offset": { - "start": 1268, - "end": 1275 - }, - "page_num": 0, - "text": "primary", - "position": { - "top": 2994, - "bottom": 3045, - "left": 757, - "right": 911 - } - }, - { - "doc_offset": { - "start": 1276, - "end": 1279 - }, - "page_num": 0, - "text": "key", - "position": { - "top": 2994, - "bottom": 3046, - "left": 921, - "right": 997 - } - }, - { - "doc_offset": { - "start": 1280, - "end": 1282 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1027, - "right": 1073 - } - }, - { - "doc_offset": { - "start": 1283, - "end": 1289 - }, - "page_num": 0, - "text": "needed", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1098, - "right": 1250 - } - }, - { - "doc_offset": { - "start": 1290, - "end": 1292 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1263, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 1293, - "end": 1299 - }, - "page_num": 0, - "text": "update", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1322, - "right": 1464 - } - }, - { - "doc_offset": { - "start": 1300, - "end": 1308 - }, - "page_num": 0, - "text": "existing", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1476, - "right": 1631 - } - }, - { - "doc_offset": { - "start": 1309, - "end": 1313 - }, - "page_num": 0, - "text": "rows", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1644, - "right": 1746 - } - }, - { - "doc_offset": { - "start": 1314, - "end": 1317 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 2994, - "bottom": 3045, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 1318, - "end": 1324 - }, - "page_num": 0, - "text": "insert", - "position": { - "top": 2994, - "bottom": 3045, - "left": 1845, - "right": 1962 - } - }, - { - "doc_offset": { - "start": 1325, - "end": 1328 - }, - "page_num": 0, - "text": "new", - "position": { - "top": 2994, - "bottom": 3045, - "left": 1974, - "right": 2048 - } - }, - { - "doc_offset": { - "start": 1329, - "end": 1333 - }, - "page_num": 0, - "text": "rows", - "position": { - "top": 2994, - "bottom": 3045, - "left": 2070, - "right": 2170 - } - }, - { - "doc_offset": { - "start": 1334, - "end": 1338 - }, - "page_num": 0, - "text": "into", - "position": { - "top": 2994, - "bottom": 3043, - "left": 2181, - "right": 2259 - } - }, - { - "doc_offset": { - "start": 1339, - "end": 1342 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 2994, - "bottom": 3043, - "left": 2273, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 1343, - "end": 1350 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 3057, - "bottom": 3102, - "left": 214, - "right": 356 - } - }, - { - "doc_offset": { - "start": 1351, - "end": 1360 - }, - "page_num": 0, - "text": "database.", - "position": { - "top": 3057, - "bottom": 3102, - "left": 368, - "right": 563 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4289/107457/101156/page_info_1.json b/tests/data/etloutput/4289/107457/101156/page_info_1.json deleted file mode 100644 index eba2332..0000000 --- a/tests/data/etloutput/4289/107457/101156/page_info_1.json +++ /dev/null @@ -1,1134 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 1361, - "end": 1845 - }, - "page_num": 1, - "text": "1.2 Model\nColumn\tType\tGraphQL Source\nid\tint\tmodelGroup. id\nname\tstr\tmodel Group. name\nworkflow_id\tint\tmodel Group. workflowId\nExample GraphQL Query\nquery Models {\nmodelGroups(Limit: 1000) {\nmodel Groups {\nid\nname\nworkflowId\n}\n}\n}\nScheduled Process Logic\nThis is a lightweight query. All models will be pulled every time the integration is run.\nData Reconciliation\nThe output will include the primary key id needed to update existing rows and insert new rows into the\nMetrics database." - } - ], - "tokens": [ - { - "doc_offset": { - "start": 1361, - "end": 1364 - }, - "page_num": 1, - "text": "1.2", - "position": { - "top": 51, - "bottom": 105, - "left": 220, - "right": 306 - } - }, - { - "doc_offset": { - "start": 1365, - "end": 1370 - }, - "page_num": 1, - "text": "Model", - "position": { - "top": 51, - "bottom": 105, - "left": 363, - "right": 551 - } - }, - { - "doc_offset": { - "start": 1371, - "end": 1377 - }, - "page_num": 1, - "text": "Column", - "position": { - "top": 211, - "bottom": 253, - "left": 262, - "right": 416 - } - }, - { - "doc_offset": { - "start": 1378, - "end": 1382 - }, - "page_num": 1, - "text": "Type", - "position": { - "top": 210, - "bottom": 259, - "left": 889, - "right": 984 - } - }, - { - "doc_offset": { - "start": 1383, - "end": 1390 - }, - "page_num": 1, - "text": "GraphQL", - "position": { - "top": 211, - "bottom": 257, - "left": 1252, - "right": 1435 - } - }, - { - "doc_offset": { - "start": 1391, - "end": 1397 - }, - "page_num": 1, - "text": "Source", - "position": { - "top": 211, - "bottom": 257, - "left": 1451, - "right": 1597 - } - }, - { - "doc_offset": { - "start": 1398, - "end": 1400 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 312, - "bottom": 350, - "left": 259, - "right": 289 - } - }, - { - "doc_offset": { - "start": 1401, - "end": 1404 - }, - "page_num": 1, - "text": "int", - "position": { - "top": 312, - "bottom": 350, - "left": 883, - "right": 938 - } - }, - { - "doc_offset": { - "start": 1405, - "end": 1416 - }, - "page_num": 1, - "text": "modelGroup.", - "position": { - "top": 313, - "bottom": 355, - "left": 1262, - "right": 1504 - } - }, - { - "doc_offset": { - "start": 1417, - "end": 1419 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 312, - "bottom": 355, - "left": 1512, - "right": 1555 - } - }, - { - "doc_offset": { - "start": 1420, - "end": 1424 - }, - "page_num": 1, - "text": "name", - "position": { - "top": 411, - "bottom": 446, - "left": 259, - "right": 363 - } - }, - { - "doc_offset": { - "start": 1425, - "end": 1428 - }, - "page_num": 1, - "text": "str", - "position": { - "top": 405, - "bottom": 445, - "left": 888, - "right": 936 - } - }, - { - "doc_offset": { - "start": 1429, - "end": 1434 - }, - "page_num": 1, - "text": "model", - "position": { - "top": 406, - "bottom": 448, - "left": 1262, - "right": 1369 - } - }, - { - "doc_offset": { - "start": 1435, - "end": 1441 - }, - "page_num": 1, - "text": "Group.", - "position": { - "top": 408, - "bottom": 448, - "left": 1376, - "right": 1501 - } - }, - { - "doc_offset": { - "start": 1442, - "end": 1446 - }, - "page_num": 1, - "text": "name", - "position": { - "top": 409, - "bottom": 448, - "left": 1509, - "right": 1601 - } - }, - { - "doc_offset": { - "start": 1447, - "end": 1458 - }, - "page_num": 1, - "text": "workflow_id", - "position": { - "top": 498, - "bottom": 542, - "left": 259, - "right": 494 - } - }, - { - "doc_offset": { - "start": 1459, - "end": 1462 - }, - "page_num": 1, - "text": "int", - "position": { - "top": 495, - "bottom": 537, - "left": 882, - "right": 938 - } - }, - { - "doc_offset": { - "start": 1463, - "end": 1468 - }, - "page_num": 1, - "text": "model", - "position": { - "top": 498, - "bottom": 539, - "left": 1262, - "right": 1366 - } - }, - { - "doc_offset": { - "start": 1469, - "end": 1475 - }, - "page_num": 1, - "text": "Group.", - "position": { - "top": 498, - "bottom": 539, - "left": 1375, - "right": 1497 - } - }, - { - "doc_offset": { - "start": 1476, - "end": 1486 - }, - "page_num": 1, - "text": "workflowId", - "position": { - "top": 497, - "bottom": 539, - "left": 1505, - "right": 1733 - } - }, - { - "doc_offset": { - "start": 1487, - "end": 1494 - }, - "page_num": 1, - "text": "Example", - "position": { - "top": 627, - "bottom": 676, - "left": 212, - "right": 391 - } - }, - { - "doc_offset": { - "start": 1495, - "end": 1502 - }, - "page_num": 1, - "text": "GraphQL", - "position": { - "top": 625, - "bottom": 676, - "left": 401, - "right": 590 - } - }, - { - "doc_offset": { - "start": 1503, - "end": 1508 - }, - "page_num": 1, - "text": "Query", - "position": { - "top": 625, - "bottom": 677, - "left": 604, - "right": 730 - } - }, - { - "doc_offset": { - "start": 1509, - "end": 1514 - }, - "page_num": 1, - "text": "query", - "position": { - "top": 741, - "bottom": 793, - "left": 242, - "right": 375 - } - }, - { - "doc_offset": { - "start": 1515, - "end": 1521 - }, - "page_num": 1, - "text": "Models", - "position": { - "top": 741, - "bottom": 794, - "left": 392, - "right": 565 - } - }, - { - "doc_offset": { - "start": 1522, - "end": 1523 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 740, - "bottom": 794, - "left": 593, - "right": 618 - } - }, - { - "doc_offset": { - "start": 1524, - "end": 1542 - }, - "page_num": 1, - "text": "modelGroups(Limit:", - "position": { - "top": 806, - "bottom": 855, - "left": 325, - "right": 815 - } - }, - { - "doc_offset": { - "start": 1543, - "end": 1548 - }, - "page_num": 1, - "text": "1000)", - "position": { - "top": 800, - "bottom": 856, - "left": 840, - "right": 981 - } - }, - { - "doc_offset": { - "start": 1549, - "end": 1550 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 800, - "bottom": 856, - "left": 1002, - "right": 1031 - } - }, - { - "doc_offset": { - "start": 1551, - "end": 1556 - }, - "page_num": 1, - "text": "model", - "position": { - "top": 866, - "bottom": 918, - "left": 435, - "right": 560 - } - }, - { - "doc_offset": { - "start": 1557, - "end": 1563 - }, - "page_num": 1, - "text": "Groups", - "position": { - "top": 866, - "bottom": 918, - "left": 571, - "right": 732 - } - }, - { - "doc_offset": { - "start": 1564, - "end": 1565 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 865, - "bottom": 916, - "left": 763, - "right": 787 - } - }, - { - "doc_offset": { - "start": 1566, - "end": 1568 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 929, - "bottom": 973, - "left": 545, - "right": 593 - } - }, - { - "doc_offset": { - "start": 1569, - "end": 1573 - }, - "page_num": 1, - "text": "name", - "position": { - "top": 998, - "bottom": 1035, - "left": 542, - "right": 646 - } - }, - { - "doc_offset": { - "start": 1574, - "end": 1584 - }, - "page_num": 1, - "text": "workflowId", - "position": { - "top": 1055, - "bottom": 1098, - "left": 544, - "right": 806 - } - }, - { - "doc_offset": { - "start": 1585, - "end": 1586 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1115, - "bottom": 1165, - "left": 436, - "right": 455 - } - }, - { - "doc_offset": { - "start": 1587, - "end": 1588 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1178, - "bottom": 1224, - "left": 329, - "right": 346 - } - }, - { - "doc_offset": { - "start": 1589, - "end": 1590 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1241, - "bottom": 1287, - "left": 223, - "right": 239 - } - }, - { - "doc_offset": { - "start": 1591, - "end": 1600 - }, - "page_num": 1, - "text": "Scheduled", - "position": { - "top": 1360, - "bottom": 1403, - "left": 212, - "right": 426 - } - }, - { - "doc_offset": { - "start": 1601, - "end": 1608 - }, - "page_num": 1, - "text": "Process", - "position": { - "top": 1359, - "bottom": 1407, - "left": 442, - "right": 614 - } - }, - { - "doc_offset": { - "start": 1609, - "end": 1614 - }, - "page_num": 1, - "text": "Logic", - "position": { - "top": 1359, - "bottom": 1409, - "left": 623, - "right": 740 - } - }, - { - "doc_offset": { - "start": 1615, - "end": 1619 - }, - "page_num": 1, - "text": "This", - "position": { - "top": 1463, - "bottom": 1511, - "left": 213, - "right": 286 - } - }, - { - "doc_offset": { - "start": 1620, - "end": 1622 - }, - "page_num": 1, - "text": "is", - "position": { - "top": 1463, - "bottom": 1512, - "left": 296, - "right": 336 - } - }, - { - "doc_offset": { - "start": 1623, - "end": 1624 - }, - "page_num": 1, - "text": "a", - "position": { - "top": 1463, - "bottom": 1512, - "left": 348, - "right": 366 - } - }, - { - "doc_offset": { - "start": 1625, - "end": 1636 - }, - "page_num": 1, - "text": "lightweight", - "position": { - "top": 1463, - "bottom": 1512, - "left": 378, - "right": 594 - } - }, - { - "doc_offset": { - "start": 1637, - "end": 1643 - }, - "page_num": 1, - "text": "query.", - "position": { - "top": 1462, - "bottom": 1513, - "left": 605, - "right": 729 - } - }, - { - "doc_offset": { - "start": 1644, - "end": 1647 - }, - "page_num": 1, - "text": "All", - "position": { - "top": 1462, - "bottom": 1513, - "left": 739, - "right": 786 - } - }, - { - "doc_offset": { - "start": 1648, - "end": 1654 - }, - "page_num": 1, - "text": "models", - "position": { - "top": 1460, - "bottom": 1513, - "left": 796, - "right": 944 - } - }, - { - "doc_offset": { - "start": 1655, - "end": 1659 - }, - "page_num": 1, - "text": "will", - "position": { - "top": 1460, - "bottom": 1513, - "left": 954, - "right": 1017 - } - }, - { - "doc_offset": { - "start": 1660, - "end": 1662 - }, - "page_num": 1, - "text": "be", - "position": { - "top": 1460, - "bottom": 1513, - "left": 1027, - "right": 1077 - } - }, - { - "doc_offset": { - "start": 1663, - "end": 1669 - }, - "page_num": 1, - "text": "pulled", - "position": { - "top": 1460, - "bottom": 1513, - "left": 1088, - "right": 1209 - } - }, - { - "doc_offset": { - "start": 1670, - "end": 1675 - }, - "page_num": 1, - "text": "every", - "position": { - "top": 1460, - "bottom": 1513, - "left": 1221, - "right": 1326 - } - }, - { - "doc_offset": { - "start": 1676, - "end": 1680 - }, - "page_num": 1, - "text": "time", - "position": { - "top": 1460, - "bottom": 1513, - "left": 1336, - "right": 1422 - } - }, - { - "doc_offset": { - "start": 1681, - "end": 1684 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1462, - "bottom": 1513, - "left": 1434, - "right": 1497 - } - }, - { - "doc_offset": { - "start": 1685, - "end": 1696 - }, - "page_num": 1, - "text": "integration", - "position": { - "top": 1462, - "bottom": 1512, - "left": 1507, - "right": 1714 - } - }, - { - "doc_offset": { - "start": 1697, - "end": 1699 - }, - "page_num": 1, - "text": "is", - "position": { - "top": 1462, - "bottom": 1512, - "left": 1724, - "right": 1762 - } - }, - { - "doc_offset": { - "start": 1700, - "end": 1704 - }, - "page_num": 1, - "text": "run.", - "position": { - "top": 1462, - "bottom": 1512, - "left": 1772, - "right": 1849 - } - }, - { - "doc_offset": { - "start": 1705, - "end": 1709 - }, - "page_num": 1, - "text": "Data", - "position": { - "top": 1569, - "bottom": 1615, - "left": 210, - "right": 306 - } - }, - { - "doc_offset": { - "start": 1710, - "end": 1724 - }, - "page_num": 1, - "text": "Reconciliation", - "position": { - "top": 1569, - "bottom": 1614, - "left": 319, - "right": 614 - } - }, - { - "doc_offset": { - "start": 1725, - "end": 1728 - }, - "page_num": 1, - "text": "The", - "position": { - "top": 1672, - "bottom": 1723, - "left": 212, - "right": 282 - } - }, - { - "doc_offset": { - "start": 1729, - "end": 1735 - }, - "page_num": 1, - "text": "output", - "position": { - "top": 1672, - "bottom": 1724, - "left": 300, - "right": 431 - } - }, - { - "doc_offset": { - "start": 1736, - "end": 1740 - }, - "page_num": 1, - "text": "will", - "position": { - "top": 1672, - "bottom": 1724, - "left": 442, - "right": 505 - } - }, - { - "doc_offset": { - "start": 1741, - "end": 1748 - }, - "page_num": 1, - "text": "include", - "position": { - "top": 1672, - "bottom": 1724, - "left": 517, - "right": 666 - } - }, - { - "doc_offset": { - "start": 1749, - "end": 1752 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1671, - "bottom": 1724, - "left": 680, - "right": 743 - } - }, - { - "doc_offset": { - "start": 1753, - "end": 1760 - }, - "page_num": 1, - "text": "primary", - "position": { - "top": 1671, - "bottom": 1724, - "left": 757, - "right": 909 - } - }, - { - "doc_offset": { - "start": 1761, - "end": 1764 - }, - "page_num": 1, - "text": "key", - "position": { - "top": 1671, - "bottom": 1724, - "left": 921, - "right": 998 - } - }, - { - "doc_offset": { - "start": 1765, - "end": 1767 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1025, - "right": 1073 - } - }, - { - "doc_offset": { - "start": 1768, - "end": 1774 - }, - "page_num": 1, - "text": "needed", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1100, - "right": 1249 - } - }, - { - "doc_offset": { - "start": 1775, - "end": 1777 - }, - "page_num": 1, - "text": "to", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1263, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 1778, - "end": 1784 - }, - "page_num": 1, - "text": "update", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1320, - "right": 1462 - } - }, - { - "doc_offset": { - "start": 1785, - "end": 1793 - }, - "page_num": 1, - "text": "existing", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1476, - "right": 1628 - } - }, - { - "doc_offset": { - "start": 1794, - "end": 1798 - }, - "page_num": 1, - "text": "rows", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1643, - "right": 1744 - } - }, - { - "doc_offset": { - "start": 1799, - "end": 1802 - }, - "page_num": 1, - "text": "and", - "position": { - "top": 1671, - "bottom": 1723, - "left": 1757, - "right": 1832 - } - }, - { - "doc_offset": { - "start": 1803, - "end": 1809 - }, - "page_num": 1, - "text": "insert", - "position": { - "top": 1671, - "bottom": 1723, - "left": 1842, - "right": 1961 - } - }, - { - "doc_offset": { - "start": 1810, - "end": 1813 - }, - "page_num": 1, - "text": "new", - "position": { - "top": 1671, - "bottom": 1723, - "left": 1971, - "right": 2045 - } - }, - { - "doc_offset": { - "start": 1814, - "end": 1818 - }, - "page_num": 1, - "text": "rows", - "position": { - "top": 1672, - "bottom": 1723, - "left": 2070, - "right": 2167 - } - }, - { - "doc_offset": { - "start": 1819, - "end": 1823 - }, - "page_num": 1, - "text": "into", - "position": { - "top": 1672, - "bottom": 1723, - "left": 2178, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 1824, - "end": 1827 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1672, - "bottom": 1721, - "left": 2269, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 1828, - "end": 1835 - }, - "page_num": 1, - "text": "Metrics", - "position": { - "top": 1735, - "bottom": 1780, - "left": 212, - "right": 356 - } - }, - { - "doc_offset": { - "start": 1836, - "end": 1845 - }, - "page_num": 1, - "text": "database.", - "position": { - "top": 1735, - "bottom": 1780, - "left": 366, - "right": 567 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4289/107457/101156/page_info_2.json b/tests/data/etloutput/4289/107457/101156/page_info_2.json deleted file mode 100644 index a84e20b..0000000 --- a/tests/data/etloutput/4289/107457/101156/page_info_2.json +++ /dev/null @@ -1,2464 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 1846, - "end": 3141 - }, - "page_num": 2, - "text": "1.3 Submission\nColumn\tType\tGraphQL Source\nid\tint\tsubmission.id\ncreated_at\tdatetime\tsubmission. createdAt\nprocessed_at\tdatetime\tsubmission.review. completedAt\nreviewer_id\tint\tsubmission. review. createdBy 2\nreview_started_at\tdatetime\tsubmission.review. startedAt 2\nreview_completed_at\tdatetime\tsubmission.review. completedAt 2\nrejected\tbool\tsubmission. review. rejected 2\nrejection_reason\tstr\tsubmission.review. notes 2\ncompleted_at\tdatetime\tsubmission. completedAt\nretrieved_at\tdatetime\tsubmission. updatedAt 3\nfailed\tbool\tsubmission.status 4\nstatus\tenum\tsubmission.status\nworkflow_id\tint\tsubmission.workflowId\n1 The timestamp for submission processing being completed is not directly available on the\nInstead it's approximated by the completion time of Auto Review in the reviews list\n(where reviewType == \"AUTO\").\nsubmission object.\n2 The HITL review data points must come from the Manual Review in the reviews list\n(where reviewType == \"MANUAL\").\n3 The time of retrieval is not directly available on the submission object. Instead it's approximated by the last\nupdate time of the submission once the retrieved flag is set.\n4 The failure status is not directly available on the submission object as a boolean. Instead it's derived using the\nstatus of the submission (where status == \"FAILED\")." - } - ], - "tokens": [ - { - "doc_offset": { - "start": 1846, - "end": 1849 - }, - "page_num": 2, - "text": "1.3", - "position": { - "top": 133, - "bottom": 189, - "left": 220, - "right": 302 - } - }, - { - "doc_offset": { - "start": 1850, - "end": 1860 - }, - "page_num": 2, - "text": "Submission", - "position": { - "top": 136, - "bottom": 190, - "left": 363, - "right": 711 - } - }, - { - "doc_offset": { - "start": 1861, - "end": 1867 - }, - "page_num": 2, - "text": "Column", - "position": { - "top": 295, - "bottom": 336, - "left": 262, - "right": 415 - } - }, - { - "doc_offset": { - "start": 1868, - "end": 1872 - }, - "page_num": 2, - "text": "Type", - "position": { - "top": 295, - "bottom": 340, - "left": 954, - "right": 1045 - } - }, - { - "doc_offset": { - "start": 1873, - "end": 1880 - }, - "page_num": 2, - "text": "GraphQL", - "position": { - "top": 293, - "bottom": 340, - "left": 1310, - "right": 1495 - } - }, - { - "doc_offset": { - "start": 1881, - "end": 1887 - }, - "page_num": 2, - "text": "Source", - "position": { - "top": 295, - "bottom": 340, - "left": 1511, - "right": 1656 - } - }, - { - "doc_offset": { - "start": 1888, - "end": 1890 - }, - "page_num": 2, - "text": "id", - "position": { - "top": 393, - "bottom": 432, - "left": 257, - "right": 290 - } - }, - { - "doc_offset": { - "start": 1891, - "end": 1894 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 393, - "bottom": 431, - "left": 946, - "right": 999 - } - }, - { - "doc_offset": { - "start": 1895, - "end": 1908 - }, - "page_num": 2, - "text": "submission.id", - "position": { - "top": 396, - "bottom": 433, - "left": 1326, - "right": 1611 - } - }, - { - "doc_offset": { - "start": 1909, - "end": 1919 - }, - "page_num": 2, - "text": "created_at", - "position": { - "top": 489, - "bottom": 531, - "left": 259, - "right": 469 - } - }, - { - "doc_offset": { - "start": 1920, - "end": 1928 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 489, - "bottom": 529, - "left": 948, - "right": 1120 - } - }, - { - "doc_offset": { - "start": 1929, - "end": 1940 - }, - "page_num": 2, - "text": "submission.", - "position": { - "top": 489, - "bottom": 528, - "left": 1326, - "right": 1562 - } - }, - { - "doc_offset": { - "start": 1941, - "end": 1950 - }, - "page_num": 2, - "text": "createdAt", - "position": { - "top": 489, - "bottom": 528, - "left": 1571, - "right": 1769 - } - }, - { - "doc_offset": { - "start": 1951, - "end": 1963 - }, - "page_num": 2, - "text": "processed_at", - "position": { - "top": 588, - "bottom": 631, - "left": 257, - "right": 528 - } - }, - { - "doc_offset": { - "start": 1964, - "end": 1972 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 587, - "bottom": 625, - "left": 948, - "right": 1120 - } - }, - { - "doc_offset": { - "start": 1973, - "end": 1991 - }, - "page_num": 2, - "text": "submission.review.", - "position": { - "top": 592, - "bottom": 638, - "left": 1323, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 1992, - "end": 2003 - }, - "page_num": 2, - "text": "completedAt", - "position": { - "top": 592, - "bottom": 640, - "left": 1726, - "right": 1975 - } - }, - { - "doc_offset": { - "start": 2004, - "end": 2015 - }, - "page_num": 2, - "text": "reviewer_id", - "position": { - "top": 688, - "bottom": 731, - "left": 257, - "right": 478 - } - }, - { - "doc_offset": { - "start": 2016, - "end": 2019 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 688, - "bottom": 726, - "left": 948, - "right": 999 - } - }, - { - "doc_offset": { - "start": 2020, - "end": 2031 - }, - "page_num": 2, - "text": "submission.", - "position": { - "top": 698, - "bottom": 737, - "left": 1323, - "right": 1561 - } - }, - { - "doc_offset": { - "start": 2032, - "end": 2039 - }, - "page_num": 2, - "text": "review.", - "position": { - "top": 698, - "bottom": 739, - "left": 1568, - "right": 1717 - } - }, - { - "doc_offset": { - "start": 2040, - "end": 2049 - }, - "page_num": 2, - "text": "createdBy", - "position": { - "top": 697, - "bottom": 740, - "left": 1726, - "right": 1928 - } - }, - { - "doc_offset": { - "start": 2050, - "end": 2051 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 693, - "bottom": 724, - "left": 1944, - "right": 1959 - } - }, - { - "doc_offset": { - "start": 2052, - "end": 2069 - }, - "page_num": 2, - "text": "review_started_at", - "position": { - "top": 792, - "bottom": 836, - "left": 257, - "right": 607 - } - }, - { - "doc_offset": { - "start": 2070, - "end": 2078 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 792, - "bottom": 833, - "left": 948, - "right": 1117 - } - }, - { - "doc_offset": { - "start": 2079, - "end": 2097 - }, - "page_num": 2, - "text": "submission.review.", - "position": { - "top": 803, - "bottom": 840, - "left": 1323, - "right": 1717 - } - }, - { - "doc_offset": { - "start": 2098, - "end": 2107 - }, - "page_num": 2, - "text": "startedAt", - "position": { - "top": 800, - "bottom": 839, - "left": 1726, - "right": 1925 - } - }, - { - "doc_offset": { - "start": 2108, - "end": 2109 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 797, - "bottom": 826, - "left": 1944, - "right": 1958 - } - }, - { - "doc_offset": { - "start": 2110, - "end": 2129 - }, - "page_num": 2, - "text": "review_completed_at", - "position": { - "top": 890, - "bottom": 941, - "left": 253, - "right": 679 - } - }, - { - "doc_offset": { - "start": 2130, - "end": 2138 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 893, - "bottom": 933, - "left": 951, - "right": 1118 - } - }, - { - "doc_offset": { - "start": 2139, - "end": 2157 - }, - "page_num": 2, - "text": "submission.review.", - "position": { - "top": 905, - "bottom": 943, - "left": 1323, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 2158, - "end": 2169 - }, - "page_num": 2, - "text": "completedAt", - "position": { - "top": 903, - "bottom": 946, - "left": 1724, - "right": 1971 - } - }, - { - "doc_offset": { - "start": 2170, - "end": 2171 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 896, - "bottom": 929, - "left": 1986, - "right": 2004 - } - }, - { - "doc_offset": { - "start": 2172, - "end": 2180 - }, - "page_num": 2, - "text": "rejected", - "position": { - "top": 998, - "bottom": 1042, - "left": 259, - "right": 412 - } - }, - { - "doc_offset": { - "start": 2181, - "end": 2185 - }, - "page_num": 2, - "text": "bool", - "position": { - "top": 992, - "bottom": 1039, - "left": 948, - "right": 1037 - } - }, - { - "doc_offset": { - "start": 2186, - "end": 2197 - }, - "page_num": 2, - "text": "submission.", - "position": { - "top": 1009, - "bottom": 1045, - "left": 1325, - "right": 1560 - } - }, - { - "doc_offset": { - "start": 2198, - "end": 2205 - }, - "page_num": 2, - "text": "review.", - "position": { - "top": 1006, - "bottom": 1049, - "left": 1568, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 2206, - "end": 2214 - }, - "page_num": 2, - "text": "rejected", - "position": { - "top": 1006, - "bottom": 1049, - "left": 1724, - "right": 1902 - } - }, - { - "doc_offset": { - "start": 2215, - "end": 2216 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 999, - "bottom": 1035, - "left": 1921, - "right": 1938 - } - }, - { - "doc_offset": { - "start": 2217, - "end": 2233 - }, - "page_num": 2, - "text": "rejection_reason", - "position": { - "top": 1100, - "bottom": 1147, - "left": 257, - "right": 578 - } - }, - { - "doc_offset": { - "start": 2234, - "end": 2237 - }, - "page_num": 2, - "text": "str", - "position": { - "top": 1094, - "bottom": 1144, - "left": 946, - "right": 1001 - } - }, - { - "doc_offset": { - "start": 2238, - "end": 2256 - }, - "page_num": 2, - "text": "submission.review.", - "position": { - "top": 1110, - "bottom": 1148, - "left": 1326, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 2257, - "end": 2262 - }, - "page_num": 2, - "text": "notes", - "position": { - "top": 1110, - "bottom": 1147, - "left": 1723, - "right": 1838 - } - }, - { - "doc_offset": { - "start": 2263, - "end": 2264 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 1102, - "bottom": 1134, - "left": 1855, - "right": 1872 - } - }, - { - "doc_offset": { - "start": 2265, - "end": 2277 - }, - "page_num": 2, - "text": "completed_at", - "position": { - "top": 1198, - "bottom": 1241, - "left": 257, - "right": 528 - } - }, - { - "doc_offset": { - "start": 2278, - "end": 2286 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 1198, - "bottom": 1237, - "left": 951, - "right": 1117 - } - }, - { - "doc_offset": { - "start": 2287, - "end": 2298 - }, - "page_num": 2, - "text": "submission.", - "position": { - "top": 1198, - "bottom": 1238, - "left": 1325, - "right": 1560 - } - }, - { - "doc_offset": { - "start": 2299, - "end": 2310 - }, - "page_num": 2, - "text": "completedAt", - "position": { - "top": 1198, - "bottom": 1238, - "left": 1570, - "right": 1813 - } - }, - { - "doc_offset": { - "start": 2311, - "end": 2323 - }, - "page_num": 2, - "text": "retrieved_at", - "position": { - "top": 1294, - "bottom": 1336, - "left": 257, - "right": 491 - } - }, - { - "doc_offset": { - "start": 2324, - "end": 2332 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 1294, - "bottom": 1336, - "left": 951, - "right": 1118 - } - }, - { - "doc_offset": { - "start": 2333, - "end": 2344 - }, - "page_num": 2, - "text": "submission.", - "position": { - "top": 1306, - "bottom": 1347, - "left": 1323, - "right": 1560 - } - }, - { - "doc_offset": { - "start": 2345, - "end": 2354 - }, - "page_num": 2, - "text": "updatedAt", - "position": { - "top": 1306, - "bottom": 1344, - "left": 1568, - "right": 1770 - } - }, - { - "doc_offset": { - "start": 2355, - "end": 2356 - }, - "page_num": 2, - "text": "3", - "position": { - "top": 1301, - "bottom": 1343, - "left": 1785, - "right": 1807 - } - }, - { - "doc_offset": { - "start": 2357, - "end": 2363 - }, - "page_num": 2, - "text": "failed", - "position": { - "top": 1396, - "bottom": 1436, - "left": 257, - "right": 361 - } - }, - { - "doc_offset": { - "start": 2364, - "end": 2368 - }, - "page_num": 2, - "text": "bool", - "position": { - "top": 1392, - "bottom": 1440, - "left": 946, - "right": 1038 - } - }, - { - "doc_offset": { - "start": 2369, - "end": 2386 - }, - "page_num": 2, - "text": "submission.status", - "position": { - "top": 1407, - "bottom": 1446, - "left": 1323, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 2387, - "end": 2388 - }, - "page_num": 2, - "text": "4", - "position": { - "top": 1402, - "bottom": 1435, - "left": 1717, - "right": 1736 - } - }, - { - "doc_offset": { - "start": 2389, - "end": 2395 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 1498, - "bottom": 1533, - "left": 260, - "right": 378 - } - }, - { - "doc_offset": { - "start": 2396, - "end": 2400 - }, - "page_num": 2, - "text": "enum", - "position": { - "top": 1499, - "bottom": 1535, - "left": 949, - "right": 1040 - } - }, - { - "doc_offset": { - "start": 2401, - "end": 2418 - }, - "page_num": 2, - "text": "submission.status", - "position": { - "top": 1496, - "bottom": 1533, - "left": 1323, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 2419, - "end": 2430 - }, - "page_num": 2, - "text": "workflow_id", - "position": { - "top": 1589, - "bottom": 1631, - "left": 257, - "right": 488 - } - }, - { - "doc_offset": { - "start": 2431, - "end": 2434 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 1586, - "bottom": 1627, - "left": 946, - "right": 999 - } - }, - { - "doc_offset": { - "start": 2435, - "end": 2456 - }, - "page_num": 2, - "text": "submission.workflowId", - "position": { - "top": 1588, - "bottom": 1627, - "left": 1325, - "right": 1790 - } - }, - { - "doc_offset": { - "start": 2457, - "end": 2458 - }, - "page_num": 2, - "text": "1", - "position": { - "top": 1717, - "bottom": 1763, - "left": 212, - "right": 234 - } - }, - { - "doc_offset": { - "start": 2459, - "end": 2462 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 1717, - "bottom": 1763, - "left": 246, - "right": 313 - } - }, - { - "doc_offset": { - "start": 2463, - "end": 2472 - }, - "page_num": 2, - "text": "timestamp", - "position": { - "top": 1718, - "bottom": 1764, - "left": 328, - "right": 521 - } - }, - { - "doc_offset": { - "start": 2473, - "end": 2476 - }, - "page_num": 2, - "text": "for", - "position": { - "top": 1718, - "bottom": 1766, - "left": 535, - "right": 593 - } - }, - { - "doc_offset": { - "start": 2477, - "end": 2487 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 1718, - "bottom": 1766, - "left": 603, - "right": 810 - } - }, - { - "doc_offset": { - "start": 2488, - "end": 2498 - }, - "page_num": 2, - "text": "processing", - "position": { - "top": 1720, - "bottom": 1767, - "left": 825, - "right": 1027 - } - }, - { - "doc_offset": { - "start": 2499, - "end": 2504 - }, - "page_num": 2, - "text": "being", - "position": { - "top": 1720, - "bottom": 1767, - "left": 1042, - "right": 1144 - } - }, - { - "doc_offset": { - "start": 2505, - "end": 2514 - }, - "page_num": 2, - "text": "completed", - "position": { - "top": 1720, - "bottom": 1767, - "left": 1160, - "right": 1356 - } - }, - { - "doc_offset": { - "start": 2515, - "end": 2517 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 1720, - "bottom": 1767, - "left": 1368, - "right": 1406 - } - }, - { - "doc_offset": { - "start": 2518, - "end": 2521 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 1720, - "bottom": 1766, - "left": 1416, - "right": 1485 - } - }, - { - "doc_offset": { - "start": 2522, - "end": 2530 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 1721, - "bottom": 1766, - "left": 1494, - "right": 1630 - } - }, - { - "doc_offset": { - "start": 2531, - "end": 2540 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 1721, - "bottom": 1763, - "left": 1641, - "right": 1802 - } - }, - { - "doc_offset": { - "start": 2541, - "end": 2543 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 1721, - "bottom": 1763, - "left": 1817, - "right": 1862 - } - }, - { - "doc_offset": { - "start": 2544, - "end": 2547 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1721, - "bottom": 1761, - "left": 1880, - "right": 1941 - } - }, - { - "doc_offset": { - "start": 2548, - "end": 2555 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 1771, - "bottom": 1816, - "left": 242, - "right": 372 - } - }, - { - "doc_offset": { - "start": 2556, - "end": 2560 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 1771, - "bottom": 1816, - "left": 382, - "right": 441 - } - }, - { - "doc_offset": { - "start": 2561, - "end": 2573 - }, - "page_num": 2, - "text": "approximated", - "position": { - "top": 1770, - "bottom": 1816, - "left": 451, - "right": 701 - } - }, - { - "doc_offset": { - "start": 2574, - "end": 2576 - }, - "page_num": 2, - "text": "by", - "position": { - "top": 1770, - "bottom": 1817, - "left": 713, - "right": 759 - } - }, - { - "doc_offset": { - "start": 2577, - "end": 2580 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1770, - "bottom": 1817, - "left": 767, - "right": 828 - } - }, - { - "doc_offset": { - "start": 2581, - "end": 2591 - }, - "page_num": 2, - "text": "completion", - "position": { - "top": 1770, - "bottom": 1816, - "left": 838, - "right": 1038 - } - }, - { - "doc_offset": { - "start": 2592, - "end": 2596 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 1770, - "bottom": 1816, - "left": 1050, - "right": 1130 - } - }, - { - "doc_offset": { - "start": 2597, - "end": 2599 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 1770, - "bottom": 1816, - "left": 1143, - "right": 1179 - } - }, - { - "doc_offset": { - "start": 2600, - "end": 2604 - }, - "page_num": 2, - "text": "Auto", - "position": { - "top": 1770, - "bottom": 1816, - "left": 1189, - "right": 1272 - } - }, - { - "doc_offset": { - "start": 2605, - "end": 2611 - }, - "page_num": 2, - "text": "Review", - "position": { - "top": 1771, - "bottom": 1814, - "left": 1283, - "right": 1406 - } - }, - { - "doc_offset": { - "start": 2612, - "end": 2614 - }, - "page_num": 2, - "text": "in", - "position": { - "top": 1771, - "bottom": 1813, - "left": 1425, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 2615, - "end": 2618 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1771, - "bottom": 1813, - "left": 1468, - "right": 1528 - } - }, - { - "doc_offset": { - "start": 2619, - "end": 2626 - }, - "page_num": 2, - "text": "reviews", - "position": { - "top": 1773, - "bottom": 1811, - "left": 1551, - "right": 1700 - } - }, - { - "doc_offset": { - "start": 2627, - "end": 2631 - }, - "page_num": 2, - "text": "list", - "position": { - "top": 1773, - "bottom": 1810, - "left": 1719, - "right": 1776 - } - }, - { - "doc_offset": { - "start": 2632, - "end": 2638 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 1821, - "bottom": 1867, - "left": 239, - "right": 361 - } - }, - { - "doc_offset": { - "start": 2639, - "end": 2649 - }, - "page_num": 2, - "text": "reviewType", - "position": { - "top": 1821, - "bottom": 1867, - "left": 385, - "right": 594 - } - }, - { - "doc_offset": { - "start": 2650, - "end": 2652 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 1821, - "bottom": 1867, - "left": 617, - "right": 667 - } - }, - { - "doc_offset": { - "start": 2653, - "end": 2661 - }, - "page_num": 2, - "text": "\"AUTO\").", - "position": { - "top": 1821, - "bottom": 1867, - "left": 677, - "right": 845 - } - }, - { - "doc_offset": { - "start": 2662, - "end": 2672 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 1720, - "bottom": 1768, - "left": 1969, - "right": 2178 - } - }, - { - "doc_offset": { - "start": 2673, - "end": 2680 - }, - "page_num": 2, - "text": "object.", - "position": { - "top": 1720, - "bottom": 1767, - "left": 2211, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 2681, - "end": 2682 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 1922, - "bottom": 1966, - "left": 209, - "right": 232 - } - }, - { - "doc_offset": { - "start": 2683, - "end": 2686 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 1922, - "bottom": 1967, - "left": 243, - "right": 308 - } - }, - { - "doc_offset": { - "start": 2687, - "end": 2691 - }, - "page_num": 2, - "text": "HITL", - "position": { - "top": 1922, - "bottom": 1967, - "left": 316, - "right": 402 - } - }, - { - "doc_offset": { - "start": 2692, - "end": 2698 - }, - "page_num": 2, - "text": "review", - "position": { - "top": 1923, - "bottom": 1969, - "left": 414, - "right": 522 - } - }, - { - "doc_offset": { - "start": 2699, - "end": 2703 - }, - "page_num": 2, - "text": "data", - "position": { - "top": 1923, - "bottom": 1969, - "left": 542, - "right": 626 - } - }, - { - "doc_offset": { - "start": 2704, - "end": 2710 - }, - "page_num": 2, - "text": "points", - "position": { - "top": 1925, - "bottom": 1970, - "left": 634, - "right": 746 - } - }, - { - "doc_offset": { - "start": 2711, - "end": 2715 - }, - "page_num": 2, - "text": "must", - "position": { - "top": 1925, - "bottom": 1970, - "left": 754, - "right": 852 - } - }, - { - "doc_offset": { - "start": 2716, - "end": 2720 - }, - "page_num": 2, - "text": "come", - "position": { - "top": 1925, - "bottom": 1970, - "left": 860, - "right": 961 - } - }, - { - "doc_offset": { - "start": 2721, - "end": 2725 - }, - "page_num": 2, - "text": "from", - "position": { - "top": 1925, - "bottom": 1970, - "left": 972, - "right": 1041 - } - }, - { - "doc_offset": { - "start": 2726, - "end": 2729 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1926, - "bottom": 1970, - "left": 1064, - "right": 1124 - } - }, - { - "doc_offset": { - "start": 2730, - "end": 2736 - }, - "page_num": 2, - "text": "Manual", - "position": { - "top": 1926, - "bottom": 1969, - "left": 1133, - "right": 1272 - } - }, - { - "doc_offset": { - "start": 2737, - "end": 2743 - }, - "page_num": 2, - "text": "Review", - "position": { - "top": 1926, - "bottom": 1969, - "left": 1280, - "right": 1403 - } - }, - { - "doc_offset": { - "start": 2744, - "end": 2746 - }, - "page_num": 2, - "text": "in", - "position": { - "top": 1926, - "bottom": 1967, - "left": 1421, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 2747, - "end": 2750 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1926, - "bottom": 1967, - "left": 1464, - "right": 1524 - } - }, - { - "doc_offset": { - "start": 2751, - "end": 2758 - }, - "page_num": 2, - "text": "reviews", - "position": { - "top": 1926, - "bottom": 1966, - "left": 1547, - "right": 1699 - } - }, - { - "doc_offset": { - "start": 2759, - "end": 2763 - }, - "page_num": 2, - "text": "list", - "position": { - "top": 1927, - "bottom": 1965, - "left": 1716, - "right": 1774 - } - }, - { - "doc_offset": { - "start": 2764, - "end": 2770 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 1976, - "bottom": 2022, - "left": 240, - "right": 361 - } - }, - { - "doc_offset": { - "start": 2771, - "end": 2781 - }, - "page_num": 2, - "text": "reviewType", - "position": { - "top": 1977, - "bottom": 2020, - "left": 385, - "right": 595 - } - }, - { - "doc_offset": { - "start": 2782, - "end": 2784 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 1976, - "bottom": 2020, - "left": 614, - "right": 667 - } - }, - { - "doc_offset": { - "start": 2785, - "end": 2795 - }, - "page_num": 2, - "text": "\"MANUAL\").", - "position": { - "top": 1976, - "bottom": 2020, - "left": 676, - "right": 906 - } - }, - { - "doc_offset": { - "start": 2796, - "end": 2797 - }, - "page_num": 2, - "text": "3", - "position": { - "top": 2075, - "bottom": 2125, - "left": 209, - "right": 233 - } - }, - { - "doc_offset": { - "start": 2798, - "end": 2801 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 2075, - "bottom": 2125, - "left": 247, - "right": 316 - } - }, - { - "doc_offset": { - "start": 2802, - "end": 2806 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 2076, - "bottom": 2125, - "left": 330, - "right": 412 - } - }, - { - "doc_offset": { - "start": 2807, - "end": 2809 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2076, - "bottom": 2125, - "left": 429, - "right": 468 - } - }, - { - "doc_offset": { - "start": 2810, - "end": 2819 - }, - "page_num": 2, - "text": "retrieval", - "position": { - "top": 2076, - "bottom": 2125, - "left": 478, - "right": 630 - } - }, - { - "doc_offset": { - "start": 2820, - "end": 2822 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2076, - "bottom": 2126, - "left": 640, - "right": 679 - } - }, - { - "doc_offset": { - "start": 2823, - "end": 2826 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 2076, - "bottom": 2126, - "left": 690, - "right": 757 - } - }, - { - "doc_offset": { - "start": 2827, - "end": 2835 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 2078, - "bottom": 2126, - "left": 769, - "right": 906 - } - }, - { - "doc_offset": { - "start": 2836, - "end": 2845 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 2078, - "bottom": 2128, - "left": 921, - "right": 1081 - } - }, - { - "doc_offset": { - "start": 2846, - "end": 2848 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 2078, - "bottom": 2128, - "left": 1095, - "right": 1144 - } - }, - { - "doc_offset": { - "start": 2849, - "end": 2852 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2078, - "bottom": 2128, - "left": 1158, - "right": 1223 - } - }, - { - "doc_offset": { - "start": 2853, - "end": 2863 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2078, - "bottom": 2128, - "left": 1250, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 2864, - "end": 2871 - }, - "page_num": 2, - "text": "object.", - "position": { - "top": 2078, - "bottom": 2128, - "left": 1491, - "right": 1623 - } - }, - { - "doc_offset": { - "start": 2872, - "end": 2879 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 2078, - "bottom": 2128, - "left": 1633, - "right": 1772 - } - }, - { - "doc_offset": { - "start": 2880, - "end": 2884 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 2078, - "bottom": 2129, - "left": 1785, - "right": 1848 - } - }, - { - "doc_offset": { - "start": 2885, - "end": 2897 - }, - "page_num": 2, - "text": "approximated", - "position": { - "top": 2078, - "bottom": 2129, - "left": 1860, - "right": 2114 - } - }, - { - "doc_offset": { - "start": 2898, - "end": 2900 - }, - "page_num": 2, - "text": "by", - "position": { - "top": 2078, - "bottom": 2129, - "left": 2127, - "right": 2180 - } - }, - { - "doc_offset": { - "start": 2901, - "end": 2904 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2078, - "bottom": 2129, - "left": 2193, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 2905, - "end": 2909 - }, - "page_num": 2, - "text": "last", - "position": { - "top": 2078, - "bottom": 2128, - "left": 2266, - "right": 2343 - } - }, - { - "doc_offset": { - "start": 2910, - "end": 2916 - }, - "page_num": 2, - "text": "update", - "position": { - "top": 2132, - "bottom": 2175, - "left": 240, - "right": 369 - } - }, - { - "doc_offset": { - "start": 2917, - "end": 2921 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 2131, - "bottom": 2175, - "left": 379, - "right": 458 - } - }, - { - "doc_offset": { - "start": 2922, - "end": 2924 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2131, - "bottom": 2175, - "left": 469, - "right": 507 - } - }, - { - "doc_offset": { - "start": 2925, - "end": 2928 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2131, - "bottom": 2174, - "left": 515, - "right": 571 - } - }, - { - "doc_offset": { - "start": 2929, - "end": 2939 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2131, - "bottom": 2174, - "left": 584, - "right": 787 - } - }, - { - "doc_offset": { - "start": 2940, - "end": 2944 - }, - "page_num": 2, - "text": "once", - "position": { - "top": 2131, - "bottom": 2174, - "left": 803, - "right": 891 - } - }, - { - "doc_offset": { - "start": 2945, - "end": 2948 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2131, - "bottom": 2174, - "left": 902, - "right": 959 - } - }, - { - "doc_offset": { - "start": 2949, - "end": 2958 - }, - "page_num": 2, - "text": "retrieved", - "position": { - "top": 2131, - "bottom": 2174, - "left": 985, - "right": 1173 - } - }, - { - "doc_offset": { - "start": 2959, - "end": 2963 - }, - "page_num": 2, - "text": "flag", - "position": { - "top": 2132, - "bottom": 2174, - "left": 1196, - "right": 1264 - } - }, - { - "doc_offset": { - "start": 2964, - "end": 2966 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2132, - "bottom": 2174, - "left": 1273, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 2967, - "end": 2971 - }, - "page_num": 2, - "text": "set.", - "position": { - "top": 2134, - "bottom": 2174, - "left": 1315, - "right": 1382 - } - }, - { - "doc_offset": { - "start": 2972, - "end": 2973 - }, - "page_num": 2, - "text": "4", - "position": { - "top": 2232, - "bottom": 2275, - "left": 209, - "right": 232 - } - }, - { - "doc_offset": { - "start": 2974, - "end": 2977 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 2232, - "bottom": 2275, - "left": 246, - "right": 312 - } - }, - { - "doc_offset": { - "start": 2978, - "end": 2985 - }, - "page_num": 2, - "text": "failure", - "position": { - "top": 2232, - "bottom": 2275, - "left": 323, - "right": 436 - } - }, - { - "doc_offset": { - "start": 2986, - "end": 2992 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2234, - "bottom": 2277, - "left": 451, - "right": 563 - } - }, - { - "doc_offset": { - "start": 2993, - "end": 2995 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2234, - "bottom": 2277, - "left": 573, - "right": 610 - } - }, - { - "doc_offset": { - "start": 2996, - "end": 2999 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 2234, - "bottom": 2277, - "left": 620, - "right": 684 - } - }, - { - "doc_offset": { - "start": 3000, - "end": 3008 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 2235, - "bottom": 2278, - "left": 693, - "right": 829 - } - }, - { - "doc_offset": { - "start": 3009, - "end": 3018 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 2235, - "bottom": 2278, - "left": 842, - "right": 1001 - } - }, - { - "doc_offset": { - "start": 3019, - "end": 3021 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 2235, - "bottom": 2280, - "left": 1017, - "right": 1060 - } - }, - { - "doc_offset": { - "start": 3022, - "end": 3025 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2235, - "bottom": 2280, - "left": 1075, - "right": 1137 - } - }, - { - "doc_offset": { - "start": 3026, - "end": 3036 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2235, - "bottom": 2280, - "left": 1164, - "right": 1370 - } - }, - { - "doc_offset": { - "start": 3037, - "end": 3043 - }, - "page_num": 2, - "text": "object", - "position": { - "top": 2235, - "bottom": 2280, - "left": 1401, - "right": 1522 - } - }, - { - "doc_offset": { - "start": 3044, - "end": 3046 - }, - "page_num": 2, - "text": "as", - "position": { - "top": 2235, - "bottom": 2280, - "left": 1531, - "right": 1575 - } - }, - { - "doc_offset": { - "start": 3047, - "end": 3048 - }, - "page_num": 2, - "text": "a", - "position": { - "top": 2235, - "bottom": 2281, - "left": 1588, - "right": 1611 - } - }, - { - "doc_offset": { - "start": 3049, - "end": 3057 - }, - "page_num": 2, - "text": "boolean.", - "position": { - "top": 2235, - "bottom": 2281, - "left": 1623, - "right": 1786 - } - }, - { - "doc_offset": { - "start": 3058, - "end": 3065 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 2235, - "bottom": 2281, - "left": 1795, - "right": 1931 - } - }, - { - "doc_offset": { - "start": 3066, - "end": 3070 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 2234, - "bottom": 2281, - "left": 1944, - "right": 2005 - } - }, - { - "doc_offset": { - "start": 3071, - "end": 3078 - }, - "page_num": 2, - "text": "derived", - "position": { - "top": 2234, - "bottom": 2281, - "left": 2014, - "right": 2150 - } - }, - { - "doc_offset": { - "start": 3079, - "end": 3084 - }, - "page_num": 2, - "text": "using", - "position": { - "top": 2232, - "bottom": 2281, - "left": 2166, - "right": 2264 - } - }, - { - "doc_offset": { - "start": 3085, - "end": 3088 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2232, - "bottom": 2281, - "left": 2277, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 3089, - "end": 3095 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2284, - "bottom": 2333, - "left": 257, - "right": 383 - } - }, - { - "doc_offset": { - "start": 3096, - "end": 3098 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2284, - "bottom": 2333, - "left": 403, - "right": 438 - } - }, - { - "doc_offset": { - "start": 3099, - "end": 3102 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2284, - "bottom": 2333, - "left": 448, - "right": 508 - } - }, - { - "doc_offset": { - "start": 3103, - "end": 3113 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2284, - "bottom": 2333, - "left": 518, - "right": 724 - } - }, - { - "doc_offset": { - "start": 3114, - "end": 3120 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 2284, - "bottom": 2333, - "left": 734, - "right": 858 - } - }, - { - "doc_offset": { - "start": 3121, - "end": 3127 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2284, - "bottom": 2333, - "left": 881, - "right": 1011 - } - }, - { - "doc_offset": { - "start": 3128, - "end": 3130 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 2284, - "bottom": 2333, - "left": 1028, - "right": 1078 - } - }, - { - "doc_offset": { - "start": 3131, - "end": 3141 - }, - "page_num": 2, - "text": "\"FAILED\").", - "position": { - "top": 2284, - "bottom": 2331, - "left": 1088, - "right": 1286 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4289/107457/101156/page_info_3.json b/tests/data/etloutput/4289/107457/101156/page_info_3.json deleted file mode 100644 index 5a3d27c..0000000 --- a/tests/data/etloutput/4289/107457/101156/page_info_3.json +++ /dev/null @@ -1,2156 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 3142, - "end": 4185 - }, - "page_num": 3, - "text": "Example GraphQL Query\nquery Submissions {\nsubmissions(orderBy: UPDATED_BY, desc: true, limit: 1000) {\nsubmissions {\nid\ncreatedAt\ninputFiles {\nid\nfilename\n}\nreviews {\ncreatedBy\nstartedAt\ncompletedAt\nrejected\nnotes\nreviewType\n}\nretrieved\nupdatedAt\nworkflowId\n}\n}\n}\nScheduled Process Logic\nThis is a heavyweight query. Submissions are ordered by updatedAt descending, and results should be\npaginated such that processing can stop once all submissions have been processed whose updatedAt\ndate is greater than the timestamp of the previous run of the integration.\nData Reconciliation\nThe output will include the primary key id needed to update existing rows and insert new rows into the\nMetrics database.\n1.4 Submission File\nColumn\tType\tGraphQL Source\nid\tint\tsubmission. inputFile.id\nname\tstr\tsubmission. inputFile.filename\nsubmission_id\tint\tsubmission.id\nSee the Submission section's example GraphQL query.\nData Reconciliation\nThe output will include the primary key id needed to update existing rows and insert new rows into the\nMetrics database." - } - ], - "tokens": [ - { - "doc_offset": { - "start": 3142, - "end": 3149 - }, - "page_num": 3, - "text": "Example", - "position": { - "top": 11, - "bottom": 57, - "left": 210, - "right": 388 - } - }, - { - "doc_offset": { - "start": 3150, - "end": 3157 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 8, - "bottom": 58, - "left": 402, - "right": 588 - } - }, - { - "doc_offset": { - "start": 3158, - "end": 3163 - }, - "page_num": 3, - "text": "Query", - "position": { - "top": 8, - "bottom": 58, - "left": 604, - "right": 729 - } - }, - { - "doc_offset": { - "start": 3164, - "end": 3169 - }, - "page_num": 3, - "text": "query", - "position": { - "top": 127, - "bottom": 176, - "left": 239, - "right": 373 - } - }, - { - "doc_offset": { - "start": 3170, - "end": 3181 - }, - "page_num": 3, - "text": "Submissions", - "position": { - "top": 124, - "bottom": 176, - "left": 401, - "right": 693 - } - }, - { - "doc_offset": { - "start": 3182, - "end": 3183 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 123, - "bottom": 176, - "left": 724, - "right": 749 - } - }, - { - "doc_offset": { - "start": 3184, - "end": 3204 - }, - "page_num": 3, - "text": "submissions(orderBy:", - "position": { - "top": 186, - "bottom": 237, - "left": 329, - "right": 869 - } - }, - { - "doc_offset": { - "start": 3205, - "end": 3216 - }, - "page_num": 3, - "text": "UPDATED_BY,", - "position": { - "top": 184, - "bottom": 239, - "left": 889, - "right": 1190 - } - }, - { - "doc_offset": { - "start": 3217, - "end": 3222 - }, - "page_num": 3, - "text": "desc:", - "position": { - "top": 183, - "bottom": 239, - "left": 1211, - "right": 1352 - } - }, - { - "doc_offset": { - "start": 3223, - "end": 3228 - }, - "page_num": 3, - "text": "true,", - "position": { - "top": 183, - "bottom": 239, - "left": 1373, - "right": 1514 - } - }, - { - "doc_offset": { - "start": 3229, - "end": 3235 - }, - "page_num": 3, - "text": "limit:", - "position": { - "top": 183, - "bottom": 239, - "left": 1535, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 3236, - "end": 3241 - }, - "page_num": 3, - "text": "1000)", - "position": { - "top": 183, - "bottom": 239, - "left": 1726, - "right": 1863 - } - }, - { - "doc_offset": { - "start": 3242, - "end": 3243 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 183, - "bottom": 239, - "left": 1885, - "right": 1915 - } - }, - { - "doc_offset": { - "start": 3244, - "end": 3255 - }, - "page_num": 3, - "text": "submissions", - "position": { - "top": 249, - "bottom": 297, - "left": 436, - "right": 732 - } - }, - { - "doc_offset": { - "start": 3256, - "end": 3257 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 247, - "bottom": 302, - "left": 762, - "right": 786 - } - }, - { - "doc_offset": { - "start": 3258, - "end": 3260 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 310, - "bottom": 356, - "left": 545, - "right": 594 - } - }, - { - "doc_offset": { - "start": 3261, - "end": 3270 - }, - "page_num": 3, - "text": "createdAt", - "position": { - "top": 378, - "bottom": 419, - "left": 545, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3271, - "end": 3281 - }, - "page_num": 3, - "text": "inputFiles", - "position": { - "top": 436, - "bottom": 486, - "left": 545, - "right": 815 - } - }, - { - "doc_offset": { - "start": 3282, - "end": 3283 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 436, - "bottom": 488, - "left": 843, - "right": 868 - } - }, - { - "doc_offset": { - "start": 3284, - "end": 3286 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 498, - "bottom": 539, - "left": 654, - "right": 701 - } - }, - { - "doc_offset": { - "start": 3287, - "end": 3295 - }, - "page_num": 3, - "text": "filename", - "position": { - "top": 562, - "bottom": 605, - "left": 654, - "right": 860 - } - }, - { - "doc_offset": { - "start": 3296, - "end": 3297 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 624, - "bottom": 671, - "left": 542, - "right": 561 - } - }, - { - "doc_offset": { - "start": 3298, - "end": 3305 - }, - "page_num": 3, - "text": "reviews", - "position": { - "top": 687, - "bottom": 733, - "left": 544, - "right": 730 - } - }, - { - "doc_offset": { - "start": 3306, - "end": 3307 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 687, - "bottom": 736, - "left": 762, - "right": 785 - } - }, - { - "doc_offset": { - "start": 3308, - "end": 3317 - }, - "page_num": 3, - "text": "createdBy", - "position": { - "top": 751, - "bottom": 799, - "left": 651, - "right": 891 - } - }, - { - "doc_offset": { - "start": 3318, - "end": 3327 - }, - "page_num": 3, - "text": "startedAt", - "position": { - "top": 813, - "bottom": 860, - "left": 651, - "right": 889 - } - }, - { - "doc_offset": { - "start": 3328, - "end": 3339 - }, - "page_num": 3, - "text": "completedAt", - "position": { - "top": 875, - "bottom": 923, - "left": 653, - "right": 945 - } - }, - { - "doc_offset": { - "start": 3340, - "end": 3348 - }, - "page_num": 3, - "text": "rejected", - "position": { - "top": 939, - "bottom": 983, - "left": 654, - "right": 860 - } - }, - { - "doc_offset": { - "start": 3349, - "end": 3354 - }, - "page_num": 3, - "text": "notes", - "position": { - "top": 1005, - "bottom": 1044, - "left": 651, - "right": 780 - } - }, - { - "doc_offset": { - "start": 3355, - "end": 3365 - }, - "page_num": 3, - "text": "reviewType", - "position": { - "top": 1062, - "bottom": 1112, - "left": 653, - "right": 915 - } - }, - { - "doc_offset": { - "start": 3366, - "end": 3367 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1128, - "bottom": 1172, - "left": 547, - "right": 567 - } - }, - { - "doc_offset": { - "start": 3368, - "end": 3377 - }, - "page_num": 3, - "text": "retrieved", - "position": { - "top": 1187, - "bottom": 1231, - "left": 545, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3378, - "end": 3387 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1251, - "bottom": 1296, - "left": 544, - "right": 783 - } - }, - { - "doc_offset": { - "start": 3388, - "end": 3398 - }, - "page_num": 3, - "text": "workflowId", - "position": { - "top": 1314, - "bottom": 1359, - "left": 542, - "right": 807 - } - }, - { - "doc_offset": { - "start": 3399, - "end": 3400 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1440, - "bottom": 1484, - "left": 333, - "right": 352 - } - }, - { - "doc_offset": { - "start": 3401, - "end": 3402 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1501, - "bottom": 1545, - "left": 222, - "right": 244 - } - }, - { - "doc_offset": { - "start": 3403, - "end": 3404 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1373, - "bottom": 1420, - "left": 438, - "right": 455 - } - }, - { - "doc_offset": { - "start": 3405, - "end": 3414 - }, - "page_num": 3, - "text": "Scheduled", - "position": { - "top": 1618, - "bottom": 1661, - "left": 212, - "right": 428 - } - }, - { - "doc_offset": { - "start": 3415, - "end": 3422 - }, - "page_num": 3, - "text": "Process", - "position": { - "top": 1618, - "bottom": 1664, - "left": 444, - "right": 614 - } - }, - { - "doc_offset": { - "start": 3423, - "end": 3428 - }, - "page_num": 3, - "text": "Logic", - "position": { - "top": 1617, - "bottom": 1665, - "left": 624, - "right": 743 - } - }, - { - "doc_offset": { - "start": 3429, - "end": 3433 - }, - "page_num": 3, - "text": "This", - "position": { - "top": 1721, - "bottom": 1770, - "left": 213, - "right": 295 - } - }, - { - "doc_offset": { - "start": 3434, - "end": 3436 - }, - "page_num": 3, - "text": "is", - "position": { - "top": 1721, - "bottom": 1770, - "left": 305, - "right": 342 - } - }, - { - "doc_offset": { - "start": 3437, - "end": 3438 - }, - "page_num": 3, - "text": "a", - "position": { - "top": 1721, - "bottom": 1771, - "left": 359, - "right": 385 - } - }, - { - "doc_offset": { - "start": 3439, - "end": 3450 - }, - "page_num": 3, - "text": "heavyweight", - "position": { - "top": 1721, - "bottom": 1771, - "left": 399, - "right": 654 - } - }, - { - "doc_offset": { - "start": 3451, - "end": 3457 - }, - "page_num": 3, - "text": "query.", - "position": { - "top": 1721, - "bottom": 1771, - "left": 664, - "right": 793 - } - }, - { - "doc_offset": { - "start": 3458, - "end": 3469 - }, - "page_num": 3, - "text": "Submissions", - "position": { - "top": 1721, - "bottom": 1773, - "left": 803, - "right": 1057 - } - }, - { - "doc_offset": { - "start": 3470, - "end": 3473 - }, - "page_num": 3, - "text": "are", - "position": { - "top": 1721, - "bottom": 1773, - "left": 1070, - "right": 1134 - } - }, - { - "doc_offset": { - "start": 3474, - "end": 3481 - }, - "page_num": 3, - "text": "ordered", - "position": { - "top": 1721, - "bottom": 1773, - "left": 1151, - "right": 1300 - } - }, - { - "doc_offset": { - "start": 3482, - "end": 3484 - }, - "page_num": 3, - "text": "by", - "position": { - "top": 1723, - "bottom": 1773, - "left": 1316, - "right": 1370 - } - }, - { - "doc_offset": { - "start": 3485, - "end": 3494 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1723, - "bottom": 1771, - "left": 1401, - "right": 1604 - } - }, - { - "doc_offset": { - "start": 3495, - "end": 3506 - }, - "page_num": 3, - "text": "descending,", - "position": { - "top": 1723, - "bottom": 1771, - "left": 1634, - "right": 1883 - } - }, - { - "doc_offset": { - "start": 3507, - "end": 3510 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 1723, - "bottom": 1770, - "left": 1893, - "right": 1968 - } - }, - { - "doc_offset": { - "start": 3511, - "end": 3518 - }, - "page_num": 3, - "text": "results", - "position": { - "top": 1723, - "bottom": 1770, - "left": 1984, - "right": 2121 - } - }, - { - "doc_offset": { - "start": 3519, - "end": 3525 - }, - "page_num": 3, - "text": "should", - "position": { - "top": 1721, - "bottom": 1768, - "left": 2134, - "right": 2266 - } - }, - { - "doc_offset": { - "start": 3526, - "end": 3528 - }, - "page_num": 3, - "text": "be", - "position": { - "top": 1721, - "bottom": 1768, - "left": 2283, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 3529, - "end": 3538 - }, - "page_num": 3, - "text": "paginated", - "position": { - "top": 1784, - "bottom": 1834, - "left": 210, - "right": 403 - } - }, - { - "doc_offset": { - "start": 3539, - "end": 3543 - }, - "page_num": 3, - "text": "such", - "position": { - "top": 1784, - "bottom": 1834, - "left": 424, - "right": 515 - } - }, - { - "doc_offset": { - "start": 3544, - "end": 3548 - }, - "page_num": 3, - "text": "that", - "position": { - "top": 1783, - "bottom": 1834, - "left": 535, - "right": 618 - } - }, - { - "doc_offset": { - "start": 3549, - "end": 3559 - }, - "page_num": 3, - "text": "processing", - "position": { - "top": 1783, - "bottom": 1834, - "left": 628, - "right": 848 - } - }, - { - "doc_offset": { - "start": 3560, - "end": 3563 - }, - "page_num": 3, - "text": "can", - "position": { - "top": 1781, - "bottom": 1834, - "left": 865, - "right": 934 - } - }, - { - "doc_offset": { - "start": 3564, - "end": 3568 - }, - "page_num": 3, - "text": "stop", - "position": { - "top": 1781, - "bottom": 1834, - "left": 955, - "right": 1041 - } - }, - { - "doc_offset": { - "start": 3569, - "end": 3573 - }, - "page_num": 3, - "text": "once", - "position": { - "top": 1781, - "bottom": 1834, - "left": 1062, - "right": 1158 - } - }, - { - "doc_offset": { - "start": 3574, - "end": 3577 - }, - "page_num": 3, - "text": "all", - "position": { - "top": 1781, - "bottom": 1834, - "left": 1177, - "right": 1230 - } - }, - { - "doc_offset": { - "start": 3578, - "end": 3589 - }, - "page_num": 3, - "text": "submissions", - "position": { - "top": 1781, - "bottom": 1833, - "left": 1240, - "right": 1488 - } - }, - { - "doc_offset": { - "start": 3590, - "end": 3594 - }, - "page_num": 3, - "text": "have", - "position": { - "top": 1781, - "bottom": 1833, - "left": 1499, - "right": 1598 - } - }, - { - "doc_offset": { - "start": 3595, - "end": 3599 - }, - "page_num": 3, - "text": "been", - "position": { - "top": 1781, - "bottom": 1833, - "left": 1613, - "right": 1710 - } - }, - { - "doc_offset": { - "start": 3600, - "end": 3609 - }, - "page_num": 3, - "text": "processed", - "position": { - "top": 1783, - "bottom": 1833, - "left": 1730, - "right": 1938 - } - }, - { - "doc_offset": { - "start": 3610, - "end": 3615 - }, - "page_num": 3, - "text": "whose", - "position": { - "top": 1783, - "bottom": 1833, - "left": 1955, - "right": 2085 - } - }, - { - "doc_offset": { - "start": 3616, - "end": 3625 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1784, - "bottom": 1833, - "left": 2117, - "right": 2322 - } - }, - { - "doc_offset": { - "start": 3626, - "end": 3630 - }, - "page_num": 3, - "text": "date", - "position": { - "top": 1846, - "bottom": 1892, - "left": 210, - "right": 295 - } - }, - { - "doc_offset": { - "start": 3631, - "end": 3633 - }, - "page_num": 3, - "text": "is", - "position": { - "top": 1844, - "bottom": 1892, - "left": 305, - "right": 340 - } - }, - { - "doc_offset": { - "start": 3634, - "end": 3641 - }, - "page_num": 3, - "text": "greater", - "position": { - "top": 1844, - "bottom": 1892, - "left": 350, - "right": 488 - } - }, - { - "doc_offset": { - "start": 3642, - "end": 3646 - }, - "page_num": 3, - "text": "than", - "position": { - "top": 1844, - "bottom": 1893, - "left": 498, - "right": 585 - } - }, - { - "doc_offset": { - "start": 3647, - "end": 3650 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1843, - "bottom": 1893, - "left": 598, - "right": 660 - } - }, - { - "doc_offset": { - "start": 3651, - "end": 3660 - }, - "page_num": 3, - "text": "timestamp", - "position": { - "top": 1843, - "bottom": 1893, - "left": 670, - "right": 879 - } - }, - { - "doc_offset": { - "start": 3661, - "end": 3663 - }, - "page_num": 3, - "text": "of", - "position": { - "top": 1843, - "bottom": 1893, - "left": 892, - "right": 931 - } - }, - { - "doc_offset": { - "start": 3664, - "end": 3667 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1843, - "bottom": 1893, - "left": 941, - "right": 1005 - } - }, - { - "doc_offset": { - "start": 3668, - "end": 3676 - }, - "page_num": 3, - "text": "previous", - "position": { - "top": 1843, - "bottom": 1893, - "left": 1015, - "right": 1181 - } - }, - { - "doc_offset": { - "start": 3677, - "end": 3680 - }, - "page_num": 3, - "text": "run", - "position": { - "top": 1843, - "bottom": 1893, - "left": 1191, - "right": 1256 - } - }, - { - "doc_offset": { - "start": 3681, - "end": 3683 - }, - "page_num": 3, - "text": "of", - "position": { - "top": 1843, - "bottom": 1893, - "left": 1269, - "right": 1307 - } - }, - { - "doc_offset": { - "start": 3684, - "end": 3687 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1843, - "bottom": 1893, - "left": 1317, - "right": 1382 - } - }, - { - "doc_offset": { - "start": 3688, - "end": 3700 - }, - "page_num": 3, - "text": "integration.", - "position": { - "top": 1844, - "bottom": 1893, - "left": 1392, - "right": 1615 - } - }, - { - "doc_offset": { - "start": 3701, - "end": 3705 - }, - "page_num": 3, - "text": "Data", - "position": { - "top": 1950, - "bottom": 1996, - "left": 212, - "right": 308 - } - }, - { - "doc_offset": { - "start": 3706, - "end": 3720 - }, - "page_num": 3, - "text": "Reconciliation", - "position": { - "top": 1950, - "bottom": 1996, - "left": 320, - "right": 616 - } - }, - { - "doc_offset": { - "start": 3721, - "end": 3724 - }, - "page_num": 3, - "text": "The", - "position": { - "top": 2055, - "bottom": 2102, - "left": 212, - "right": 285 - } - }, - { - "doc_offset": { - "start": 3725, - "end": 3731 - }, - "page_num": 3, - "text": "output", - "position": { - "top": 2055, - "bottom": 2102, - "left": 299, - "right": 429 - } - }, - { - "doc_offset": { - "start": 3732, - "end": 3736 - }, - "page_num": 3, - "text": "will", - "position": { - "top": 2053, - "bottom": 2104, - "left": 441, - "right": 510 - } - }, - { - "doc_offset": { - "start": 3737, - "end": 3744 - }, - "page_num": 3, - "text": "include", - "position": { - "top": 2053, - "bottom": 2104, - "left": 520, - "right": 666 - } - }, - { - "doc_offset": { - "start": 3745, - "end": 3748 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2053, - "bottom": 2104, - "left": 679, - "right": 744 - } - }, - { - "doc_offset": { - "start": 3749, - "end": 3756 - }, - "page_num": 3, - "text": "primary", - "position": { - "top": 2053, - "bottom": 2105, - "left": 759, - "right": 911 - } - }, - { - "doc_offset": { - "start": 3757, - "end": 3760 - }, - "page_num": 3, - "text": "key", - "position": { - "top": 2053, - "bottom": 2105, - "left": 921, - "right": 997 - } - }, - { - "doc_offset": { - "start": 3761, - "end": 3763 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1027, - "right": 1073 - } - }, - { - "doc_offset": { - "start": 3764, - "end": 3770 - }, - "page_num": 3, - "text": "needed", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1100, - "right": 1247 - } - }, - { - "doc_offset": { - "start": 3771, - "end": 3773 - }, - "page_num": 3, - "text": "to", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1262, - "right": 1305 - } - }, - { - "doc_offset": { - "start": 3774, - "end": 3780 - }, - "page_num": 3, - "text": "update", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1322, - "right": 1459 - } - }, - { - "doc_offset": { - "start": 3781, - "end": 3789 - }, - "page_num": 3, - "text": "existing", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1476, - "right": 1628 - } - }, - { - "doc_offset": { - "start": 3790, - "end": 3794 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1643, - "right": 1744 - } - }, - { - "doc_offset": { - "start": 3795, - "end": 3798 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 2053, - "bottom": 2104, - "left": 1754, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 3799, - "end": 3805 - }, - "page_num": 3, - "text": "insert", - "position": { - "top": 2053, - "bottom": 2104, - "left": 1845, - "right": 1961 - } - }, - { - "doc_offset": { - "start": 3806, - "end": 3809 - }, - "page_num": 3, - "text": "new", - "position": { - "top": 2053, - "bottom": 2104, - "left": 1971, - "right": 2047 - } - }, - { - "doc_offset": { - "start": 3810, - "end": 3814 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 2053, - "bottom": 2104, - "left": 2067, - "right": 2168 - } - }, - { - "doc_offset": { - "start": 3815, - "end": 3819 - }, - "page_num": 3, - "text": "into", - "position": { - "top": 2053, - "bottom": 2102, - "left": 2178, - "right": 2254 - } - }, - { - "doc_offset": { - "start": 3820, - "end": 3823 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2053, - "bottom": 2102, - "left": 2272, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 3824, - "end": 3831 - }, - "page_num": 3, - "text": "Metrics", - "position": { - "top": 2116, - "bottom": 2161, - "left": 210, - "right": 356 - } - }, - { - "doc_offset": { - "start": 3832, - "end": 3841 - }, - "page_num": 3, - "text": "database.", - "position": { - "top": 2116, - "bottom": 2162, - "left": 365, - "right": 561 - } - }, - { - "doc_offset": { - "start": 3842, - "end": 3845 - }, - "page_num": 3, - "text": "1.4", - "position": { - "top": 2305, - "bottom": 2360, - "left": 219, - "right": 302 - } - }, - { - "doc_offset": { - "start": 3846, - "end": 3856 - }, - "page_num": 3, - "text": "Submission", - "position": { - "top": 2305, - "bottom": 2361, - "left": 363, - "right": 714 - } - }, - { - "doc_offset": { - "start": 3857, - "end": 3861 - }, - "page_num": 3, - "text": "File", - "position": { - "top": 2305, - "bottom": 2361, - "left": 744, - "right": 850 - } - }, - { - "doc_offset": { - "start": 3862, - "end": 3868 - }, - "page_num": 3, - "text": "Column", - "position": { - "top": 2466, - "bottom": 2507, - "left": 260, - "right": 415 - } - }, - { - "doc_offset": { - "start": 3869, - "end": 3873 - }, - "page_num": 3, - "text": "Type", - "position": { - "top": 2466, - "bottom": 2512, - "left": 858, - "right": 946 - } - }, - { - "doc_offset": { - "start": 3874, - "end": 3881 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 2463, - "bottom": 2513, - "left": 1156, - "right": 1345 - } - }, - { - "doc_offset": { - "start": 3882, - "end": 3888 - }, - "page_num": 3, - "text": "Source", - "position": { - "top": 2464, - "bottom": 2513, - "left": 1358, - "right": 1501 - } - }, - { - "doc_offset": { - "start": 3889, - "end": 3891 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 2563, - "bottom": 2603, - "left": 257, - "right": 292 - } - }, - { - "doc_offset": { - "start": 3892, - "end": 3895 - }, - "page_num": 3, - "text": "int", - "position": { - "top": 2565, - "bottom": 2602, - "left": 850, - "right": 903 - } - }, - { - "doc_offset": { - "start": 3896, - "end": 3907 - }, - "page_num": 3, - "text": "submission.", - "position": { - "top": 2568, - "bottom": 2609, - "left": 1171, - "right": 1408 - } - }, - { - "doc_offset": { - "start": 3908, - "end": 3920 - }, - "page_num": 3, - "text": "inputFile.id", - "position": { - "top": 2566, - "bottom": 2611, - "left": 1418, - "right": 1684 - } - }, - { - "doc_offset": { - "start": 3921, - "end": 3925 - }, - "page_num": 3, - "text": "name", - "position": { - "top": 2666, - "bottom": 2699, - "left": 259, - "right": 362 - } - }, - { - "doc_offset": { - "start": 3926, - "end": 3929 - }, - "page_num": 3, - "text": "str", - "position": { - "top": 2661, - "bottom": 2698, - "left": 855, - "right": 905 - } - }, - { - "doc_offset": { - "start": 3930, - "end": 3941 - }, - "page_num": 3, - "text": "submission.", - "position": { - "top": 2662, - "bottom": 2701, - "left": 1171, - "right": 1408 - } - }, - { - "doc_offset": { - "start": 3942, - "end": 3960 - }, - "page_num": 3, - "text": "inputFile.filename", - "position": { - "top": 2661, - "bottom": 2701, - "left": 1416, - "right": 1816 - } - }, - { - "doc_offset": { - "start": 3961, - "end": 3974 - }, - "page_num": 3, - "text": "submission_id", - "position": { - "top": 2752, - "bottom": 2797, - "left": 260, - "right": 535 - } - }, - { - "doc_offset": { - "start": 3975, - "end": 3978 - }, - "page_num": 3, - "text": "int", - "position": { - "top": 2751, - "bottom": 2791, - "left": 850, - "right": 903 - } - }, - { - "doc_offset": { - "start": 3979, - "end": 3992 - }, - "page_num": 3, - "text": "submission.id", - "position": { - "top": 2754, - "bottom": 2791, - "left": 1173, - "right": 1458 - } - }, - { - "doc_offset": { - "start": 3993, - "end": 3996 - }, - "page_num": 3, - "text": "See", - "position": { - "top": 2880, - "bottom": 2924, - "left": 212, - "right": 283 - } - }, - { - "doc_offset": { - "start": 3997, - "end": 4000 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2880, - "bottom": 2926, - "left": 293, - "right": 361 - } - }, - { - "doc_offset": { - "start": 4001, - "end": 4011 - }, - "page_num": 3, - "text": "Submission", - "position": { - "top": 2878, - "bottom": 2926, - "left": 371, - "right": 594 - } - }, - { - "doc_offset": { - "start": 4012, - "end": 4021 - }, - "page_num": 3, - "text": "section's", - "position": { - "top": 2877, - "bottom": 2927, - "left": 607, - "right": 785 - } - }, - { - "doc_offset": { - "start": 4022, - "end": 4029 - }, - "page_num": 3, - "text": "example", - "position": { - "top": 2878, - "bottom": 2929, - "left": 796, - "right": 966 - } - }, - { - "doc_offset": { - "start": 4030, - "end": 4037 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 2880, - "bottom": 2930, - "left": 977, - "right": 1154 - } - }, - { - "doc_offset": { - "start": 4038, - "end": 4044 - }, - "page_num": 3, - "text": "query.", - "position": { - "top": 2881, - "bottom": 2930, - "left": 1168, - "right": 1287 - } - }, - { - "doc_offset": { - "start": 4045, - "end": 4049 - }, - "page_num": 3, - "text": "Data", - "position": { - "top": 2986, - "bottom": 3032, - "left": 212, - "right": 306 - } - }, - { - "doc_offset": { - "start": 4050, - "end": 4064 - }, - "page_num": 3, - "text": "Reconciliation", - "position": { - "top": 2986, - "bottom": 3032, - "left": 322, - "right": 616 - } - }, - { - "doc_offset": { - "start": 4065, - "end": 4068 - }, - "page_num": 3, - "text": "The", - "position": { - "top": 3088, - "bottom": 3136, - "left": 212, - "right": 283 - } - }, - { - "doc_offset": { - "start": 4069, - "end": 4075 - }, - "page_num": 3, - "text": "output", - "position": { - "top": 3088, - "bottom": 3136, - "left": 297, - "right": 432 - } - }, - { - "doc_offset": { - "start": 4076, - "end": 4080 - }, - "page_num": 3, - "text": "will", - "position": { - "top": 3088, - "bottom": 3138, - "left": 444, - "right": 510 - } - }, - { - "doc_offset": { - "start": 4081, - "end": 4088 - }, - "page_num": 3, - "text": "include", - "position": { - "top": 3088, - "bottom": 3138, - "left": 520, - "right": 664 - } - }, - { - "doc_offset": { - "start": 4089, - "end": 4092 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 3088, - "bottom": 3138, - "left": 679, - "right": 744 - } - }, - { - "doc_offset": { - "start": 4093, - "end": 4100 - }, - "page_num": 3, - "text": "primary", - "position": { - "top": 3088, - "bottom": 3139, - "left": 759, - "right": 911 - } - }, - { - "doc_offset": { - "start": 4101, - "end": 4104 - }, - "page_num": 3, - "text": "key", - "position": { - "top": 3088, - "bottom": 3139, - "left": 921, - "right": 997 - } - }, - { - "doc_offset": { - "start": 4105, - "end": 4107 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1027, - "right": 1073 - } - }, - { - "doc_offset": { - "start": 4108, - "end": 4114 - }, - "page_num": 3, - "text": "needed", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1100, - "right": 1249 - } - }, - { - "doc_offset": { - "start": 4115, - "end": 4117 - }, - "page_num": 3, - "text": "to", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1263, - "right": 1305 - } - }, - { - "doc_offset": { - "start": 4118, - "end": 4124 - }, - "page_num": 3, - "text": "update", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1322, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 4125, - "end": 4133 - }, - "page_num": 3, - "text": "existing", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1475, - "right": 1630 - } - }, - { - "doc_offset": { - "start": 4134, - "end": 4138 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1640, - "right": 1743 - } - }, - { - "doc_offset": { - "start": 4139, - "end": 4142 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1756, - "right": 1829 - } - }, - { - "doc_offset": { - "start": 4143, - "end": 4149 - }, - "page_num": 3, - "text": "insert", - "position": { - "top": 3088, - "bottom": 3138, - "left": 1843, - "right": 1959 - } - }, - { - "doc_offset": { - "start": 4150, - "end": 4153 - }, - "page_num": 3, - "text": "new", - "position": { - "top": 3088, - "bottom": 3138, - "left": 1969, - "right": 2045 - } - }, - { - "doc_offset": { - "start": 4154, - "end": 4158 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 3088, - "bottom": 3138, - "left": 2068, - "right": 2167 - } - }, - { - "doc_offset": { - "start": 4159, - "end": 4163 - }, - "page_num": 3, - "text": "into", - "position": { - "top": 3088, - "bottom": 3138, - "left": 2177, - "right": 2257 - } - }, - { - "doc_offset": { - "start": 4164, - "end": 4167 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 3088, - "bottom": 3136, - "left": 2270, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 4168, - "end": 4175 - }, - "page_num": 3, - "text": "Metrics", - "position": { - "top": 3152, - "bottom": 3195, - "left": 213, - "right": 355 - } - }, - { - "doc_offset": { - "start": 4176, - "end": 4185 - }, - "page_num": 3, - "text": "database.", - "position": { - "top": 3152, - "bottom": 3195, - "left": 368, - "right": 561 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4289/107457/101156/page_info_4.json b/tests/data/etloutput/4289/107457/101156/page_info_4.json deleted file mode 100644 index a6afb9d..0000000 --- a/tests/data/etloutput/4289/107457/101156/page_info_4.json +++ /dev/null @@ -1,1232 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 4186, - "end": 4729 - }, - "page_num": 4, - "text": "1.5 Reviewer\nColumn\tType\tGraphQL Source\nid\tint\tuserSnapshot.id\nname\tstr\tuserSnapshot . name\nemail\tstr\tuserSnapshot. email\nenabled\tbool\tuserSnapshot . enabled\nExample GraphQL Query\nquery Users {\nuserSnapshot(orderBy: ID, desc: false, limit: 1000) {\nresults {\nid\nname\nemail\nenabled\n}\n}\n}\nScheduled Process Logic\nThis is a lightweight query. All reviewers will be pulled every time the integration is run.\nData Reconciliation\nThe output will include the primary key id needed to update existing rows and insert new rows into the\nMetrics database." - } - ], - "tokens": [ - { - "doc_offset": { - "start": 4186, - "end": 4189 - }, - "page_num": 4, - "text": "1.5", - "position": { - "top": 51, - "bottom": 105, - "left": 220, - "right": 299 - } - }, - { - "doc_offset": { - "start": 4190, - "end": 4198 - }, - "page_num": 4, - "text": "Reviewer", - "position": { - "top": 55, - "bottom": 105, - "left": 363, - "right": 657 - } - }, - { - "doc_offset": { - "start": 4199, - "end": 4205 - }, - "page_num": 4, - "text": "Column", - "position": { - "top": 211, - "bottom": 253, - "left": 260, - "right": 416 - } - }, - { - "doc_offset": { - "start": 4206, - "end": 4210 - }, - "page_num": 4, - "text": "Type", - "position": { - "top": 211, - "bottom": 257, - "left": 799, - "right": 891 - } - }, - { - "doc_offset": { - "start": 4211, - "end": 4218 - }, - "page_num": 4, - "text": "GraphQL", - "position": { - "top": 210, - "bottom": 257, - "left": 1193, - "right": 1378 - } - }, - { - "doc_offset": { - "start": 4219, - "end": 4225 - }, - "page_num": 4, - "text": "Source", - "position": { - "top": 211, - "bottom": 257, - "left": 1393, - "right": 1538 - } - }, - { - "doc_offset": { - "start": 4226, - "end": 4228 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 312, - "bottom": 350, - "left": 259, - "right": 289 - } - }, - { - "doc_offset": { - "start": 4229, - "end": 4232 - }, - "page_num": 4, - "text": "int", - "position": { - "top": 309, - "bottom": 355, - "left": 790, - "right": 845 - } - }, - { - "doc_offset": { - "start": 4233, - "end": 4248 - }, - "page_num": 4, - "text": "userSnapshot.id", - "position": { - "top": 313, - "bottom": 355, - "left": 1204, - "right": 1540 - } - }, - { - "doc_offset": { - "start": 4249, - "end": 4253 - }, - "page_num": 4, - "text": "name", - "position": { - "top": 411, - "bottom": 446, - "left": 259, - "right": 363 - } - }, - { - "doc_offset": { - "start": 4254, - "end": 4257 - }, - "page_num": 4, - "text": "str", - "position": { - "top": 406, - "bottom": 444, - "left": 795, - "right": 845 - } - }, - { - "doc_offset": { - "start": 4258, - "end": 4270 - }, - "page_num": 4, - "text": "userSnapshot", - "position": { - "top": 408, - "bottom": 448, - "left": 1206, - "right": 1468 - } - }, - { - "doc_offset": { - "start": 4271, - "end": 4272 - }, - "page_num": 4, - "text": ".", - "position": { - "top": 408, - "bottom": 448, - "left": 1475, - "right": 1487 - } - }, - { - "doc_offset": { - "start": 4273, - "end": 4277 - }, - "page_num": 4, - "text": "name", - "position": { - "top": 408, - "bottom": 448, - "left": 1494, - "right": 1585 - } - }, - { - "doc_offset": { - "start": 4278, - "end": 4283 - }, - "page_num": 4, - "text": "email", - "position": { - "top": 499, - "bottom": 538, - "left": 259, - "right": 363 - } - }, - { - "doc_offset": { - "start": 4284, - "end": 4287 - }, - "page_num": 4, - "text": "str", - "position": { - "top": 499, - "bottom": 537, - "left": 795, - "right": 846 - } - }, - { - "doc_offset": { - "start": 4288, - "end": 4301 - }, - "page_num": 4, - "text": "userSnapshot.", - "position": { - "top": 499, - "bottom": 539, - "left": 1204, - "right": 1487 - } - }, - { - "doc_offset": { - "start": 4302, - "end": 4307 - }, - "page_num": 4, - "text": "email", - "position": { - "top": 498, - "bottom": 539, - "left": 1495, - "right": 1607 - } - }, - { - "doc_offset": { - "start": 4308, - "end": 4315 - }, - "page_num": 4, - "text": "enabled", - "position": { - "top": 591, - "bottom": 631, - "left": 259, - "right": 411 - } - }, - { - "doc_offset": { - "start": 4316, - "end": 4320 - }, - "page_num": 4, - "text": "bool", - "position": { - "top": 585, - "bottom": 633, - "left": 792, - "right": 883 - } - }, - { - "doc_offset": { - "start": 4321, - "end": 4333 - }, - "page_num": 4, - "text": "userSnapshot", - "position": { - "top": 592, - "bottom": 633, - "left": 1204, - "right": 1465 - } - }, - { - "doc_offset": { - "start": 4334, - "end": 4335 - }, - "page_num": 4, - "text": ".", - "position": { - "top": 591, - "bottom": 633, - "left": 1475, - "right": 1487 - } - }, - { - "doc_offset": { - "start": 4336, - "end": 4343 - }, - "page_num": 4, - "text": "enabled", - "position": { - "top": 591, - "bottom": 631, - "left": 1497, - "right": 1651 - } - }, - { - "doc_offset": { - "start": 4344, - "end": 4351 - }, - "page_num": 4, - "text": "Example", - "position": { - "top": 719, - "bottom": 767, - "left": 212, - "right": 391 - } - }, - { - "doc_offset": { - "start": 4352, - "end": 4359 - }, - "page_num": 4, - "text": "GraphQL", - "position": { - "top": 717, - "bottom": 767, - "left": 402, - "right": 588 - } - }, - { - "doc_offset": { - "start": 4360, - "end": 4365 - }, - "page_num": 4, - "text": "Query", - "position": { - "top": 717, - "bottom": 769, - "left": 603, - "right": 729 - } - }, - { - "doc_offset": { - "start": 4366, - "end": 4371 - }, - "page_num": 4, - "text": "query", - "position": { - "top": 836, - "bottom": 885, - "left": 239, - "right": 373 - } - }, - { - "doc_offset": { - "start": 4372, - "end": 4377 - }, - "page_num": 4, - "text": "Users", - "position": { - "top": 835, - "bottom": 885, - "left": 396, - "right": 537 - } - }, - { - "doc_offset": { - "start": 4378, - "end": 4379 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 835, - "bottom": 885, - "left": 564, - "right": 587 - } - }, - { - "doc_offset": { - "start": 4380, - "end": 4401 - }, - "page_num": 4, - "text": "userSnapshot(orderBy:", - "position": { - "top": 898, - "bottom": 945, - "left": 326, - "right": 895 - } - }, - { - "doc_offset": { - "start": 4402, - "end": 4405 - }, - "page_num": 4, - "text": "ID,", - "position": { - "top": 892, - "bottom": 949, - "left": 919, - "right": 1002 - } - }, - { - "doc_offset": { - "start": 4406, - "end": 4411 - }, - "page_num": 4, - "text": "desc:", - "position": { - "top": 892, - "bottom": 949, - "left": 1024, - "right": 1163 - } - }, - { - "doc_offset": { - "start": 4412, - "end": 4418 - }, - "page_num": 4, - "text": "false,", - "position": { - "top": 892, - "bottom": 949, - "left": 1189, - "right": 1349 - } - }, - { - "doc_offset": { - "start": 4419, - "end": 4425 - }, - "page_num": 4, - "text": "limit:", - "position": { - "top": 890, - "bottom": 948, - "left": 1373, - "right": 1538 - } - }, - { - "doc_offset": { - "start": 4426, - "end": 4431 - }, - "page_num": 4, - "text": "1000)", - "position": { - "top": 890, - "bottom": 948, - "left": 1564, - "right": 1703 - } - }, - { - "doc_offset": { - "start": 4432, - "end": 4433 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 892, - "bottom": 948, - "left": 1724, - "right": 1753 - } - }, - { - "doc_offset": { - "start": 4434, - "end": 4441 - }, - "page_num": 4, - "text": "results", - "position": { - "top": 959, - "bottom": 1011, - "left": 436, - "right": 626 - } - }, - { - "doc_offset": { - "start": 4442, - "end": 4443 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 958, - "bottom": 1009, - "left": 654, - "right": 681 - } - }, - { - "doc_offset": { - "start": 4444, - "end": 4446 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 1021, - "bottom": 1067, - "left": 545, - "right": 594 - } - }, - { - "doc_offset": { - "start": 4447, - "end": 4451 - }, - "page_num": 4, - "text": "name", - "position": { - "top": 1088, - "bottom": 1127, - "left": 542, - "right": 644 - } - }, - { - "doc_offset": { - "start": 4452, - "end": 4457 - }, - "page_num": 4, - "text": "email", - "position": { - "top": 1148, - "bottom": 1191, - "left": 544, - "right": 674 - } - }, - { - "doc_offset": { - "start": 4458, - "end": 4465 - }, - "page_num": 4, - "text": "enabled", - "position": { - "top": 1210, - "bottom": 1253, - "left": 542, - "right": 729 - } - }, - { - "doc_offset": { - "start": 4466, - "end": 4467 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1334, - "bottom": 1382, - "left": 330, - "right": 348 - } - }, - { - "doc_offset": { - "start": 4468, - "end": 4469 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1395, - "bottom": 1440, - "left": 223, - "right": 240 - } - }, - { - "doc_offset": { - "start": 4470, - "end": 4471 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1269, - "bottom": 1319, - "left": 436, - "right": 456 - } - }, - { - "doc_offset": { - "start": 4472, - "end": 4481 - }, - "page_num": 4, - "text": "Scheduled", - "position": { - "top": 1516, - "bottom": 1558, - "left": 212, - "right": 429 - } - }, - { - "doc_offset": { - "start": 4482, - "end": 4489 - }, - "page_num": 4, - "text": "Process", - "position": { - "top": 1513, - "bottom": 1561, - "left": 441, - "right": 613 - } - }, - { - "doc_offset": { - "start": 4490, - "end": 4495 - }, - "page_num": 4, - "text": "Logic", - "position": { - "top": 1513, - "bottom": 1562, - "left": 624, - "right": 740 - } - }, - { - "doc_offset": { - "start": 4496, - "end": 4500 - }, - "page_num": 4, - "text": "This", - "position": { - "top": 1619, - "bottom": 1667, - "left": 212, - "right": 287 - } - }, - { - "doc_offset": { - "start": 4501, - "end": 4503 - }, - "page_num": 4, - "text": "is", - "position": { - "top": 1619, - "bottom": 1668, - "left": 299, - "right": 335 - } - }, - { - "doc_offset": { - "start": 4504, - "end": 4505 - }, - "page_num": 4, - "text": "a", - "position": { - "top": 1618, - "bottom": 1668, - "left": 346, - "right": 365 - } - }, - { - "doc_offset": { - "start": 4506, - "end": 4517 - }, - "page_num": 4, - "text": "lightweight", - "position": { - "top": 1618, - "bottom": 1668, - "left": 376, - "right": 594 - } - }, - { - "doc_offset": { - "start": 4518, - "end": 4524 - }, - "page_num": 4, - "text": "query.", - "position": { - "top": 1618, - "bottom": 1668, - "left": 604, - "right": 727 - } - }, - { - "doc_offset": { - "start": 4525, - "end": 4528 - }, - "page_num": 4, - "text": "All", - "position": { - "top": 1618, - "bottom": 1670, - "left": 739, - "right": 785 - } - }, - { - "doc_offset": { - "start": 4529, - "end": 4538 - }, - "page_num": 4, - "text": "reviewers", - "position": { - "top": 1617, - "bottom": 1670, - "left": 796, - "right": 984 - } - }, - { - "doc_offset": { - "start": 4539, - "end": 4543 - }, - "page_num": 4, - "text": "will", - "position": { - "top": 1617, - "bottom": 1670, - "left": 994, - "right": 1057 - } - }, - { - "doc_offset": { - "start": 4544, - "end": 4546 - }, - "page_num": 4, - "text": "be", - "position": { - "top": 1617, - "bottom": 1670, - "left": 1067, - "right": 1117 - } - }, - { - "doc_offset": { - "start": 4547, - "end": 4553 - }, - "page_num": 4, - "text": "pulled", - "position": { - "top": 1617, - "bottom": 1670, - "left": 1128, - "right": 1252 - } - }, - { - "doc_offset": { - "start": 4554, - "end": 4559 - }, - "page_num": 4, - "text": "every", - "position": { - "top": 1617, - "bottom": 1670, - "left": 1262, - "right": 1366 - } - }, - { - "doc_offset": { - "start": 4560, - "end": 4564 - }, - "page_num": 4, - "text": "time", - "position": { - "top": 1617, - "bottom": 1670, - "left": 1376, - "right": 1464 - } - }, - { - "doc_offset": { - "start": 4565, - "end": 4568 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1617, - "bottom": 1670, - "left": 1474, - "right": 1537 - } - }, - { - "doc_offset": { - "start": 4569, - "end": 4580 - }, - "page_num": 4, - "text": "integration", - "position": { - "top": 1618, - "bottom": 1670, - "left": 1548, - "right": 1756 - } - }, - { - "doc_offset": { - "start": 4581, - "end": 4583 - }, - "page_num": 4, - "text": "is", - "position": { - "top": 1618, - "bottom": 1670, - "left": 1766, - "right": 1799 - } - }, - { - "doc_offset": { - "start": 4584, - "end": 4588 - }, - "page_num": 4, - "text": "run.", - "position": { - "top": 1618, - "bottom": 1668, - "left": 1810, - "right": 1891 - } - }, - { - "doc_offset": { - "start": 4589, - "end": 4593 - }, - "page_num": 4, - "text": "Data", - "position": { - "top": 1725, - "bottom": 1771, - "left": 212, - "right": 309 - } - }, - { - "doc_offset": { - "start": 4594, - "end": 4608 - }, - "page_num": 4, - "text": "Reconciliation", - "position": { - "top": 1725, - "bottom": 1771, - "left": 318, - "right": 614 - } - }, - { - "doc_offset": { - "start": 4609, - "end": 4612 - }, - "page_num": 4, - "text": "The", - "position": { - "top": 1829, - "bottom": 1879, - "left": 213, - "right": 283 - } - }, - { - "doc_offset": { - "start": 4613, - "end": 4619 - }, - "page_num": 4, - "text": "output", - "position": { - "top": 1829, - "bottom": 1879, - "left": 297, - "right": 432 - } - }, - { - "doc_offset": { - "start": 4620, - "end": 4624 - }, - "page_num": 4, - "text": "will", - "position": { - "top": 1827, - "bottom": 1879, - "left": 444, - "right": 507 - } - }, - { - "doc_offset": { - "start": 4625, - "end": 4632 - }, - "page_num": 4, - "text": "include", - "position": { - "top": 1827, - "bottom": 1879, - "left": 518, - "right": 667 - } - }, - { - "doc_offset": { - "start": 4633, - "end": 4636 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1827, - "bottom": 1879, - "left": 679, - "right": 746 - } - }, - { - "doc_offset": { - "start": 4637, - "end": 4644 - }, - "page_num": 4, - "text": "primary", - "position": { - "top": 1827, - "bottom": 1879, - "left": 760, - "right": 912 - } - }, - { - "doc_offset": { - "start": 4645, - "end": 4648 - }, - "page_num": 4, - "text": "key", - "position": { - "top": 1827, - "bottom": 1879, - "left": 924, - "right": 997 - } - }, - { - "doc_offset": { - "start": 4649, - "end": 4651 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1025, - "right": 1075 - } - }, - { - "doc_offset": { - "start": 4652, - "end": 4658 - }, - "page_num": 4, - "text": "needed", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1100, - "right": 1249 - } - }, - { - "doc_offset": { - "start": 4659, - "end": 4661 - }, - "page_num": 4, - "text": "to", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1263, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 4662, - "end": 4668 - }, - "page_num": 4, - "text": "update", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1320, - "right": 1464 - } - }, - { - "doc_offset": { - "start": 4669, - "end": 4677 - }, - "page_num": 4, - "text": "existing", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1476, - "right": 1630 - } - }, - { - "doc_offset": { - "start": 4678, - "end": 4682 - }, - "page_num": 4, - "text": "rows", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1644, - "right": 1746 - } - }, - { - "doc_offset": { - "start": 4683, - "end": 4686 - }, - "page_num": 4, - "text": "and", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1759, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 4687, - "end": 4693 - }, - "page_num": 4, - "text": "insert", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1845, - "right": 1959 - } - }, - { - "doc_offset": { - "start": 4694, - "end": 4697 - }, - "page_num": 4, - "text": "new", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1971, - "right": 2048 - } - }, - { - "doc_offset": { - "start": 4698, - "end": 4702 - }, - "page_num": 4, - "text": "rows", - "position": { - "top": 1827, - "bottom": 1879, - "left": 2068, - "right": 2171 - } - }, - { - "doc_offset": { - "start": 4703, - "end": 4707 - }, - "page_num": 4, - "text": "into", - "position": { - "top": 1827, - "bottom": 1879, - "left": 2181, - "right": 2259 - } - }, - { - "doc_offset": { - "start": 4708, - "end": 4711 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1827, - "bottom": 1879, - "left": 2273, - "right": 2340 - } - }, - { - "doc_offset": { - "start": 4712, - "end": 4719 - }, - "page_num": 4, - "text": "Metrics", - "position": { - "top": 1892, - "bottom": 1935, - "left": 213, - "right": 355 - } - }, - { - "doc_offset": { - "start": 4720, - "end": 4729 - }, - "page_num": 4, - "text": "database.", - "position": { - "top": 1892, - "bottom": 1935, - "left": 368, - "right": 564 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4289/107457/101156/page_info_5.json b/tests/data/etloutput/4289/107457/101156/page_info_5.json deleted file mode 100644 index 90dfa88..0000000 --- a/tests/data/etloutput/4289/107457/101156/page_info_5.json +++ /dev/null @@ -1,3808 +0,0 @@ -{ - "pages": [ - { - "doc_offset": { - "start": 4730, - "end": 6494 - }, - "page_num": 5, - "text": "1.6 Prediction\nColumn\tType\tResult File Source\nid\tuuid\tGenerated by integration5\nlabel\tstr\tPrediction. Label 6,7\npredicted_value\tstr\tPrediction. Text 8,7\nreviewed_value\tstr\tPrediction. Text 8,7\nsubmission_file_id\tint\tPrediction. Document. Id 7\nmodel_id\tint\tPrediction. Model. Id 7\n5 Predictions do not have a system-assigned unique identifier. Recommended that the integration pulling this data\ngenerates a unique UUIDv7 for each prediction.\n6 For performance reasons, this column should have an index. Depending upon the DBMS, this column may need to\nbe normalized out, hashed, or otherwise converted to an indexable type.\n7 Based on the Result File classes in the Indico Toolkit (available in Python and C# versions).\n8 As predictions do not have a system-assigned unique identifier, predicted values and reviewed values must be\nmatched by similarity within the integration. An example of doing so is available in the Indico-developed\ngroundtruth program.\nScheduled Process Logic\nThis is a heavyweight query tied to submissions. Because predictions have no system-assigned unique\nidentifier, and the identifier assigned by the integration is not stable, predictions must be pulled only once\nper submission. This should occur at the terminal state of the submission just before it's omitted from future\nprocessing: i.e. when the submission is marked as retrieved. Once a submission is marked as retrieved,\nthere should be no further updates to the submission resetting its updatedAt attribute, therefore it will be\nomitted from all future runs of the integration.\nData Reconciliation\nThe output does not include a primary key needed to update existing rows. As such it will only contain new\nrows to be inserted into the Metrics database.\nformatted by Markdeep 1.17" - } - ], - "tokens": [ - { - "doc_offset": { - "start": 4730, - "end": 4733 - }, - "page_num": 5, - "text": "1.6", - "position": { - "top": 136, - "bottom": 193, - "left": 220, - "right": 302 - } - }, - { - "doc_offset": { - "start": 4734, - "end": 4744 - }, - "page_num": 5, - "text": "Prediction", - "position": { - "top": 137, - "bottom": 190, - "left": 362, - "right": 676 - } - }, - { - "doc_offset": { - "start": 4745, - "end": 4751 - }, - "page_num": 5, - "text": "Column", - "position": { - "top": 296, - "bottom": 336, - "left": 262, - "right": 415 - } - }, - { - "doc_offset": { - "start": 4752, - "end": 4756 - }, - "page_num": 5, - "text": "Type", - "position": { - "top": 296, - "bottom": 342, - "left": 1015, - "right": 1107 - } - }, - { - "doc_offset": { - "start": 4757, - "end": 4763 - }, - "page_num": 5, - "text": "Result", - "position": { - "top": 295, - "bottom": 339, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 4764, - "end": 4768 - }, - "page_num": 5, - "text": "File", - "position": { - "top": 295, - "bottom": 338, - "left": 1471, - "right": 1542 - } - }, - { - "doc_offset": { - "start": 4769, - "end": 4775 - }, - "page_num": 5, - "text": "Source", - "position": { - "top": 295, - "bottom": 339, - "left": 1561, - "right": 1704 - } - }, - { - "doc_offset": { - "start": 4776, - "end": 4778 - }, - "page_num": 5, - "text": "id", - "position": { - "top": 403, - "bottom": 439, - "left": 259, - "right": 289 - } - }, - { - "doc_offset": { - "start": 4779, - "end": 4783 - }, - "page_num": 5, - "text": "uuid", - "position": { - "top": 403, - "bottom": 442, - "left": 1009, - "right": 1091 - } - }, - { - "doc_offset": { - "start": 4784, - "end": 4793 - }, - "page_num": 5, - "text": "Generated", - "position": { - "top": 409, - "bottom": 456, - "left": 1328, - "right": 1532 - } - }, - { - "doc_offset": { - "start": 4794, - "end": 4796 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 409, - "bottom": 458, - "left": 1542, - "right": 1590 - } - }, - { - "doc_offset": { - "start": 4797, - "end": 4809 - }, - "page_num": 5, - "text": "integration5", - "position": { - "top": 409, - "bottom": 456, - "left": 1600, - "right": 1836 - } - }, - { - "doc_offset": { - "start": 4810, - "end": 4815 - }, - "page_num": 5, - "text": "label", - "position": { - "top": 508, - "bottom": 545, - "left": 257, - "right": 349 - } - }, - { - "doc_offset": { - "start": 4816, - "end": 4819 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 509, - "bottom": 548, - "left": 1011, - "right": 1061 - } - }, - { - "doc_offset": { - "start": 4820, - "end": 4831 - }, - "page_num": 5, - "text": "Prediction.", - "position": { - "top": 518, - "bottom": 555, - "left": 1340, - "right": 1577 - } - }, - { - "doc_offset": { - "start": 4832, - "end": 4837 - }, - "page_num": 5, - "text": "Label", - "position": { - "top": 514, - "bottom": 552, - "left": 1585, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 4838, - "end": 4841 - }, - "page_num": 5, - "text": "6,7", - "position": { - "top": 511, - "bottom": 548, - "left": 1714, - "right": 1764 - } - }, - { - "doc_offset": { - "start": 4842, - "end": 4857 - }, - "page_num": 5, - "text": "predicted_value", - "position": { - "top": 613, - "bottom": 657, - "left": 259, - "right": 570 - } - }, - { - "doc_offset": { - "start": 4858, - "end": 4861 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 615, - "bottom": 648, - "left": 1012, - "right": 1060 - } - }, - { - "doc_offset": { - "start": 4862, - "end": 4873 - }, - "page_num": 5, - "text": "Prediction.", - "position": { - "top": 621, - "bottom": 657, - "left": 1342, - "right": 1583 - } - }, - { - "doc_offset": { - "start": 4874, - "end": 4878 - }, - "page_num": 5, - "text": "Text", - "position": { - "top": 620, - "bottom": 657, - "left": 1590, - "right": 1676 - } - }, - { - "doc_offset": { - "start": 4879, - "end": 4882 - }, - "page_num": 5, - "text": "8,7", - "position": { - "top": 608, - "bottom": 653, - "left": 1693, - "right": 1742 - } - }, - { - "doc_offset": { - "start": 4883, - "end": 4897 - }, - "page_num": 5, - "text": "reviewed_value", - "position": { - "top": 714, - "bottom": 756, - "left": 257, - "right": 560 - } - }, - { - "doc_offset": { - "start": 4898, - "end": 4901 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 716, - "bottom": 751, - "left": 1011, - "right": 1061 - } - }, - { - "doc_offset": { - "start": 4902, - "end": 4913 - }, - "page_num": 5, - "text": "Prediction.", - "position": { - "top": 724, - "bottom": 761, - "left": 1340, - "right": 1584 - } - }, - { - "doc_offset": { - "start": 4914, - "end": 4918 - }, - "page_num": 5, - "text": "Text", - "position": { - "top": 723, - "bottom": 760, - "left": 1591, - "right": 1674 - } - }, - { - "doc_offset": { - "start": 4919, - "end": 4922 - }, - "page_num": 5, - "text": "8,7", - "position": { - "top": 711, - "bottom": 754, - "left": 1693, - "right": 1742 - } - }, - { - "doc_offset": { - "start": 4923, - "end": 4941 - }, - "page_num": 5, - "text": "submission_file_id", - "position": { - "top": 816, - "bottom": 859, - "left": 260, - "right": 614 - } - }, - { - "doc_offset": { - "start": 4942, - "end": 4945 - }, - "page_num": 5, - "text": "int", - "position": { - "top": 814, - "bottom": 853, - "left": 1007, - "right": 1060 - } - }, - { - "doc_offset": { - "start": 4946, - "end": 4957 - }, - "page_num": 5, - "text": "Prediction.", - "position": { - "top": 827, - "bottom": 865, - "left": 1343, - "right": 1577 - } - }, - { - "doc_offset": { - "start": 4958, - "end": 4967 - }, - "page_num": 5, - "text": "Document.", - "position": { - "top": 826, - "bottom": 863, - "left": 1585, - "right": 1783 - } - }, - { - "doc_offset": { - "start": 4968, - "end": 4970 - }, - "page_num": 5, - "text": "Id", - "position": { - "top": 825, - "bottom": 863, - "left": 1790, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 4971, - "end": 4972 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 823, - "bottom": 863, - "left": 1849, - "right": 1869 - } - }, - { - "doc_offset": { - "start": 4973, - "end": 4981 - }, - "page_num": 5, - "text": "model_id", - "position": { - "top": 919, - "bottom": 962, - "left": 257, - "right": 436 - } - }, - { - "doc_offset": { - "start": 4982, - "end": 4985 - }, - "page_num": 5, - "text": "int", - "position": { - "top": 918, - "bottom": 958, - "left": 1007, - "right": 1060 - } - }, - { - "doc_offset": { - "start": 4986, - "end": 4997 - }, - "page_num": 5, - "text": "Prediction.", - "position": { - "top": 928, - "bottom": 966, - "left": 1340, - "right": 1575 - } - }, - { - "doc_offset": { - "start": 4998, - "end": 5004 - }, - "page_num": 5, - "text": "Model.", - "position": { - "top": 926, - "bottom": 966, - "left": 1584, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 5005, - "end": 5007 - }, - "page_num": 5, - "text": "Id", - "position": { - "top": 926, - "bottom": 966, - "left": 1724, - "right": 1766 - } - }, - { - "doc_offset": { - "start": 5008, - "end": 5009 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 925, - "bottom": 965, - "left": 1782, - "right": 1800 - } - }, - { - "doc_offset": { - "start": 5010, - "end": 5011 - }, - "page_num": 5, - "text": "5", - "position": { - "top": 1054, - "bottom": 1100, - "left": 210, - "right": 232 - } - }, - { - "doc_offset": { - "start": 5012, - "end": 5023 - }, - "page_num": 5, - "text": "Predictions", - "position": { - "top": 1054, - "bottom": 1100, - "left": 243, - "right": 449 - } - }, - { - "doc_offset": { - "start": 5024, - "end": 5026 - }, - "page_num": 5, - "text": "do", - "position": { - "top": 1055, - "bottom": 1101, - "left": 464, - "right": 508 - } - }, - { - "doc_offset": { - "start": 5027, - "end": 5030 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1055, - "bottom": 1101, - "left": 522, - "right": 585 - } - }, - { - "doc_offset": { - "start": 5031, - "end": 5035 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1055, - "bottom": 1101, - "left": 597, - "right": 689 - } - }, - { - "doc_offset": { - "start": 5036, - "end": 5037 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1055, - "bottom": 1101, - "left": 701, - "right": 726 - } - }, - { - "doc_offset": { - "start": 5038, - "end": 5053 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1057, - "bottom": 1101, - "left": 739, - "right": 1048 - } - }, - { - "doc_offset": { - "start": 5054, - "end": 5060 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1057, - "bottom": 1102, - "left": 1061, - "right": 1189 - } - }, - { - "doc_offset": { - "start": 5061, - "end": 5072 - }, - "page_num": 5, - "text": "identifier.", - "position": { - "top": 1057, - "bottom": 1102, - "left": 1197, - "right": 1368 - } - }, - { - "doc_offset": { - "start": 5073, - "end": 5084 - }, - "page_num": 5, - "text": "Recommended", - "position": { - "top": 1057, - "bottom": 1104, - "left": 1378, - "right": 1657 - } - }, - { - "doc_offset": { - "start": 5085, - "end": 5089 - }, - "page_num": 5, - "text": "that", - "position": { - "top": 1057, - "bottom": 1104, - "left": 1673, - "right": 1747 - } - }, - { - "doc_offset": { - "start": 5090, - "end": 5093 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1057, - "bottom": 1104, - "left": 1756, - "right": 1817 - } - }, - { - "doc_offset": { - "start": 5094, - "end": 5105 - }, - "page_num": 5, - "text": "integration", - "position": { - "top": 1057, - "bottom": 1104, - "left": 1827, - "right": 2022 - } - }, - { - "doc_offset": { - "start": 5106, - "end": 5113 - }, - "page_num": 5, - "text": "pulling", - "position": { - "top": 1055, - "bottom": 1104, - "left": 2038, - "right": 2158 - } - }, - { - "doc_offset": { - "start": 5114, - "end": 5118 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1055, - "bottom": 1104, - "left": 2171, - "right": 2243 - } - }, - { - "doc_offset": { - "start": 5119, - "end": 5123 - }, - "page_num": 5, - "text": "data", - "position": { - "top": 1055, - "bottom": 1104, - "left": 2253, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5124, - "end": 5133 - }, - "page_num": 5, - "text": "generates", - "position": { - "top": 1107, - "bottom": 1151, - "left": 242, - "right": 422 - } - }, - { - "doc_offset": { - "start": 5134, - "end": 5135 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1105, - "bottom": 1151, - "left": 432, - "right": 455 - } - }, - { - "doc_offset": { - "start": 5136, - "end": 5142 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1104, - "bottom": 1151, - "left": 465, - "right": 588 - } - }, - { - "doc_offset": { - "start": 5143, - "end": 5149 - }, - "page_num": 5, - "text": "UUIDv7", - "position": { - "top": 1104, - "bottom": 1151, - "left": 598, - "right": 740 - } - }, - { - "doc_offset": { - "start": 5150, - "end": 5153 - }, - "page_num": 5, - "text": "for", - "position": { - "top": 1104, - "bottom": 1150, - "left": 749, - "right": 800 - } - }, - { - "doc_offset": { - "start": 5154, - "end": 5158 - }, - "page_num": 5, - "text": "each", - "position": { - "top": 1104, - "bottom": 1150, - "left": 810, - "right": 898 - } - }, - { - "doc_offset": { - "start": 5159, - "end": 5170 - }, - "page_num": 5, - "text": "prediction.", - "position": { - "top": 1105, - "bottom": 1150, - "left": 909, - "right": 1104 - } - }, - { - "doc_offset": { - "start": 5171, - "end": 5172 - }, - "page_num": 5, - "text": "6", - "position": { - "top": 1204, - "bottom": 1250, - "left": 209, - "right": 229 - } - }, - { - "doc_offset": { - "start": 5173, - "end": 5176 - }, - "page_num": 5, - "text": "For", - "position": { - "top": 1204, - "bottom": 1250, - "left": 237, - "right": 302 - } - }, - { - "doc_offset": { - "start": 5177, - "end": 5188 - }, - "page_num": 5, - "text": "performance", - "position": { - "top": 1205, - "bottom": 1250, - "left": 310, - "right": 542 - } - }, - { - "doc_offset": { - "start": 5189, - "end": 5197 - }, - "page_num": 5, - "text": "reasons,", - "position": { - "top": 1205, - "bottom": 1250, - "left": 551, - "right": 710 - } - }, - { - "doc_offset": { - "start": 5198, - "end": 5202 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1205, - "bottom": 1250, - "left": 719, - "right": 789 - } - }, - { - "doc_offset": { - "start": 5203, - "end": 5209 - }, - "page_num": 5, - "text": "column", - "position": { - "top": 1205, - "bottom": 1251, - "left": 797, - "right": 932 - } - }, - { - "doc_offset": { - "start": 5210, - "end": 5216 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 1205, - "bottom": 1251, - "left": 948, - "right": 1068 - } - }, - { - "doc_offset": { - "start": 5217, - "end": 5221 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1078, - "right": 1168 - } - }, - { - "doc_offset": { - "start": 5222, - "end": 5224 - }, - "page_num": 5, - "text": "an", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1179, - "right": 1224 - } - }, - { - "doc_offset": { - "start": 5225, - "end": 5231 - }, - "page_num": 5, - "text": "index.", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1233, - "right": 1349 - } - }, - { - "doc_offset": { - "start": 5232, - "end": 5241 - }, - "page_num": 5, - "text": "Depending", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1359, - "right": 1558 - } - }, - { - "doc_offset": { - "start": 5242, - "end": 5246 - }, - "page_num": 5, - "text": "upon", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1568, - "right": 1660 - } - }, - { - "doc_offset": { - "start": 5247, - "end": 5250 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1671, - "right": 1733 - } - }, - { - "doc_offset": { - "start": 5251, - "end": 5256 - }, - "page_num": 5, - "text": "DBMS,", - "position": { - "top": 1205, - "bottom": 1253, - "left": 1742, - "right": 1872 - } - }, - { - "doc_offset": { - "start": 5257, - "end": 5261 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1205, - "bottom": 1253, - "left": 1882, - "right": 1952 - } - }, - { - "doc_offset": { - "start": 5262, - "end": 5268 - }, - "page_num": 5, - "text": "column", - "position": { - "top": 1204, - "bottom": 1253, - "left": 1961, - "right": 2094 - } - }, - { - "doc_offset": { - "start": 5269, - "end": 5272 - }, - "page_num": 5, - "text": "may", - "position": { - "top": 1204, - "bottom": 1253, - "left": 2107, - "right": 2186 - } - }, - { - "doc_offset": { - "start": 5273, - "end": 5277 - }, - "page_num": 5, - "text": "need", - "position": { - "top": 1204, - "bottom": 1253, - "left": 2196, - "right": 2286 - } - }, - { - "doc_offset": { - "start": 5278, - "end": 5280 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1204, - "bottom": 1253, - "left": 2299, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 5281, - "end": 5283 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1254, - "bottom": 1297, - "left": 240, - "right": 285 - } - }, - { - "doc_offset": { - "start": 5284, - "end": 5294 - }, - "page_num": 5, - "text": "normalized", - "position": { - "top": 1254, - "bottom": 1297, - "left": 295, - "right": 497 - } - }, - { - "doc_offset": { - "start": 5295, - "end": 5299 - }, - "page_num": 5, - "text": "out,", - "position": { - "top": 1254, - "bottom": 1297, - "left": 508, - "right": 578 - } - }, - { - "doc_offset": { - "start": 5300, - "end": 5307 - }, - "page_num": 5, - "text": "hashed,", - "position": { - "top": 1253, - "bottom": 1297, - "left": 587, - "right": 737 - } - }, - { - "doc_offset": { - "start": 5308, - "end": 5310 - }, - "page_num": 5, - "text": "or", - "position": { - "top": 1253, - "bottom": 1299, - "left": 746, - "right": 783 - } - }, - { - "doc_offset": { - "start": 5311, - "end": 5320 - }, - "page_num": 5, - "text": "otherwise", - "position": { - "top": 1253, - "bottom": 1299, - "left": 793, - "right": 971 - } - }, - { - "doc_offset": { - "start": 5321, - "end": 5330 - }, - "page_num": 5, - "text": "converted", - "position": { - "top": 1254, - "bottom": 1299, - "left": 979, - "right": 1161 - } - }, - { - "doc_offset": { - "start": 5331, - "end": 5333 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1254, - "bottom": 1299, - "left": 1174, - "right": 1211 - } - }, - { - "doc_offset": { - "start": 5334, - "end": 5336 - }, - "page_num": 5, - "text": "an", - "position": { - "top": 1254, - "bottom": 1299, - "left": 1223, - "right": 1264 - } - }, - { - "doc_offset": { - "start": 5337, - "end": 5346 - }, - "page_num": 5, - "text": "indexable", - "position": { - "top": 1254, - "bottom": 1299, - "left": 1273, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 5347, - "end": 5352 - }, - "page_num": 5, - "text": "type.", - "position": { - "top": 1254, - "bottom": 1300, - "left": 1464, - "right": 1558 - } - }, - { - "doc_offset": { - "start": 5353, - "end": 5354 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 1352, - "bottom": 1396, - "left": 212, - "right": 229 - } - }, - { - "doc_offset": { - "start": 5355, - "end": 5360 - }, - "page_num": 5, - "text": "Based", - "position": { - "top": 1353, - "bottom": 1396, - "left": 237, - "right": 353 - } - }, - { - "doc_offset": { - "start": 5361, - "end": 5363 - }, - "page_num": 5, - "text": "on", - "position": { - "top": 1353, - "bottom": 1396, - "left": 365, - "right": 411 - } - }, - { - "doc_offset": { - "start": 5364, - "end": 5367 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1353, - "bottom": 1397, - "left": 422, - "right": 481 - } - }, - { - "doc_offset": { - "start": 5368, - "end": 5374 - }, - "page_num": 5, - "text": "Result", - "position": { - "top": 1353, - "bottom": 1397, - "left": 491, - "right": 607 - } - }, - { - "doc_offset": { - "start": 5375, - "end": 5379 - }, - "page_num": 5, - "text": "File", - "position": { - "top": 1354, - "bottom": 1397, - "left": 616, - "right": 684 - } - }, - { - "doc_offset": { - "start": 5380, - "end": 5387 - }, - "page_num": 5, - "text": "classes", - "position": { - "top": 1354, - "bottom": 1399, - "left": 693, - "right": 826 - } - }, - { - "doc_offset": { - "start": 5388, - "end": 5390 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1354, - "bottom": 1399, - "left": 836, - "right": 872 - } - }, - { - "doc_offset": { - "start": 5391, - "end": 5394 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1354, - "bottom": 1399, - "left": 881, - "right": 939 - } - }, - { - "doc_offset": { - "start": 5395, - "end": 5401 - }, - "page_num": 5, - "text": "Indico", - "position": { - "top": 1354, - "bottom": 1399, - "left": 949, - "right": 1062 - } - }, - { - "doc_offset": { - "start": 5402, - "end": 5409 - }, - "page_num": 5, - "text": "Toolkit", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1077, - "right": 1190 - } - }, - { - "doc_offset": { - "start": 5410, - "end": 5420 - }, - "page_num": 5, - "text": "(available", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1199, - "right": 1372 - } - }, - { - "doc_offset": { - "start": 5421, - "end": 5423 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1381, - "right": 1413 - } - }, - { - "doc_offset": { - "start": 5424, - "end": 5430 - }, - "page_num": 5, - "text": "Python", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1428, - "right": 1552 - } - }, - { - "doc_offset": { - "start": 5431, - "end": 5434 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1565, - "right": 1633 - } - }, - { - "doc_offset": { - "start": 5435, - "end": 5437 - }, - "page_num": 5, - "text": "C#", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1646, - "right": 1696 - } - }, - { - "doc_offset": { - "start": 5438, - "end": 5448 - }, - "page_num": 5, - "text": "versions).", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1707, - "right": 1880 - } - }, - { - "doc_offset": { - "start": 5449, - "end": 5450 - }, - "page_num": 5, - "text": "8", - "position": { - "top": 1459, - "bottom": 1502, - "left": 212, - "right": 233 - } - }, - { - "doc_offset": { - "start": 5451, - "end": 5453 - }, - "page_num": 5, - "text": "As", - "position": { - "top": 1459, - "bottom": 1502, - "left": 246, - "right": 293 - } - }, - { - "doc_offset": { - "start": 5454, - "end": 5465 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1459, - "bottom": 1502, - "left": 306, - "right": 514 - } - }, - { - "doc_offset": { - "start": 5466, - "end": 5468 - }, - "page_num": 5, - "text": "do", - "position": { - "top": 1459, - "bottom": 1503, - "left": 527, - "right": 577 - } - }, - { - "doc_offset": { - "start": 5469, - "end": 5472 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1459, - "bottom": 1505, - "left": 590, - "right": 657 - } - }, - { - "doc_offset": { - "start": 5473, - "end": 5477 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1459, - "bottom": 1505, - "left": 667, - "right": 757 - } - }, - { - "doc_offset": { - "start": 5478, - "end": 5479 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1459, - "bottom": 1505, - "left": 773, - "right": 796 - } - }, - { - "doc_offset": { - "start": 5480, - "end": 5495 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1459, - "bottom": 1505, - "left": 812, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 5496, - "end": 5502 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1459, - "bottom": 1506, - "left": 1137, - "right": 1262 - } - }, - { - "doc_offset": { - "start": 5503, - "end": 5514 - }, - "page_num": 5, - "text": "identifier,", - "position": { - "top": 1459, - "bottom": 1506, - "left": 1275, - "right": 1449 - } - }, - { - "doc_offset": { - "start": 5515, - "end": 5524 - }, - "page_num": 5, - "text": "predicted", - "position": { - "top": 1459, - "bottom": 1506, - "left": 1458, - "right": 1633 - } - }, - { - "doc_offset": { - "start": 5525, - "end": 5531 - }, - "page_num": 5, - "text": "values", - "position": { - "top": 1459, - "bottom": 1506, - "left": 1648, - "right": 1767 - } - }, - { - "doc_offset": { - "start": 5532, - "end": 5535 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1459, - "bottom": 1505, - "left": 1783, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 5536, - "end": 5544 - }, - "page_num": 5, - "text": "reviewed", - "position": { - "top": 1459, - "bottom": 1505, - "left": 1868, - "right": 2029 - } - }, - { - "doc_offset": { - "start": 5545, - "end": 5551 - }, - "page_num": 5, - "text": "values", - "position": { - "top": 1459, - "bottom": 1503, - "left": 2048, - "right": 2167 - } - }, - { - "doc_offset": { - "start": 5552, - "end": 5556 - }, - "page_num": 5, - "text": "must", - "position": { - "top": 1458, - "bottom": 1503, - "left": 2180, - "right": 2279 - } - }, - { - "doc_offset": { - "start": 5557, - "end": 5559 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1458, - "bottom": 1502, - "left": 2289, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5560, - "end": 5567 - }, - "page_num": 5, - "text": "matched", - "position": { - "top": 1506, - "bottom": 1551, - "left": 240, - "right": 398 - } - }, - { - "doc_offset": { - "start": 5568, - "end": 5570 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 1506, - "bottom": 1551, - "left": 422, - "right": 474 - } - }, - { - "doc_offset": { - "start": 5571, - "end": 5581 - }, - "page_num": 5, - "text": "similarity", - "position": { - "top": 1506, - "bottom": 1551, - "left": 495, - "right": 657 - } - }, - { - "doc_offset": { - "start": 5582, - "end": 5588 - }, - "page_num": 5, - "text": "within", - "position": { - "top": 1506, - "bottom": 1551, - "left": 679, - "right": 787 - } - }, - { - "doc_offset": { - "start": 5589, - "end": 5592 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1506, - "bottom": 1551, - "left": 810, - "right": 871 - } - }, - { - "doc_offset": { - "start": 5593, - "end": 5605 - }, - "page_num": 5, - "text": "integration.", - "position": { - "top": 1506, - "bottom": 1551, - "left": 892, - "right": 1110 - } - }, - { - "doc_offset": { - "start": 5606, - "end": 5608 - }, - "page_num": 5, - "text": "An", - "position": { - "top": 1506, - "bottom": 1551, - "left": 1127, - "right": 1173 - } - }, - { - "doc_offset": { - "start": 5609, - "end": 5616 - }, - "page_num": 5, - "text": "example", - "position": { - "top": 1506, - "bottom": 1551, - "left": 1200, - "right": 1356 - } - }, - { - "doc_offset": { - "start": 5617, - "end": 5619 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 1505, - "bottom": 1551, - "left": 1381, - "right": 1425 - } - }, - { - "doc_offset": { - "start": 5620, - "end": 5625 - }, - "page_num": 5, - "text": "doing", - "position": { - "top": 1505, - "bottom": 1551, - "left": 1441, - "right": 1542 - } - }, - { - "doc_offset": { - "start": 5626, - "end": 5628 - }, - "page_num": 5, - "text": "so", - "position": { - "top": 1505, - "bottom": 1552, - "left": 1570, - "right": 1613 - } - }, - { - "doc_offset": { - "start": 5629, - "end": 5631 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1505, - "bottom": 1552, - "left": 1633, - "right": 1673 - } - }, - { - "doc_offset": { - "start": 5632, - "end": 5641 - }, - "page_num": 5, - "text": "available", - "position": { - "top": 1505, - "bottom": 1552, - "left": 1693, - "right": 1853 - } - }, - { - "doc_offset": { - "start": 5642, - "end": 5644 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1505, - "bottom": 1552, - "left": 1873, - "right": 1908 - } - }, - { - "doc_offset": { - "start": 5645, - "end": 5648 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1505, - "bottom": 1552, - "left": 1931, - "right": 1995 - } - }, - { - "doc_offset": { - "start": 5649, - "end": 5665 - }, - "page_num": 5, - "text": "Indico-developed", - "position": { - "top": 1505, - "bottom": 1552, - "left": 2015, - "right": 2335 - } - }, - { - "doc_offset": { - "start": 5666, - "end": 5677 - }, - "page_num": 5, - "text": "groundtruth", - "position": { - "top": 1555, - "bottom": 1601, - "left": 242, - "right": 462 - } - }, - { - "doc_offset": { - "start": 5678, - "end": 5686 - }, - "page_num": 5, - "text": "program.", - "position": { - "top": 1556, - "bottom": 1601, - "left": 472, - "right": 640 - } - }, - { - "doc_offset": { - "start": 5687, - "end": 5696 - }, - "page_num": 5, - "text": "Scheduled", - "position": { - "top": 1651, - "bottom": 1695, - "left": 212, - "right": 429 - } - }, - { - "doc_offset": { - "start": 5697, - "end": 5704 - }, - "page_num": 5, - "text": "Process", - "position": { - "top": 1650, - "bottom": 1698, - "left": 442, - "right": 617 - } - }, - { - "doc_offset": { - "start": 5705, - "end": 5710 - }, - "page_num": 5, - "text": "Logic", - "position": { - "top": 1650, - "bottom": 1700, - "left": 626, - "right": 742 - } - }, - { - "doc_offset": { - "start": 5711, - "end": 5715 - }, - "page_num": 5, - "text": "This", - "position": { - "top": 1754, - "bottom": 1804, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 5716, - "end": 5718 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1754, - "bottom": 1804, - "left": 306, - "right": 348 - } - }, - { - "doc_offset": { - "start": 5719, - "end": 5720 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1754, - "bottom": 1804, - "left": 365, - "right": 389 - } - }, - { - "doc_offset": { - "start": 5721, - "end": 5732 - }, - "page_num": 5, - "text": "heavyweight", - "position": { - "top": 1754, - "bottom": 1804, - "left": 403, - "right": 660 - } - }, - { - "doc_offset": { - "start": 5733, - "end": 5738 - }, - "page_num": 5, - "text": "query", - "position": { - "top": 1754, - "bottom": 1804, - "left": 674, - "right": 787 - } - }, - { - "doc_offset": { - "start": 5739, - "end": 5743 - }, - "page_num": 5, - "text": "tied", - "position": { - "top": 1754, - "bottom": 1804, - "left": 802, - "right": 876 - } - }, - { - "doc_offset": { - "start": 5744, - "end": 5746 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1754, - "bottom": 1804, - "left": 896, - "right": 938 - } - }, - { - "doc_offset": { - "start": 5747, - "end": 5759 - }, - "page_num": 5, - "text": "submissions.", - "position": { - "top": 1755, - "bottom": 1804, - "left": 958, - "right": 1224 - } - }, - { - "doc_offset": { - "start": 5760, - "end": 5767 - }, - "page_num": 5, - "text": "Because", - "position": { - "top": 1755, - "bottom": 1804, - "left": 1234, - "right": 1408 - } - }, - { - "doc_offset": { - "start": 5768, - "end": 5779 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1755, - "bottom": 1804, - "left": 1423, - "right": 1648 - } - }, - { - "doc_offset": { - "start": 5780, - "end": 5784 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1755, - "bottom": 1804, - "left": 1661, - "right": 1760 - } - }, - { - "doc_offset": { - "start": 5785, - "end": 5787 - }, - "page_num": 5, - "text": "no", - "position": { - "top": 1755, - "bottom": 1804, - "left": 1776, - "right": 1827 - } - }, - { - "doc_offset": { - "start": 5788, - "end": 5803 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1755, - "bottom": 1804, - "left": 1850, - "right": 2184 - } - }, - { - "doc_offset": { - "start": 5804, - "end": 5810 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1755, - "bottom": 1806, - "left": 2203, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 5811, - "end": 5822 - }, - "page_num": 5, - "text": "identifier,", - "position": { - "top": 1817, - "bottom": 1864, - "left": 210, - "right": 391 - } - }, - { - "doc_offset": { - "start": 5823, - "end": 5826 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1817, - "bottom": 1864, - "left": 401, - "right": 475 - } - }, - { - "doc_offset": { - "start": 5827, - "end": 5830 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1817, - "bottom": 1866, - "left": 488, - "right": 557 - } - }, - { - "doc_offset": { - "start": 5831, - "end": 5841 - }, - "page_num": 5, - "text": "identifier", - "position": { - "top": 1817, - "bottom": 1866, - "left": 567, - "right": 746 - } - }, - { - "doc_offset": { - "start": 5842, - "end": 5850 - }, - "page_num": 5, - "text": "assigned", - "position": { - "top": 1816, - "bottom": 1866, - "left": 756, - "right": 931 - } - }, - { - "doc_offset": { - "start": 5851, - "end": 5853 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 1816, - "bottom": 1866, - "left": 948, - "right": 999 - } - }, - { - "doc_offset": { - "start": 5854, - "end": 5857 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1816, - "bottom": 1866, - "left": 1009, - "right": 1077 - } - }, - { - "doc_offset": { - "start": 5858, - "end": 5869 - }, - "page_num": 5, - "text": "integration", - "position": { - "top": 1816, - "bottom": 1866, - "left": 1087, - "right": 1299 - } - }, - { - "doc_offset": { - "start": 5870, - "end": 5872 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1816, - "bottom": 1867, - "left": 1312, - "right": 1350 - } - }, - { - "doc_offset": { - "start": 5873, - "end": 5876 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1816, - "bottom": 1867, - "left": 1360, - "right": 1435 - } - }, - { - "doc_offset": { - "start": 5877, - "end": 5884 - }, - "page_num": 5, - "text": "stable,", - "position": { - "top": 1816, - "bottom": 1867, - "left": 1445, - "right": 1578 - } - }, - { - "doc_offset": { - "start": 5885, - "end": 5896 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1816, - "bottom": 1867, - "left": 1588, - "right": 1813 - } - }, - { - "doc_offset": { - "start": 5897, - "end": 5901 - }, - "page_num": 5, - "text": "must", - "position": { - "top": 1817, - "bottom": 1867, - "left": 1823, - "right": 1926 - } - }, - { - "doc_offset": { - "start": 5902, - "end": 5904 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1817, - "bottom": 1867, - "left": 1936, - "right": 1992 - } - }, - { - "doc_offset": { - "start": 5905, - "end": 5911 - }, - "page_num": 5, - "text": "pulled", - "position": { - "top": 1817, - "bottom": 1867, - "left": 2005, - "right": 2125 - } - }, - { - "doc_offset": { - "start": 5912, - "end": 5916 - }, - "page_num": 5, - "text": "only", - "position": { - "top": 1817, - "bottom": 1867, - "left": 2143, - "right": 2226 - } - }, - { - "doc_offset": { - "start": 5917, - "end": 5921 - }, - "page_num": 5, - "text": "once", - "position": { - "top": 1817, - "bottom": 1866, - "left": 2240, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5922, - "end": 5925 - }, - "page_num": 5, - "text": "per", - "position": { - "top": 1880, - "bottom": 1926, - "left": 210, - "right": 276 - } - }, - { - "doc_offset": { - "start": 5926, - "end": 5937 - }, - "page_num": 5, - "text": "submission.", - "position": { - "top": 1879, - "bottom": 1926, - "left": 287, - "right": 527 - } - }, - { - "doc_offset": { - "start": 5938, - "end": 5942 - }, - "page_num": 5, - "text": "This", - "position": { - "top": 1879, - "bottom": 1926, - "left": 538, - "right": 617 - } - }, - { - "doc_offset": { - "start": 5943, - "end": 5949 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 1879, - "bottom": 1926, - "left": 628, - "right": 757 - } - }, - { - "doc_offset": { - "start": 5950, - "end": 5955 - }, - "page_num": 5, - "text": "occur", - "position": { - "top": 1879, - "bottom": 1926, - "left": 775, - "right": 889 - } - }, - { - "doc_offset": { - "start": 5956, - "end": 5958 - }, - "page_num": 5, - "text": "at", - "position": { - "top": 1879, - "bottom": 1926, - "left": 899, - "right": 936 - } - }, - { - "doc_offset": { - "start": 5959, - "end": 5962 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1879, - "bottom": 1926, - "left": 946, - "right": 1011 - } - }, - { - "doc_offset": { - "start": 5963, - "end": 5971 - }, - "page_num": 5, - "text": "terminal", - "position": { - "top": 1879, - "bottom": 1926, - "left": 1021, - "right": 1183 - } - }, - { - "doc_offset": { - "start": 5972, - "end": 5977 - }, - "page_num": 5, - "text": "state", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1193, - "right": 1289 - } - }, - { - "doc_offset": { - "start": 5978, - "end": 5980 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1303, - "right": 1342 - } - }, - { - "doc_offset": { - "start": 5981, - "end": 5984 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1352, - "right": 1418 - } - }, - { - "doc_offset": { - "start": 5985, - "end": 5995 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1431, - "right": 1648 - } - }, - { - "doc_offset": { - "start": 5996, - "end": 6000 - }, - "page_num": 5, - "text": "just", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1661, - "right": 1736 - } - }, - { - "doc_offset": { - "start": 6001, - "end": 6007 - }, - "page_num": 5, - "text": "before", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1746, - "right": 1873 - } - }, - { - "doc_offset": { - "start": 6008, - "end": 6012 - }, - "page_num": 5, - "text": "it's", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1883, - "right": 1949 - } - }, - { - "doc_offset": { - "start": 6013, - "end": 6020 - }, - "page_num": 5, - "text": "omitted", - "position": { - "top": 1879, - "bottom": 1926, - "left": 1958, - "right": 2105 - } - }, - { - "doc_offset": { - "start": 6021, - "end": 6025 - }, - "page_num": 5, - "text": "from", - "position": { - "top": 1879, - "bottom": 1926, - "left": 2118, - "right": 2196 - } - }, - { - "doc_offset": { - "start": 6026, - "end": 6032 - }, - "page_num": 5, - "text": "future", - "position": { - "top": 1879, - "bottom": 1926, - "left": 2220, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 6033, - "end": 6044 - }, - "page_num": 5, - "text": "processing:", - "position": { - "top": 1942, - "bottom": 1988, - "left": 210, - "right": 441 - } - }, - { - "doc_offset": { - "start": 6045, - "end": 6049 - }, - "page_num": 5, - "text": "i.e.", - "position": { - "top": 1940, - "bottom": 1988, - "left": 451, - "right": 522 - } - }, - { - "doc_offset": { - "start": 6050, - "end": 6054 - }, - "page_num": 5, - "text": "when", - "position": { - "top": 1940, - "bottom": 1988, - "left": 532, - "right": 636 - } - }, - { - "doc_offset": { - "start": 6055, - "end": 6058 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1939, - "bottom": 1986, - "left": 656, - "right": 717 - } - }, - { - "doc_offset": { - "start": 6059, - "end": 6069 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1939, - "bottom": 1986, - "left": 737, - "right": 956 - } - }, - { - "doc_offset": { - "start": 6070, - "end": 6072 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1939, - "bottom": 1986, - "left": 975, - "right": 1014 - } - }, - { - "doc_offset": { - "start": 6073, - "end": 6079 - }, - "page_num": 5, - "text": "marked", - "position": { - "top": 1939, - "bottom": 1986, - "left": 1027, - "right": 1177 - } - }, - { - "doc_offset": { - "start": 6080, - "end": 6082 - }, - "page_num": 5, - "text": "as", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1196, - "right": 1243 - } - }, - { - "doc_offset": { - "start": 6083, - "end": 6093 - }, - "page_num": 5, - "text": "retrieved.", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1259, - "right": 1454 - } - }, - { - "doc_offset": { - "start": 6094, - "end": 6098 - }, - "page_num": 5, - "text": "Once", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1464, - "right": 1567 - } - }, - { - "doc_offset": { - "start": 6099, - "end": 6100 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1585, - "right": 1611 - } - }, - { - "doc_offset": { - "start": 6101, - "end": 6111 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1630, - "right": 1849 - } - }, - { - "doc_offset": { - "start": 6112, - "end": 6114 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1866, - "right": 1903 - } - }, - { - "doc_offset": { - "start": 6115, - "end": 6121 - }, - "page_num": 5, - "text": "marked", - "position": { - "top": 1939, - "bottom": 1986, - "left": 1919, - "right": 2067 - } - }, - { - "doc_offset": { - "start": 6122, - "end": 6124 - }, - "page_num": 5, - "text": "as", - "position": { - "top": 1939, - "bottom": 1986, - "left": 2090, - "right": 2135 - } - }, - { - "doc_offset": { - "start": 6125, - "end": 6135 - }, - "page_num": 5, - "text": "retrieved,", - "position": { - "top": 1939, - "bottom": 1988, - "left": 2148, - "right": 2335 - } - }, - { - "doc_offset": { - "start": 6136, - "end": 6141 - }, - "page_num": 5, - "text": "there", - "position": { - "top": 1999, - "bottom": 2048, - "left": 207, - "right": 309 - } - }, - { - "doc_offset": { - "start": 6142, - "end": 6148 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 2000, - "bottom": 2048, - "left": 325, - "right": 454 - } - }, - { - "doc_offset": { - "start": 6149, - "end": 6151 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 2000, - "bottom": 2048, - "left": 469, - "right": 522 - } - }, - { - "doc_offset": { - "start": 6152, - "end": 6154 - }, - "page_num": 5, - "text": "no", - "position": { - "top": 2000, - "bottom": 2048, - "left": 535, - "right": 584 - } - }, - { - "doc_offset": { - "start": 6155, - "end": 6162 - }, - "page_num": 5, - "text": "further", - "position": { - "top": 2000, - "bottom": 2048, - "left": 600, - "right": 736 - } - }, - { - "doc_offset": { - "start": 6163, - "end": 6170 - }, - "page_num": 5, - "text": "updates", - "position": { - "top": 2002, - "bottom": 2048, - "left": 746, - "right": 909 - } - }, - { - "doc_offset": { - "start": 6171, - "end": 6173 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2002, - "bottom": 2048, - "left": 919, - "right": 959 - } - }, - { - "doc_offset": { - "start": 6174, - "end": 6177 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2002, - "bottom": 2049, - "left": 975, - "right": 1040 - } - }, - { - "doc_offset": { - "start": 6178, - "end": 6188 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 2002, - "bottom": 2049, - "left": 1055, - "right": 1275 - } - }, - { - "doc_offset": { - "start": 6189, - "end": 6198 - }, - "page_num": 5, - "text": "resetting", - "position": { - "top": 2002, - "bottom": 2048, - "left": 1290, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 6199, - "end": 6202 - }, - "page_num": 5, - "text": "its", - "position": { - "top": 2002, - "bottom": 2048, - "left": 1474, - "right": 1525 - } - }, - { - "doc_offset": { - "start": 6203, - "end": 6212 - }, - "page_num": 5, - "text": "updatedAt", - "position": { - "top": 2002, - "bottom": 2048, - "left": 1554, - "right": 1757 - } - }, - { - "doc_offset": { - "start": 6213, - "end": 6223 - }, - "page_num": 5, - "text": "attribute,", - "position": { - "top": 2000, - "bottom": 2048, - "left": 1786, - "right": 1965 - } - }, - { - "doc_offset": { - "start": 6224, - "end": 6233 - }, - "page_num": 5, - "text": "therefore", - "position": { - "top": 2000, - "bottom": 2048, - "left": 1975, - "right": 2154 - } - }, - { - "doc_offset": { - "start": 6234, - "end": 6236 - }, - "page_num": 5, - "text": "it", - "position": { - "top": 1999, - "bottom": 2046, - "left": 2164, - "right": 2197 - } - }, - { - "doc_offset": { - "start": 6237, - "end": 6241 - }, - "page_num": 5, - "text": "will", - "position": { - "top": 1999, - "bottom": 2046, - "left": 2207, - "right": 2274 - } - }, - { - "doc_offset": { - "start": 6242, - "end": 6244 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1999, - "bottom": 2046, - "left": 2284, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 6245, - "end": 6252 - }, - "page_num": 5, - "text": "omitted", - "position": { - "top": 2062, - "bottom": 2106, - "left": 210, - "right": 356 - } - }, - { - "doc_offset": { - "start": 6253, - "end": 6257 - }, - "page_num": 5, - "text": "from", - "position": { - "top": 2062, - "bottom": 2108, - "left": 369, - "right": 445 - } - }, - { - "doc_offset": { - "start": 6258, - "end": 6261 - }, - "page_num": 5, - "text": "all", - "position": { - "top": 2062, - "bottom": 2108, - "left": 472, - "right": 515 - } - }, - { - "doc_offset": { - "start": 6262, - "end": 6268 - }, - "page_num": 5, - "text": "future", - "position": { - "top": 2062, - "bottom": 2108, - "left": 525, - "right": 641 - } - }, - { - "doc_offset": { - "start": 6269, - "end": 6273 - }, - "page_num": 5, - "text": "runs", - "position": { - "top": 2062, - "bottom": 2108, - "left": 650, - "right": 742 - } - }, - { - "doc_offset": { - "start": 6274, - "end": 6276 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 2062, - "bottom": 2109, - "left": 750, - "right": 790 - } - }, - { - "doc_offset": { - "start": 6277, - "end": 6280 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2062, - "bottom": 2109, - "left": 800, - "right": 860 - } - }, - { - "doc_offset": { - "start": 6281, - "end": 6293 - }, - "page_num": 5, - "text": "integration.", - "position": { - "top": 2062, - "bottom": 2109, - "left": 871, - "right": 1094 - } - }, - { - "doc_offset": { - "start": 6294, - "end": 6298 - }, - "page_num": 5, - "text": "Data", - "position": { - "top": 2168, - "bottom": 2212, - "left": 212, - "right": 309 - } - }, - { - "doc_offset": { - "start": 6299, - "end": 6313 - }, - "page_num": 5, - "text": "Reconciliation", - "position": { - "top": 2168, - "bottom": 2212, - "left": 320, - "right": 613 - } - }, - { - "doc_offset": { - "start": 6314, - "end": 6317 - }, - "page_num": 5, - "text": "The", - "position": { - "top": 2273, - "bottom": 2320, - "left": 213, - "right": 283 - } - }, - { - "doc_offset": { - "start": 6318, - "end": 6324 - }, - "page_num": 5, - "text": "output", - "position": { - "top": 2273, - "bottom": 2321, - "left": 296, - "right": 426 - } - }, - { - "doc_offset": { - "start": 6325, - "end": 6329 - }, - "page_num": 5, - "text": "does", - "position": { - "top": 2273, - "bottom": 2321, - "left": 438, - "right": 534 - } - }, - { - "doc_offset": { - "start": 6330, - "end": 6333 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 2271, - "bottom": 2321, - "left": 544, - "right": 611 - } - }, - { - "doc_offset": { - "start": 6334, - "end": 6341 - }, - "page_num": 5, - "text": "include", - "position": { - "top": 2271, - "bottom": 2321, - "left": 621, - "right": 769 - } - }, - { - "doc_offset": { - "start": 6342, - "end": 6343 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 2271, - "bottom": 2323, - "left": 782, - "right": 805 - } - }, - { - "doc_offset": { - "start": 6344, - "end": 6351 - }, - "page_num": 5, - "text": "primary", - "position": { - "top": 2271, - "bottom": 2323, - "left": 816, - "right": 966 - } - }, - { - "doc_offset": { - "start": 6352, - "end": 6355 - }, - "page_num": 5, - "text": "key", - "position": { - "top": 2271, - "bottom": 2323, - "left": 977, - "right": 1050 - } - }, - { - "doc_offset": { - "start": 6356, - "end": 6362 - }, - "page_num": 5, - "text": "needed", - "position": { - "top": 2271, - "bottom": 2323, - "left": 1060, - "right": 1210 - } - }, - { - "doc_offset": { - "start": 6363, - "end": 6365 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2270, - "bottom": 2323, - "left": 1221, - "right": 1264 - } - }, - { - "doc_offset": { - "start": 6366, - "end": 6372 - }, - "page_num": 5, - "text": "update", - "position": { - "top": 2270, - "bottom": 2323, - "left": 1277, - "right": 1418 - } - }, - { - "doc_offset": { - "start": 6373, - "end": 6381 - }, - "page_num": 5, - "text": "existing", - "position": { - "top": 2270, - "bottom": 2323, - "left": 1428, - "right": 1578 - } - }, - { - "doc_offset": { - "start": 6382, - "end": 6387 - }, - "page_num": 5, - "text": "rows.", - "position": { - "top": 2270, - "bottom": 2323, - "left": 1590, - "right": 1703 - } - }, - { - "doc_offset": { - "start": 6388, - "end": 6390 - }, - "page_num": 5, - "text": "As", - "position": { - "top": 2270, - "bottom": 2323, - "left": 1713, - "right": 1770 - } - }, - { - "doc_offset": { - "start": 6391, - "end": 6395 - }, - "page_num": 5, - "text": "such", - "position": { - "top": 2271, - "bottom": 2323, - "left": 1780, - "right": 1873 - } - }, - { - "doc_offset": { - "start": 6396, - "end": 6398 - }, - "page_num": 5, - "text": "it", - "position": { - "top": 2271, - "bottom": 2323, - "left": 1883, - "right": 1913 - } - }, - { - "doc_offset": { - "start": 6399, - "end": 6403 - }, - "page_num": 5, - "text": "will", - "position": { - "top": 2271, - "bottom": 2323, - "left": 1923, - "right": 1991 - } - }, - { - "doc_offset": { - "start": 6404, - "end": 6408 - }, - "page_num": 5, - "text": "only", - "position": { - "top": 2271, - "bottom": 2323, - "left": 2001, - "right": 2085 - } - }, - { - "doc_offset": { - "start": 6409, - "end": 6416 - }, - "page_num": 5, - "text": "contain", - "position": { - "top": 2271, - "bottom": 2321, - "left": 2095, - "right": 2241 - } - }, - { - "doc_offset": { - "start": 6417, - "end": 6420 - }, - "page_num": 5, - "text": "new", - "position": { - "top": 2271, - "bottom": 2321, - "left": 2252, - "right": 2329 - } - }, - { - "doc_offset": { - "start": 6421, - "end": 6425 - }, - "page_num": 5, - "text": "rows", - "position": { - "top": 2334, - "bottom": 2379, - "left": 209, - "right": 305 - } - }, - { - "doc_offset": { - "start": 6426, - "end": 6428 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2334, - "bottom": 2380, - "left": 315, - "right": 355 - } - }, - { - "doc_offset": { - "start": 6429, - "end": 6431 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 2333, - "bottom": 2380, - "left": 365, - "right": 415 - } - }, - { - "doc_offset": { - "start": 6432, - "end": 6440 - }, - "page_num": 5, - "text": "inserted", - "position": { - "top": 2333, - "bottom": 2380, - "left": 425, - "right": 583 - } - }, - { - "doc_offset": { - "start": 6441, - "end": 6445 - }, - "page_num": 5, - "text": "into", - "position": { - "top": 2331, - "bottom": 2380, - "left": 593, - "right": 671 - } - }, - { - "doc_offset": { - "start": 6446, - "end": 6449 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2331, - "bottom": 2380, - "left": 681, - "right": 743 - } - }, - { - "doc_offset": { - "start": 6450, - "end": 6457 - }, - "page_num": 5, - "text": "Metrics", - "position": { - "top": 2331, - "bottom": 2380, - "left": 753, - "right": 905 - } - }, - { - "doc_offset": { - "start": 6458, - "end": 6467 - }, - "page_num": 5, - "text": "database.", - "position": { - "top": 2331, - "bottom": 2381, - "left": 915, - "right": 1111 - } - }, - { - "doc_offset": { - "start": 6468, - "end": 6477 - }, - "page_num": 5, - "text": "formatted", - "position": { - "top": 2694, - "bottom": 2727, - "left": 1922, - "right": 2045 - } - }, - { - "doc_offset": { - "start": 6478, - "end": 6480 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 2694, - "bottom": 2727, - "left": 2052, - "right": 2082 - } - }, - { - "doc_offset": { - "start": 6481, - "end": 6489 - }, - "page_num": 5, - "text": "Markdeep", - "position": { - "top": 2694, - "bottom": 2725, - "left": 2090, - "right": 2216 - } - }, - { - "doc_offset": { - "start": 6490, - "end": 6494 - }, - "page_num": 5, - "text": "1.17", - "position": { - "top": 2694, - "bottom": 2725, - "left": 2227, - "right": 2283 - } - } - ] -} \ No newline at end of file diff --git a/tests/data/etloutput/4289/107457/101156/tables.json b/tests/data/etloutput/4289/107457/101156/tables.json deleted file mode 100644 index 54c6679..0000000 --- a/tests/data/etloutput/4289/107457/101156/tables.json +++ /dev/null @@ -1,3302 +0,0 @@ -[ - [ - { - "page_num": 0, - "position": { - "top": 1651, - "bottom": 1949, - "left": 212, - "right": 2332 - }, - "num_rows": 3, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 1651, - "bottom": 1763, - "left": 212, - "right": 644 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 955, - "end": 961 - } - ], - "page_offsets": [ - { - "start": 955, - "end": 961 - } - ] - }, - { - "position": { - "top": 1651, - "bottom": 1763, - "left": 644, - "right": 1325 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 962, - "end": 966 - } - ], - "page_offsets": [ - { - "start": 962, - "end": 966 - } - ] - }, - { - "position": { - "top": 1651, - "bottom": 1763, - "left": 1325, - "right": 2332 - }, - "text": "GraphQL Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 967, - "end": 981 - } - ], - "page_offsets": [ - { - "start": 967, - "end": 981 - } - ] - }, - { - "position": { - "top": 1763, - "bottom": 1857, - "left": 212, - "right": 644 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 982, - "end": 984 - } - ], - "page_offsets": [ - { - "start": 982, - "end": 984 - } - ] - }, - { - "position": { - "top": 1763, - "bottom": 1855, - "left": 644, - "right": 1325 - }, - "text": "int", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 985, - "end": 988 - } - ], - "page_offsets": [ - { - "start": 985, - "end": 988 - } - ] - }, - { - "position": { - "top": 1763, - "bottom": 1855, - "left": 1325, - "right": 2332 - }, - "text": "workflow.id", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 989, - "end": 1000 - } - ], - "page_offsets": [ - { - "start": 989, - "end": 1000 - } - ] - }, - { - "position": { - "top": 1857, - "bottom": 1949, - "left": 212, - "right": 644 - }, - "text": "name", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1001, - "end": 1005 - } - ], - "page_offsets": [ - { - "start": 1001, - "end": 1005 - } - ] - }, - { - "position": { - "top": 1857, - "bottom": 1949, - "left": 644, - "right": 1325 - }, - "text": "str", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1006, - "end": 1009 - } - ], - "page_offsets": [ - { - "start": 1006, - "end": 1009 - } - ] - }, - { - "position": { - "top": 1855, - "bottom": 1947, - "left": 1325, - "right": 2332 - }, - "text": "workflow. name", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1010, - "end": 1024 - } - ], - "page_offsets": [ - { - "start": 1010, - "end": 1024 - } - ] - } - ], - "doc_offsets": [ - { - "start": 955, - "end": 1024 - } - ], - "page_offsets": [ - { - "start": 955, - "end": 1024 - } - ], - "table_id": 0, - "table_offset": { - "row": 0, - "column": 0 - } - } - ], - [ - { - "page_num": 1, - "position": { - "top": 170, - "bottom": 562, - "left": 213, - "right": 2335 - }, - "num_rows": 4, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 170, - "bottom": 286, - "left": 213, - "right": 689 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1371, - "end": 1377 - } - ], - "page_offsets": [ - { - "start": 10, - "end": 16 - } - ] - }, - { - "position": { - "top": 170, - "bottom": 284, - "left": 689, - "right": 1249 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1378, - "end": 1382 - } - ], - "page_offsets": [ - { - "start": 17, - "end": 21 - } - ] - }, - { - "position": { - "top": 170, - "bottom": 284, - "left": 1249, - "right": 2335 - }, - "text": "GraphQL Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1383, - "end": 1397 - } - ], - "page_offsets": [ - { - "start": 22, - "end": 36 - } - ] - }, - { - "position": { - "top": 286, - "bottom": 381, - "left": 213, - "right": 689 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1398, - "end": 1400 - } - ], - "page_offsets": [ - { - "start": 37, - "end": 39 - } - ] - }, - { - "position": { - "top": 286, - "bottom": 378, - "left": 689, - "right": 1249 - }, - "text": "int", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1401, - "end": 1404 - } - ], - "page_offsets": [ - { - "start": 40, - "end": 43 - } - ] - }, - { - "position": { - "top": 284, - "bottom": 378, - "left": 1251, - "right": 2335 - }, - "text": "modelGroup. id", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1405, - "end": 1419 - } - ], - "page_offsets": [ - { - "start": 44, - "end": 58 - } - ] - }, - { - "position": { - "top": 381, - "bottom": 470, - "left": 213, - "right": 689 - }, - "text": "name", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1420, - "end": 1424 - } - ], - "page_offsets": [ - { - "start": 59, - "end": 63 - } - ] - }, - { - "position": { - "top": 381, - "bottom": 470, - "left": 689, - "right": 1251 - }, - "text": "str", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1425, - "end": 1428 - } - ], - "page_offsets": [ - { - "start": 64, - "end": 67 - } - ] - }, - { - "position": { - "top": 378, - "bottom": 470, - "left": 1251, - "right": 2335 - }, - "text": "model Group. name", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1429, - "end": 1446 - } - ], - "page_offsets": [ - { - "start": 68, - "end": 85 - } - ] - }, - { - "position": { - "top": 470, - "bottom": 562, - "left": 213, - "right": 689 - }, - "text": "workflow_id", - "rows": [ - 3 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1447, - "end": 1458 - } - ], - "page_offsets": [ - { - "start": 86, - "end": 97 - } - ] - }, - { - "position": { - "top": 470, - "bottom": 562, - "left": 691, - "right": 1251 - }, - "text": "int", - "rows": [ - 3 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1459, - "end": 1462 - } - ], - "page_offsets": [ - { - "start": 98, - "end": 101 - } - ] - }, - { - "position": { - "top": 470, - "bottom": 562, - "left": 1251, - "right": 2335 - }, - "text": "model Group. workflowId", - "rows": [ - 3 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1463, - "end": 1486 - } - ], - "page_offsets": [ - { - "start": 102, - "end": 125 - } - ] - } - ], - "doc_offsets": [ - { - "start": 1371, - "end": 1486 - } - ], - "page_offsets": [ - { - "start": 10, - "end": 125 - } - ], - "table_id": 1, - "table_offset": { - "row": 0, - "column": 0 - } - } - ], - [ - { - "page_num": 2, - "position": { - "top": 253, - "bottom": 1653, - "left": 209, - "right": 2334 - }, - "num_rows": 14, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 253, - "bottom": 366, - "left": 211, - "right": 807 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1861, - "end": 1867 - } - ], - "page_offsets": [ - { - "start": 15, - "end": 21 - } - ] - }, - { - "position": { - "top": 253, - "bottom": 366, - "left": 807, - "right": 1308 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1868, - "end": 1872 - } - ], - "page_offsets": [ - { - "start": 22, - "end": 26 - } - ] - }, - { - "position": { - "top": 253, - "bottom": 364, - "left": 1308, - "right": 2334 - }, - "text": "GraphQL Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1873, - "end": 1887 - } - ], - "page_offsets": [ - { - "start": 27, - "end": 41 - } - ] - }, - { - "position": { - "top": 366, - "bottom": 460, - "left": 211, - "right": 807 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1888, - "end": 1890 - } - ], - "page_offsets": [ - { - "start": 42, - "end": 44 - } - ] - }, - { - "position": { - "top": 366, - "bottom": 460, - "left": 807, - "right": 1308 - }, - "text": "int", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1891, - "end": 1894 - } - ], - "page_offsets": [ - { - "start": 45, - "end": 48 - } - ] - }, - { - "position": { - "top": 366, - "bottom": 460, - "left": 1308, - "right": 2334 - }, - "text": "submission.id", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1895, - "end": 1908 - } - ], - "page_offsets": [ - { - "start": 49, - "end": 62 - } - ] - }, - { - "position": { - "top": 462, - "bottom": 561, - "left": 211, - "right": 807 - }, - "text": "created_at", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1909, - "end": 1919 - } - ], - "page_offsets": [ - { - "start": 63, - "end": 73 - } - ] - }, - { - "position": { - "top": 460, - "bottom": 558, - "left": 807, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1920, - "end": 1928 - } - ], - "page_offsets": [ - { - "start": 74, - "end": 82 - } - ] - }, - { - "position": { - "top": 460, - "bottom": 558, - "left": 1308, - "right": 2334 - }, - "text": "submission. createdAt", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1929, - "end": 1950 - } - ], - "page_offsets": [ - { - "start": 83, - "end": 104 - } - ] - }, - { - "position": { - "top": 561, - "bottom": 663, - "left": 211, - "right": 807 - }, - "text": "processed_at", - "rows": [ - 3 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1951, - "end": 1963 - } - ], - "page_offsets": [ - { - "start": 105, - "end": 117 - } - ] - }, - { - "position": { - "top": 561, - "bottom": 663, - "left": 807, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 3 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1964, - "end": 1972 - } - ], - "page_offsets": [ - { - "start": 118, - "end": 126 - } - ] - }, - { - "position": { - "top": 561, - "bottom": 663, - "left": 1308, - "right": 2334 - }, - "text": "submission.review. completedAt", - "rows": [ - 3 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1973, - "end": 2003 - } - ], - "page_offsets": [ - { - "start": 127, - "end": 157 - } - ] - }, - { - "position": { - "top": 663, - "bottom": 768, - "left": 211, - "right": 807 - }, - "text": "reviewer_id", - "rows": [ - 4 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2004, - "end": 2015 - } - ], - "page_offsets": [ - { - "start": 158, - "end": 169 - } - ] - }, - { - "position": { - "top": 663, - "bottom": 768, - "left": 807, - "right": 1308 - }, - "text": "int", - "rows": [ - 4 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2016, - "end": 2019 - } - ], - "page_offsets": [ - { - "start": 170, - "end": 173 - } - ] - }, - { - "position": { - "top": 663, - "bottom": 768, - "left": 1308, - "right": 2334 - }, - "text": "submission. review. createdBy 2", - "rows": [ - 4 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2020, - "end": 2051 - } - ], - "page_offsets": [ - { - "start": 174, - "end": 205 - } - ] - }, - { - "position": { - "top": 768, - "bottom": 866, - "left": 211, - "right": 807 - }, - "text": "review_started_at", - "rows": [ - 5 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2052, - "end": 2069 - } - ], - "page_offsets": [ - { - "start": 206, - "end": 223 - } - ] - }, - { - "position": { - "top": 768, - "bottom": 866, - "left": 807, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 5 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2070, - "end": 2078 - } - ], - "page_offsets": [ - { - "start": 224, - "end": 232 - } - ] - }, - { - "position": { - "top": 768, - "bottom": 866, - "left": 1308, - "right": 2334 - }, - "text": "submission.review. startedAt 2", - "rows": [ - 5 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2079, - "end": 2109 - } - ], - "page_offsets": [ - { - "start": 233, - "end": 263 - } - ] - }, - { - "position": { - "top": 866, - "bottom": 971, - "left": 211, - "right": 807 - }, - "text": "review_completed_at", - "rows": [ - 6 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2110, - "end": 2129 - } - ], - "page_offsets": [ - { - "start": 264, - "end": 283 - } - ] - }, - { - "position": { - "top": 866, - "bottom": 971, - "left": 810, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 6 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2130, - "end": 2138 - } - ], - "page_offsets": [ - { - "start": 284, - "end": 292 - } - ] - }, - { - "position": { - "top": 866, - "bottom": 971, - "left": 1308, - "right": 2334 - }, - "text": "submission.review. completedAt 2", - "rows": [ - 6 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2139, - "end": 2171 - } - ], - "page_offsets": [ - { - "start": 293, - "end": 325 - } - ] - }, - { - "position": { - "top": 971, - "bottom": 1074, - "left": 211, - "right": 810 - }, - "text": "rejected", - "rows": [ - 7 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2172, - "end": 2180 - } - ], - "page_offsets": [ - { - "start": 326, - "end": 334 - } - ] - }, - { - "position": { - "top": 971, - "bottom": 1076, - "left": 810, - "right": 1308 - }, - "text": "bool", - "rows": [ - 7 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2181, - "end": 2185 - } - ], - "page_offsets": [ - { - "start": 335, - "end": 339 - } - ] - }, - { - "position": { - "top": 971, - "bottom": 1076, - "left": 1308, - "right": 2334 - }, - "text": "submission. review. rejected 2", - "rows": [ - 7 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2186, - "end": 2216 - } - ], - "page_offsets": [ - { - "start": 340, - "end": 370 - } - ] - }, - { - "position": { - "top": 1076, - "bottom": 1172, - "left": 211, - "right": 810 - }, - "text": "rejection_reason", - "rows": [ - 8 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2217, - "end": 2233 - } - ], - "page_offsets": [ - { - "start": 371, - "end": 387 - } - ] - }, - { - "position": { - "top": 1076, - "bottom": 1172, - "left": 810, - "right": 1308 - }, - "text": "str", - "rows": [ - 8 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2234, - "end": 2237 - } - ], - "page_offsets": [ - { - "start": 388, - "end": 391 - } - ] - }, - { - "position": { - "top": 1076, - "bottom": 1174, - "left": 1308, - "right": 2334 - }, - "text": "submission.review. notes 2", - "rows": [ - 8 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2238, - "end": 2264 - } - ], - "page_offsets": [ - { - "start": 392, - "end": 418 - } - ] - }, - { - "position": { - "top": 1172, - "bottom": 1268, - "left": 211, - "right": 810 - }, - "text": "completed_at", - "rows": [ - 9 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2265, - "end": 2277 - } - ], - "page_offsets": [ - { - "start": 419, - "end": 431 - } - ] - }, - { - "position": { - "top": 1174, - "bottom": 1268, - "left": 810, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 9 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2278, - "end": 2286 - } - ], - "page_offsets": [ - { - "start": 432, - "end": 440 - } - ] - }, - { - "position": { - "top": 1174, - "bottom": 1268, - "left": 1308, - "right": 2334 - }, - "text": "submission. completedAt", - "rows": [ - 9 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2287, - "end": 2310 - } - ], - "page_offsets": [ - { - "start": 441, - "end": 464 - } - ] - }, - { - "position": { - "top": 1268, - "bottom": 1371, - "left": 211, - "right": 810 - }, - "text": "retrieved_at", - "rows": [ - 10 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2311, - "end": 2323 - } - ], - "page_offsets": [ - { - "start": 465, - "end": 477 - } - ] - }, - { - "position": { - "top": 1268, - "bottom": 1371, - "left": 810, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 10 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2324, - "end": 2332 - } - ], - "page_offsets": [ - { - "start": 478, - "end": 486 - } - ] - }, - { - "position": { - "top": 1270, - "bottom": 1373, - "left": 1308, - "right": 2334 - }, - "text": "submission. updatedAt 3", - "rows": [ - 10 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2333, - "end": 2356 - } - ], - "page_offsets": [ - { - "start": 487, - "end": 510 - } - ] - }, - { - "position": { - "top": 1371, - "bottom": 1471, - "left": 209, - "right": 810 - }, - "text": "failed", - "rows": [ - 11 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2357, - "end": 2363 - } - ], - "page_offsets": [ - { - "start": 511, - "end": 517 - } - ] - }, - { - "position": { - "top": 1373, - "bottom": 1471, - "left": 810, - "right": 1308 - }, - "text": "bool", - "rows": [ - 11 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2364, - "end": 2368 - } - ], - "page_offsets": [ - { - "start": 518, - "end": 522 - } - ] - }, - { - "position": { - "top": 1373, - "bottom": 1471, - "left": 1308, - "right": 2334 - }, - "text": "submission.status 4", - "rows": [ - 11 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2369, - "end": 2388 - } - ], - "page_offsets": [ - { - "start": 523, - "end": 542 - } - ] - }, - { - "position": { - "top": 1471, - "bottom": 1561, - "left": 209, - "right": 810 - }, - "text": "status", - "rows": [ - 12 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2389, - "end": 2395 - } - ], - "page_offsets": [ - { - "start": 543, - "end": 549 - } - ] - }, - { - "position": { - "top": 1471, - "bottom": 1559, - "left": 810, - "right": 1308 - }, - "text": "enum", - "rows": [ - 12 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2396, - "end": 2400 - } - ], - "page_offsets": [ - { - "start": 550, - "end": 554 - } - ] - }, - { - "position": { - "top": 1473, - "bottom": 1559, - "left": 1308, - "right": 2334 - }, - "text": "submission.status", - "rows": [ - 12 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2401, - "end": 2418 - } - ], - "page_offsets": [ - { - "start": 555, - "end": 572 - } - ] - }, - { - "position": { - "top": 1561, - "bottom": 1653, - "left": 209, - "right": 810 - }, - "text": "workflow_id", - "rows": [ - 13 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2419, - "end": 2430 - } - ], - "page_offsets": [ - { - "start": 573, - "end": 584 - } - ] - }, - { - "position": { - "top": 1561, - "bottom": 1653, - "left": 810, - "right": 1308 - }, - "text": "int", - "rows": [ - 13 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2431, - "end": 2434 - } - ], - "page_offsets": [ - { - "start": 585, - "end": 588 - } - ] - }, - { - "position": { - "top": 1561, - "bottom": 1653, - "left": 1308, - "right": 2334 - }, - "text": "submission.workflowId", - "rows": [ - 13 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2435, - "end": 2456 - } - ], - "page_offsets": [ - { - "start": 589, - "end": 610 - } - ] - } - ], - "doc_offsets": [ - { - "start": 1861, - "end": 2456 - } - ], - "page_offsets": [ - { - "start": 15, - "end": 610 - } - ], - "table_id": 2, - "table_offset": { - "row": 0, - "column": 0 - } - } - ], - [ - { - "page_num": 3, - "position": { - "top": 2426, - "bottom": 2818, - "left": 211, - "right": 2337 - }, - "num_rows": 4, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 2428, - "bottom": 2542, - "left": 211, - "right": 693 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 3862, - "end": 3868 - } - ], - "page_offsets": [ - { - "start": 720, - "end": 726 - } - ] - }, - { - "position": { - "top": 2428, - "bottom": 2540, - "left": 693, - "right": 1156 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 3869, - "end": 3873 - } - ], - "page_offsets": [ - { - "start": 727, - "end": 731 - } - ] - }, - { - "position": { - "top": 2426, - "bottom": 2540, - "left": 1156, - "right": 2337 - }, - "text": "GraphQL Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 3874, - "end": 3888 - } - ], - "page_offsets": [ - { - "start": 732, - "end": 746 - } - ] - }, - { - "position": { - "top": 2542, - "bottom": 2632, - "left": 211, - "right": 693 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3889, - "end": 3891 - } - ], - "page_offsets": [ - { - "start": 747, - "end": 749 - } - ] - }, - { - "position": { - "top": 2542, - "bottom": 2632, - "left": 693, - "right": 1156 - }, - "text": "int", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3892, - "end": 3895 - } - ], - "page_offsets": [ - { - "start": 750, - "end": 753 - } - ] - }, - { - "position": { - "top": 2540, - "bottom": 2632, - "left": 1156, - "right": 2337 - }, - "text": "submission. inputFile.id", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3896, - "end": 3920 - } - ], - "page_offsets": [ - { - "start": 754, - "end": 778 - } - ] - }, - { - "position": { - "top": 2634, - "bottom": 2726, - "left": 211, - "right": 693 - }, - "text": "name", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3921, - "end": 3925 - } - ], - "page_offsets": [ - { - "start": 779, - "end": 783 - } - ] - }, - { - "position": { - "top": 2632, - "bottom": 2724, - "left": 693, - "right": 1156 - }, - "text": "str", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3926, - "end": 3929 - } - ], - "page_offsets": [ - { - "start": 784, - "end": 787 - } - ] - }, - { - "position": { - "top": 2632, - "bottom": 2724, - "left": 1156, - "right": 2337 - }, - "text": "submission. inputFile.filename", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3930, - "end": 3960 - } - ], - "page_offsets": [ - { - "start": 788, - "end": 818 - } - ] - }, - { - "position": { - "top": 2726, - "bottom": 2816, - "left": 211, - "right": 693 - }, - "text": "submission_id", - "rows": [ - 3 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3961, - "end": 3974 - } - ], - "page_offsets": [ - { - "start": 819, - "end": 832 - } - ] - }, - { - "position": { - "top": 2726, - "bottom": 2818, - "left": 695, - "right": 1156 - }, - "text": "int", - "rows": [ - 3 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3975, - "end": 3978 - } - ], - "page_offsets": [ - { - "start": 833, - "end": 836 - } - ] - }, - { - "position": { - "top": 2724, - "bottom": 2816, - "left": 1156, - "right": 2337 - }, - "text": "submission.id", - "rows": [ - 3 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3979, - "end": 3992 - } - ], - "page_offsets": [ - { - "start": 837, - "end": 850 - } - ] - } - ], - "doc_offsets": [ - { - "start": 3862, - "end": 3992 - } - ], - "page_offsets": [ - { - "start": 720, - "end": 850 - } - ], - "table_id": 3, - "table_offset": { - "row": 0, - "column": 0 - } - } - ], - [ - { - "page_num": 4, - "position": { - "top": 172, - "bottom": 655, - "left": 210, - "right": 2335 - }, - "num_rows": 5, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 174, - "bottom": 288, - "left": 212, - "right": 606 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4199, - "end": 4205 - } - ], - "page_offsets": [ - { - "start": 13, - "end": 19 - } - ] - }, - { - "position": { - "top": 172, - "bottom": 288, - "left": 606, - "right": 1190 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4206, - "end": 4210 - } - ], - "page_offsets": [ - { - "start": 20, - "end": 24 - } - ] - }, - { - "position": { - "top": 172, - "bottom": 283, - "left": 1190, - "right": 2333 - }, - "text": "GraphQL Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4211, - "end": 4225 - } - ], - "page_offsets": [ - { - "start": 25, - "end": 39 - } - ] - }, - { - "position": { - "top": 288, - "bottom": 379, - "left": 210, - "right": 606 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4226, - "end": 4228 - } - ], - "page_offsets": [ - { - "start": 40, - "end": 42 - } - ] - }, - { - "position": { - "top": 288, - "bottom": 379, - "left": 606, - "right": 1190 - }, - "text": "int", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4229, - "end": 4232 - } - ], - "page_offsets": [ - { - "start": 43, - "end": 46 - } - ] - }, - { - "position": { - "top": 288, - "bottom": 375, - "left": 1190, - "right": 2333 - }, - "text": "userSnapshot.id", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4233, - "end": 4248 - } - ], - "page_offsets": [ - { - "start": 47, - "end": 62 - } - ] - }, - { - "position": { - "top": 382, - "bottom": 471, - "left": 210, - "right": 606 - }, - "text": "name", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4249, - "end": 4253 - } - ], - "page_offsets": [ - { - "start": 63, - "end": 67 - } - ] - }, - { - "position": { - "top": 379, - "bottom": 471, - "left": 606, - "right": 1190 - }, - "text": "str", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4254, - "end": 4257 - } - ], - "page_offsets": [ - { - "start": 68, - "end": 71 - } - ] - }, - { - "position": { - "top": 379, - "bottom": 471, - "left": 1190, - "right": 2335 - }, - "text": "userSnapshot . name", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4258, - "end": 4277 - } - ], - "page_offsets": [ - { - "start": 72, - "end": 91 - } - ] - }, - { - "position": { - "top": 474, - "bottom": 565, - "left": 210, - "right": 606 - }, - "text": "email", - "rows": [ - 3 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4278, - "end": 4283 - } - ], - "page_offsets": [ - { - "start": 92, - "end": 97 - } - ] - }, - { - "position": { - "top": 471, - "bottom": 565, - "left": 606, - "right": 1190 - }, - "text": "str", - "rows": [ - 3 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4284, - "end": 4287 - } - ], - "page_offsets": [ - { - "start": 98, - "end": 101 - } - ] - }, - { - "position": { - "top": 471, - "bottom": 565, - "left": 1190, - "right": 2335 - }, - "text": "userSnapshot. email", - "rows": [ - 3 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4288, - "end": 4307 - } - ], - "page_offsets": [ - { - "start": 102, - "end": 121 - } - ] - }, - { - "position": { - "top": 565, - "bottom": 655, - "left": 210, - "right": 606 - }, - "text": "enabled", - "rows": [ - 4 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4308, - "end": 4315 - } - ], - "page_offsets": [ - { - "start": 122, - "end": 129 - } - ] - }, - { - "position": { - "top": 565, - "bottom": 655, - "left": 606, - "right": 1190 - }, - "text": "bool", - "rows": [ - 4 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4316, - "end": 4320 - } - ], - "page_offsets": [ - { - "start": 130, - "end": 134 - } - ] - }, - { - "position": { - "top": 565, - "bottom": 655, - "left": 1190, - "right": 2335 - }, - "text": "userSnapshot . enabled", - "rows": [ - 4 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4321, - "end": 4343 - } - ], - "page_offsets": [ - { - "start": 135, - "end": 157 - } - ] - } - ], - "doc_offsets": [ - { - "start": 4199, - "end": 4343 - } - ], - "page_offsets": [ - { - "start": 13, - "end": 157 - } - ], - "table_id": 4, - "table_offset": { - "row": 0, - "column": 0 - } - } - ], - [ - { - "page_num": 5, - "position": { - "top": 256, - "bottom": 990, - "left": 209, - "right": 2332 - }, - "num_rows": 7, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 256, - "bottom": 366, - "left": 211, - "right": 808 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4745, - "end": 4751 - } - ], - "page_offsets": [ - { - "start": 15, - "end": 21 - } - ] - }, - { - "position": { - "top": 256, - "bottom": 371, - "left": 808, - "right": 1325 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4752, - "end": 4756 - } - ], - "page_offsets": [ - { - "start": 22, - "end": 26 - } - ] - }, - { - "position": { - "top": 256, - "bottom": 371, - "left": 1325, - "right": 2330 - }, - "text": "Result File Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4757, - "end": 4775 - } - ], - "page_offsets": [ - { - "start": 27, - "end": 45 - } - ] - }, - { - "position": { - "top": 371, - "bottom": 480, - "left": 211, - "right": 808 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4776, - "end": 4778 - } - ], - "page_offsets": [ - { - "start": 46, - "end": 48 - } - ] - }, - { - "position": { - "top": 371, - "bottom": 480, - "left": 808, - "right": 1325 - }, - "text": "uuid", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4779, - "end": 4783 - } - ], - "page_offsets": [ - { - "start": 49, - "end": 53 - } - ] - }, - { - "position": { - "top": 371, - "bottom": 480, - "left": 1325, - "right": 2330 - }, - "text": "Generated by integration5", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4784, - "end": 4809 - } - ], - "page_offsets": [ - { - "start": 54, - "end": 79 - } - ] - }, - { - "position": { - "top": 480, - "bottom": 584, - "left": 211, - "right": 808 - }, - "text": "label", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4810, - "end": 4815 - } - ], - "page_offsets": [ - { - "start": 80, - "end": 85 - } - ] - }, - { - "position": { - "top": 480, - "bottom": 584, - "left": 810, - "right": 1325 - }, - "text": "str", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4816, - "end": 4819 - } - ], - "page_offsets": [ - { - "start": 86, - "end": 89 - } - ] - }, - { - "position": { - "top": 483, - "bottom": 584, - "left": 1325, - "right": 2330 - }, - "text": "Prediction. Label 6,7", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4820, - "end": 4841 - } - ], - "page_offsets": [ - { - "start": 90, - "end": 111 - } - ] - }, - { - "position": { - "top": 584, - "bottom": 687, - "left": 211, - "right": 810 - }, - "text": "predicted_value", - "rows": [ - 3 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4842, - "end": 4857 - } - ], - "page_offsets": [ - { - "start": 112, - "end": 127 - } - ] - }, - { - "position": { - "top": 584, - "bottom": 687, - "left": 810, - "right": 1325 - }, - "text": "str", - "rows": [ - 3 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4858, - "end": 4861 - } - ], - "page_offsets": [ - { - "start": 128, - "end": 131 - } - ] - }, - { - "position": { - "top": 586, - "bottom": 689, - "left": 1325, - "right": 2330 - }, - "text": "Prediction. Text 8,7", - "rows": [ - 3 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4862, - "end": 4882 - } - ], - "page_offsets": [ - { - "start": 132, - "end": 152 - } - ] - }, - { - "position": { - "top": 689, - "bottom": 790, - "left": 211, - "right": 810 - }, - "text": "reviewed_value", - "rows": [ - 4 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4883, - "end": 4897 - } - ], - "page_offsets": [ - { - "start": 153, - "end": 167 - } - ] - }, - { - "position": { - "top": 689, - "bottom": 790, - "left": 810, - "right": 1325 - }, - "text": "str", - "rows": [ - 4 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4898, - "end": 4901 - } - ], - "page_offsets": [ - { - "start": 168, - "end": 171 - } - ] - }, - { - "position": { - "top": 689, - "bottom": 790, - "left": 1325, - "right": 2330 - }, - "text": "Prediction. Text 8,7", - "rows": [ - 4 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4902, - "end": 4922 - } - ], - "page_offsets": [ - { - "start": 172, - "end": 192 - } - ] - }, - { - "position": { - "top": 790, - "bottom": 893, - "left": 211, - "right": 810 - }, - "text": "submission_file_id", - "rows": [ - 5 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4923, - "end": 4941 - } - ], - "page_offsets": [ - { - "start": 193, - "end": 211 - } - ] - }, - { - "position": { - "top": 790, - "bottom": 893, - "left": 810, - "right": 1325 - }, - "text": "int", - "rows": [ - 5 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4942, - "end": 4945 - } - ], - "page_offsets": [ - { - "start": 212, - "end": 215 - } - ] - }, - { - "position": { - "top": 792, - "bottom": 893, - "left": 1325, - "right": 2330 - }, - "text": "Prediction. Document. Id 7", - "rows": [ - 5 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4946, - "end": 4972 - } - ], - "page_offsets": [ - { - "start": 216, - "end": 242 - } - ] - }, - { - "position": { - "top": 893, - "bottom": 990, - "left": 209, - "right": 810 - }, - "text": "model_id", - "rows": [ - 6 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4973, - "end": 4981 - } - ], - "page_offsets": [ - { - "start": 243, - "end": 251 - } - ] - }, - { - "position": { - "top": 893, - "bottom": 990, - "left": 812, - "right": 1325 - }, - "text": "int", - "rows": [ - 6 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4982, - "end": 4985 - } - ], - "page_offsets": [ - { - "start": 252, - "end": 255 - } - ] - }, - { - "position": { - "top": 895, - "bottom": 990, - "left": 1325, - "right": 2332 - }, - "text": "Prediction. Model. Id 7", - "rows": [ - 6 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4986, - "end": 5009 - } - ], - "page_offsets": [ - { - "start": 256, - "end": 279 - } - ] - } - ], - "doc_offsets": [ - { - "start": 4745, - "end": 5009 - } - ], - "page_offsets": [ - { - "start": 15, - "end": 279 - } - ], - "table_id": 5, - "table_offset": { - "row": 0, - "column": 0 - } - } - ] -] \ No newline at end of file diff --git a/tests/data/etloutput/4289/107457/submission_107457_result.json b/tests/data/etloutput/4289/107457/submission_107457_result.json deleted file mode 100644 index 305839b..0000000 --- a/tests/data/etloutput/4289/107457/submission_107457_result.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "file_version": 1, - "submission_id": 107457, - "etl_output": "indico-file:///storage/submission/4289/107457/101156/etl_output.json", - "results": { - "document": { - "results": { - "Standard Document v3": [] - }, - "rejected": { - "Standard Document v3": [] - } - } - } -} \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/etl_output.json b/tests/data/etloutput/4289/107458/101157/etl_output.json deleted file mode 100644 index 83d264d..0000000 --- a/tests/data/etloutput/4289/107458/101157/etl_output.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "pages": [ - { - "image": "indico-file:///storage/submission/4289/107458/101157/original_page_0.png", - "thumbnail": "indico-file:///storage/submission/4289/107458/101157/original_thumbnail_0.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 0, - "end": 1360 - }, - "page_num": 0, - "text": "indico-file:///storage/submission/4289/107458/101157/page_0_text.txt", - "characters": "indico-file:///storage/submission/4289/107458/101157/page_0_chars.json", - "tokens": "indico-file:///storage/submission/4289/107458/101157/page_0_tokens.json", - "blocks": "indico-file:///storage/submission/4289/107458/101157/page_0_blocks.json" - }, - { - "image": "indico-file:///storage/submission/4289/107458/101157/original_page_1.png", - "thumbnail": "indico-file:///storage/submission/4289/107458/101157/original_thumbnail_1.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 1361, - "end": 1845 - }, - "page_num": 1, - "text": "indico-file:///storage/submission/4289/107458/101157/page_1_text.txt", - "characters": "indico-file:///storage/submission/4289/107458/101157/page_1_chars.json", - "tokens": "indico-file:///storage/submission/4289/107458/101157/page_1_tokens.json", - "blocks": "indico-file:///storage/submission/4289/107458/101157/page_1_blocks.json" - }, - { - "image": "indico-file:///storage/submission/4289/107458/101157/original_page_2.png", - "thumbnail": "indico-file:///storage/submission/4289/107458/101157/original_thumbnail_2.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 1846, - "end": 3141 - }, - "page_num": 2, - "text": "indico-file:///storage/submission/4289/107458/101157/page_2_text.txt", - "characters": "indico-file:///storage/submission/4289/107458/101157/page_2_chars.json", - "tokens": "indico-file:///storage/submission/4289/107458/101157/page_2_tokens.json", - "blocks": "indico-file:///storage/submission/4289/107458/101157/page_2_blocks.json" - }, - { - "image": "indico-file:///storage/submission/4289/107458/101157/original_page_3.png", - "thumbnail": "indico-file:///storage/submission/4289/107458/101157/original_thumbnail_3.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 3142, - "end": 4185 - }, - "page_num": 3, - "text": "indico-file:///storage/submission/4289/107458/101157/page_3_text.txt", - "characters": "indico-file:///storage/submission/4289/107458/101157/page_3_chars.json", - "tokens": "indico-file:///storage/submission/4289/107458/101157/page_3_tokens.json", - "blocks": "indico-file:///storage/submission/4289/107458/101157/page_3_blocks.json" - }, - { - "image": "indico-file:///storage/submission/4289/107458/101157/original_page_4.png", - "thumbnail": "indico-file:///storage/submission/4289/107458/101157/original_thumbnail_4.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 4186, - "end": 4729 - }, - "page_num": 4, - "text": "indico-file:///storage/submission/4289/107458/101157/page_4_text.txt", - "characters": "indico-file:///storage/submission/4289/107458/101157/page_4_chars.json", - "tokens": "indico-file:///storage/submission/4289/107458/101157/page_4_tokens.json", - "blocks": "indico-file:///storage/submission/4289/107458/101157/page_4_blocks.json" - }, - { - "image": "indico-file:///storage/submission/4289/107458/101157/original_page_5.png", - "thumbnail": "indico-file:///storage/submission/4289/107458/101157/original_thumbnail_5.png", - "size": { - "width": 2550, - "height": 3300 - }, - "dpi": { - "dpix": 300, - "dpiy": 300 - }, - "doc_offset": { - "start": 4730, - "end": 6494 - }, - "page_num": 5, - "text": "indico-file:///storage/submission/4289/107458/101157/page_5_text.txt", - "characters": "indico-file:///storage/submission/4289/107458/101157/page_5_chars.json", - "tokens": "indico-file:///storage/submission/4289/107458/101157/page_5_tokens.json", - "blocks": "indico-file:///storage/submission/4289/107458/101157/page_5_blocks.json" - } - ], - "num_pages": 6, - "full_text": "indico-file:///storage/submission/4289/107458/101157/full_text.txt", - "email_metadata": {} -} \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_0_text.txt b/tests/data/etloutput/4289/107458/101157/page_0_text.txt deleted file mode 100644 index cbb979a..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_0_text.txt +++ /dev/null @@ -1,40 +0,0 @@ -Indico Metrics Integration Data Model -This document covers the intermediate data model used to pull Data Intake metrics -from Indico to be aggregated and displayed within Metrics. -Contents -This document assumes that a single integration process is run on a schedule and -uses 4 discrete GraphQL queries to download low-level metrics using the Indico -GraphQL API. Scheduling recommendations are provided below. -These metrics are lightly processed and denormalized to match the intermediate -data model defined below. The integration will produce data in a consumable -format, such as SQL UPSERT -queries, an importable CSV file, or an importable -JSON file. -1 Entities -1.1 Workflow -1.2 Model -1.3 Submission -1.4 Submission File -1.5 Reviewer -1.6 Prediction -Once imported, Metrics can filter and aggregate the intermediate data as described below to display higher- -level data points to fulfill the reporting requirements defined elsewhere. -1 Entities -1.1 Workflow -Column Type GraphQL Source -id int workflow.id -name str workflow. name -Example GraphQL Query -query Workflows { -workflows { -workflows { -id -name -} -} -} -Scheduled Process Logic -This is a lightweight query. All workflows will be pulled every time the integration is run. -Data Reconciliation -The output will include the primary key id needed to update existing rows and insert new rows into the -Metrics database. \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_0_tokens.json b/tests/data/etloutput/4289/107458/101157/page_0_tokens.json deleted file mode 100644 index 9d0fe65..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_0_tokens.json +++ /dev/null @@ -1,2970 +0,0 @@ -[ - { - "doc_offset": { - "start": 0, - "end": 6 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 164, - "bottom": 239, - "left": 406, - "right": 684 - } - }, - { - "doc_offset": { - "start": 7, - "end": 14 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 164, - "bottom": 247, - "left": 717, - "right": 1051 - } - }, - { - "doc_offset": { - "start": 15, - "end": 26 - }, - "page_num": 0, - "text": "Integration", - "position": { - "top": 164, - "bottom": 252, - "left": 1084, - "right": 1587 - } - }, - { - "doc_offset": { - "start": 27, - "end": 31 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 164, - "bottom": 249, - "left": 1637, - "right": 1839 - } - }, - { - "doc_offset": { - "start": 32, - "end": 37 - }, - "page_num": 0, - "text": "Model", - "position": { - "top": 164, - "bottom": 242, - "left": 1872, - "right": 2146 - } - }, - { - "doc_offset": { - "start": 38, - "end": 42 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 385, - "bottom": 429, - "left": 213, - "right": 293 - } - }, - { - "doc_offset": { - "start": 43, - "end": 51 - }, - "page_num": 0, - "text": "document", - "position": { - "top": 385, - "bottom": 429, - "left": 303, - "right": 502 - } - }, - { - "doc_offset": { - "start": 52, - "end": 58 - }, - "page_num": 0, - "text": "covers", - "position": { - "top": 383, - "bottom": 431, - "left": 512, - "right": 646 - } - }, - { - "doc_offset": { - "start": 59, - "end": 62 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 383, - "bottom": 432, - "left": 657, - "right": 722 - } - }, - { - "doc_offset": { - "start": 63, - "end": 75 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 383, - "bottom": 432, - "left": 732, - "right": 977 - } - }, - { - "doc_offset": { - "start": 76, - "end": 80 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 383, - "bottom": 432, - "left": 991, - "right": 1077 - } - }, - { - "doc_offset": { - "start": 81, - "end": 86 - }, - "page_num": 0, - "text": "model", - "position": { - "top": 383, - "bottom": 432, - "left": 1087, - "right": 1214 - } - }, - { - "doc_offset": { - "start": 87, - "end": 91 - }, - "page_num": 0, - "text": "used", - "position": { - "top": 383, - "bottom": 432, - "left": 1224, - "right": 1320 - } - }, - { - "doc_offset": { - "start": 92, - "end": 94 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 383, - "bottom": 432, - "left": 1333, - "right": 1373 - } - }, - { - "doc_offset": { - "start": 95, - "end": 99 - }, - "page_num": 0, - "text": "pull", - "position": { - "top": 383, - "bottom": 432, - "left": 1386, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 100, - "end": 104 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 383, - "bottom": 432, - "left": 1471, - "right": 1564 - } - }, - { - "doc_offset": { - "start": 105, - "end": 111 - }, - "page_num": 0, - "text": "Intake", - "position": { - "top": 385, - "bottom": 431, - "left": 1574, - "right": 1694 - } - }, - { - "doc_offset": { - "start": 112, - "end": 119 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 385, - "bottom": 429, - "left": 1706, - "right": 1855 - } - }, - { - "doc_offset": { - "start": 120, - "end": 124 - }, - "page_num": 0, - "text": "from", - "position": { - "top": 446, - "bottom": 492, - "left": 212, - "right": 282 - } - }, - { - "doc_offset": { - "start": 125, - "end": 131 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 446, - "bottom": 494, - "left": 308, - "right": 429 - } - }, - { - "doc_offset": { - "start": 132, - "end": 134 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 446, - "bottom": 495, - "left": 441, - "right": 481 - } - }, - { - "doc_offset": { - "start": 135, - "end": 137 - }, - "page_num": 0, - "text": "be", - "position": { - "top": 446, - "bottom": 495, - "left": 491, - "right": 544 - } - }, - { - "doc_offset": { - "start": 138, - "end": 148 - }, - "page_num": 0, - "text": "aggregated", - "position": { - "top": 446, - "bottom": 495, - "left": 557, - "right": 777 - } - }, - { - "doc_offset": { - "start": 149, - "end": 152 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 446, - "bottom": 495, - "left": 793, - "right": 865 - } - }, - { - "doc_offset": { - "start": 153, - "end": 162 - }, - "page_num": 0, - "text": "displayed", - "position": { - "top": 446, - "bottom": 495, - "left": 879, - "right": 1064 - } - }, - { - "doc_offset": { - "start": 163, - "end": 169 - }, - "page_num": 0, - "text": "within", - "position": { - "top": 445, - "bottom": 494, - "left": 1077, - "right": 1190 - } - }, - { - "doc_offset": { - "start": 170, - "end": 178 - }, - "page_num": 0, - "text": "Metrics.", - "position": { - "top": 445, - "bottom": 491, - "left": 1203, - "right": 1365 - } - }, - { - "doc_offset": { - "start": 179, - "end": 187 - }, - "page_num": 0, - "text": "Contents", - "position": { - "top": 429, - "bottom": 476, - "left": 2065, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 188, - "end": 192 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 552, - "bottom": 594, - "left": 212, - "right": 290 - } - }, - { - "doc_offset": { - "start": 193, - "end": 201 - }, - "page_num": 0, - "text": "document", - "position": { - "top": 552, - "bottom": 595, - "left": 305, - "right": 510 - } - }, - { - "doc_offset": { - "start": 202, - "end": 209 - }, - "page_num": 0, - "text": "assumes", - "position": { - "top": 551, - "bottom": 598, - "left": 520, - "right": 694 - } - }, - { - "doc_offset": { - "start": 210, - "end": 214 - }, - "page_num": 0, - "text": "that", - "position": { - "top": 551, - "bottom": 600, - "left": 704, - "right": 789 - } - }, - { - "doc_offset": { - "start": 215, - "end": 216 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 551, - "bottom": 600, - "left": 799, - "right": 823 - } - }, - { - "doc_offset": { - "start": 217, - "end": 223 - }, - "page_num": 0, - "text": "single", - "position": { - "top": 551, - "bottom": 600, - "left": 836, - "right": 949 - } - }, - { - "doc_offset": { - "start": 224, - "end": 235 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 551, - "bottom": 600, - "left": 962, - "right": 1171 - } - }, - { - "doc_offset": { - "start": 236, - "end": 243 - }, - "page_num": 0, - "text": "process", - "position": { - "top": 551, - "bottom": 600, - "left": 1187, - "right": 1346 - } - }, - { - "doc_offset": { - "start": 244, - "end": 246 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 551, - "bottom": 600, - "left": 1356, - "right": 1392 - } - }, - { - "doc_offset": { - "start": 247, - "end": 250 - }, - "page_num": 0, - "text": "run", - "position": { - "top": 551, - "bottom": 598, - "left": 1402, - "right": 1466 - } - }, - { - "doc_offset": { - "start": 251, - "end": 253 - }, - "page_num": 0, - "text": "on", - "position": { - "top": 551, - "bottom": 598, - "left": 1482, - "right": 1531 - } - }, - { - "doc_offset": { - "start": 254, - "end": 255 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 551, - "bottom": 598, - "left": 1547, - "right": 1571 - } - }, - { - "doc_offset": { - "start": 256, - "end": 264 - }, - "page_num": 0, - "text": "schedule", - "position": { - "top": 551, - "bottom": 597, - "left": 1587, - "right": 1762 - } - }, - { - "doc_offset": { - "start": 265, - "end": 268 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 551, - "bottom": 595, - "left": 1777, - "right": 1848 - } - }, - { - "doc_offset": { - "start": 269, - "end": 273 - }, - "page_num": 0, - "text": "uses", - "position": { - "top": 615, - "bottom": 658, - "left": 210, - "right": 303 - } - }, - { - "doc_offset": { - "start": 274, - "end": 275 - }, - "page_num": 0, - "text": "4", - "position": { - "top": 614, - "bottom": 660, - "left": 320, - "right": 345 - } - }, - { - "doc_offset": { - "start": 276, - "end": 284 - }, - "page_num": 0, - "text": "discrete", - "position": { - "top": 614, - "bottom": 660, - "left": 365, - "right": 520 - } - }, - { - "doc_offset": { - "start": 285, - "end": 292 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 613, - "bottom": 660, - "left": 538, - "right": 719 - } - }, - { - "doc_offset": { - "start": 293, - "end": 300 - }, - "page_num": 0, - "text": "queries", - "position": { - "top": 611, - "bottom": 661, - "left": 739, - "right": 883 - } - }, - { - "doc_offset": { - "start": 301, - "end": 303 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 611, - "bottom": 661, - "left": 899, - "right": 939 - } - }, - { - "doc_offset": { - "start": 304, - "end": 312 - }, - "page_num": 0, - "text": "download", - "position": { - "top": 611, - "bottom": 661, - "left": 959, - "right": 1151 - } - }, - { - "doc_offset": { - "start": 313, - "end": 322 - }, - "page_num": 0, - "text": "low-level", - "position": { - "top": 611, - "bottom": 661, - "left": 1168, - "right": 1350 - } - }, - { - "doc_offset": { - "start": 323, - "end": 330 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 611, - "bottom": 661, - "left": 1362, - "right": 1509 - } - }, - { - "doc_offset": { - "start": 331, - "end": 336 - }, - "page_num": 0, - "text": "using", - "position": { - "top": 613, - "bottom": 660, - "left": 1527, - "right": 1633 - } - }, - { - "doc_offset": { - "start": 337, - "end": 340 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 613, - "bottom": 660, - "left": 1650, - "right": 1714 - } - }, - { - "doc_offset": { - "start": 341, - "end": 347 - }, - "page_num": 0, - "text": "Indico", - "position": { - "top": 613, - "bottom": 660, - "left": 1731, - "right": 1850 - } - }, - { - "doc_offset": { - "start": 348, - "end": 355 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 673, - "bottom": 720, - "left": 212, - "right": 386 - } - }, - { - "doc_offset": { - "start": 356, - "end": 360 - }, - "page_num": 0, - "text": "API.", - "position": { - "top": 673, - "bottom": 721, - "left": 399, - "right": 487 - } - }, - { - "doc_offset": { - "start": 361, - "end": 371 - }, - "page_num": 0, - "text": "Scheduling", - "position": { - "top": 673, - "bottom": 723, - "left": 495, - "right": 710 - } - }, - { - "doc_offset": { - "start": 372, - "end": 387 - }, - "page_num": 0, - "text": "recommendations", - "position": { - "top": 673, - "bottom": 723, - "left": 720, - "right": 1078 - } - }, - { - "doc_offset": { - "start": 388, - "end": 391 - }, - "page_num": 0, - "text": "are", - "position": { - "top": 674, - "bottom": 723, - "left": 1090, - "right": 1150 - } - }, - { - "doc_offset": { - "start": 392, - "end": 400 - }, - "page_num": 0, - "text": "provided", - "position": { - "top": 674, - "bottom": 723, - "left": 1160, - "right": 1332 - } - }, - { - "doc_offset": { - "start": 401, - "end": 407 - }, - "page_num": 0, - "text": "below.", - "position": { - "top": 674, - "bottom": 721, - "left": 1342, - "right": 1474 - } - }, - { - "doc_offset": { - "start": 408, - "end": 413 - }, - "page_num": 0, - "text": "These", - "position": { - "top": 779, - "bottom": 825, - "left": 214, - "right": 329 - } - }, - { - "doc_offset": { - "start": 414, - "end": 421 - }, - "page_num": 0, - "text": "metrics", - "position": { - "top": 779, - "bottom": 825, - "left": 345, - "right": 494 - } - }, - { - "doc_offset": { - "start": 422, - "end": 425 - }, - "page_num": 0, - "text": "are", - "position": { - "top": 779, - "bottom": 826, - "left": 512, - "right": 571 - } - }, - { - "doc_offset": { - "start": 426, - "end": 433 - }, - "page_num": 0, - "text": "lightly", - "position": { - "top": 779, - "bottom": 827, - "left": 587, - "right": 709 - } - }, - { - "doc_offset": { - "start": 434, - "end": 443 - }, - "page_num": 0, - "text": "processed", - "position": { - "top": 779, - "bottom": 827, - "left": 724, - "right": 929 - } - }, - { - "doc_offset": { - "start": 444, - "end": 447 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 779, - "bottom": 827, - "left": 951, - "right": 1022 - } - }, - { - "doc_offset": { - "start": 448, - "end": 460 - }, - "page_num": 0, - "text": "denormalized", - "position": { - "top": 777, - "bottom": 827, - "left": 1041, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 461, - "end": 463 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 777, - "bottom": 826, - "left": 1325, - "right": 1365 - } - }, - { - "doc_offset": { - "start": 464, - "end": 469 - }, - "page_num": 0, - "text": "match", - "position": { - "top": 777, - "bottom": 826, - "left": 1383, - "right": 1505 - } - }, - { - "doc_offset": { - "start": 470, - "end": 473 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 779, - "bottom": 825, - "left": 1527, - "right": 1590 - } - }, - { - "doc_offset": { - "start": 474, - "end": 486 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 779, - "bottom": 823, - "left": 1604, - "right": 1853 - } - }, - { - "doc_offset": { - "start": 487, - "end": 491 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 840, - "bottom": 885, - "left": 209, - "right": 296 - } - }, - { - "doc_offset": { - "start": 492, - "end": 497 - }, - "page_num": 0, - "text": "model", - "position": { - "top": 840, - "bottom": 886, - "left": 319, - "right": 455 - } - }, - { - "doc_offset": { - "start": 498, - "end": 505 - }, - "page_num": 0, - "text": "defined", - "position": { - "top": 839, - "bottom": 888, - "left": 465, - "right": 611 - } - }, - { - "doc_offset": { - "start": 506, - "end": 512 - }, - "page_num": 0, - "text": "below.", - "position": { - "top": 839, - "bottom": 888, - "left": 637, - "right": 776 - } - }, - { - "doc_offset": { - "start": 513, - "end": 516 - }, - "page_num": 0, - "text": "The", - "position": { - "top": 839, - "bottom": 889, - "left": 793, - "right": 865 - } - }, - { - "doc_offset": { - "start": 517, - "end": 528 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 839, - "bottom": 889, - "left": 885, - "right": 1094 - } - }, - { - "doc_offset": { - "start": 529, - "end": 533 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 839, - "bottom": 889, - "left": 1120, - "right": 1196 - } - }, - { - "doc_offset": { - "start": 534, - "end": 541 - }, - "page_num": 0, - "text": "produce", - "position": { - "top": 839, - "bottom": 889, - "left": 1206, - "right": 1370 - } - }, - { - "doc_offset": { - "start": 542, - "end": 546 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 839, - "bottom": 889, - "left": 1393, - "right": 1485 - } - }, - { - "doc_offset": { - "start": 547, - "end": 549 - }, - "page_num": 0, - "text": "in", - "position": { - "top": 839, - "bottom": 888, - "left": 1502, - "right": 1540 - } - }, - { - "doc_offset": { - "start": 550, - "end": 551 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 839, - "bottom": 888, - "left": 1565, - "right": 1590 - } - }, - { - "doc_offset": { - "start": 552, - "end": 562 - }, - "page_num": 0, - "text": "consumable", - "position": { - "top": 840, - "bottom": 886, - "left": 1614, - "right": 1855 - } - }, - { - "doc_offset": { - "start": 563, - "end": 570 - }, - "page_num": 0, - "text": "format,", - "position": { - "top": 902, - "bottom": 948, - "left": 210, - "right": 356 - } - }, - { - "doc_offset": { - "start": 571, - "end": 575 - }, - "page_num": 0, - "text": "such", - "position": { - "top": 902, - "bottom": 948, - "left": 369, - "right": 458 - } - }, - { - "doc_offset": { - "start": 576, - "end": 578 - }, - "page_num": 0, - "text": "as", - "position": { - "top": 902, - "bottom": 948, - "left": 485, - "right": 530 - } - }, - { - "doc_offset": { - "start": 579, - "end": 582 - }, - "page_num": 0, - "text": "SQL", - "position": { - "top": 902, - "bottom": 948, - "left": 551, - "right": 634 - } - }, - { - "doc_offset": { - "start": 583, - "end": 589 - }, - "page_num": 0, - "text": "UPSERT", - "position": { - "top": 903, - "bottom": 946, - "left": 670, - "right": 809 - } - }, - { - "doc_offset": { - "start": 590, - "end": 598 - }, - "page_num": 0, - "text": "queries,", - "position": { - "top": 902, - "bottom": 952, - "left": 840, - "right": 1007 - } - }, - { - "doc_offset": { - "start": 599, - "end": 601 - }, - "page_num": 0, - "text": "an", - "position": { - "top": 900, - "bottom": 952, - "left": 1018, - "right": 1062 - } - }, - { - "doc_offset": { - "start": 602, - "end": 612 - }, - "page_num": 0, - "text": "importable", - "position": { - "top": 900, - "bottom": 952, - "left": 1080, - "right": 1297 - } - }, - { - "doc_offset": { - "start": 613, - "end": 616 - }, - "page_num": 0, - "text": "CSV", - "position": { - "top": 900, - "bottom": 951, - "left": 1317, - "right": 1402 - } - }, - { - "doc_offset": { - "start": 617, - "end": 622 - }, - "page_num": 0, - "text": "file,", - "position": { - "top": 900, - "bottom": 951, - "left": 1422, - "right": 1501 - } - }, - { - "doc_offset": { - "start": 623, - "end": 625 - }, - "page_num": 0, - "text": "or", - "position": { - "top": 900, - "bottom": 951, - "left": 1511, - "right": 1561 - } - }, - { - "doc_offset": { - "start": 626, - "end": 628 - }, - "page_num": 0, - "text": "an", - "position": { - "top": 900, - "bottom": 951, - "left": 1574, - "right": 1620 - } - }, - { - "doc_offset": { - "start": 629, - "end": 639 - }, - "page_num": 0, - "text": "importable", - "position": { - "top": 902, - "bottom": 949, - "left": 1640, - "right": 1853 - } - }, - { - "doc_offset": { - "start": 640, - "end": 644 - }, - "page_num": 0, - "text": "JSON", - "position": { - "top": 962, - "bottom": 1006, - "left": 212, - "right": 316 - } - }, - { - "doc_offset": { - "start": 645, - "end": 650 - }, - "page_num": 0, - "text": "file.", - "position": { - "top": 965, - "bottom": 1006, - "left": 339, - "right": 408 - } - }, - { - "doc_offset": { - "start": 651, - "end": 652 - }, - "page_num": 0, - "text": "1", - "position": { - "top": 564, - "bottom": 600, - "left": 1979, - "right": 1998 - } - }, - { - "doc_offset": { - "start": 653, - "end": 661 - }, - "page_num": 0, - "text": "Entities", - "position": { - "top": 562, - "bottom": 600, - "left": 2018, - "right": 2168 - } - }, - { - "doc_offset": { - "start": 662, - "end": 665 - }, - "page_num": 0, - "text": "1.1", - "position": { - "top": 615, - "bottom": 648, - "left": 2007, - "right": 2050 - } - }, - { - "doc_offset": { - "start": 666, - "end": 674 - }, - "page_num": 0, - "text": "Workflow", - "position": { - "top": 614, - "bottom": 648, - "left": 2067, - "right": 2220 - } - }, - { - "doc_offset": { - "start": 675, - "end": 678 - }, - "page_num": 0, - "text": "1.2", - "position": { - "top": 664, - "bottom": 697, - "left": 2007, - "right": 2052 - } - }, - { - "doc_offset": { - "start": 679, - "end": 684 - }, - "page_num": 0, - "text": "Model", - "position": { - "top": 664, - "bottom": 696, - "left": 2070, - "right": 2177 - } - }, - { - "doc_offset": { - "start": 685, - "end": 688 - }, - "page_num": 0, - "text": "1.3", - "position": { - "top": 711, - "bottom": 749, - "left": 2007, - "right": 2052 - } - }, - { - "doc_offset": { - "start": 689, - "end": 699 - }, - "page_num": 0, - "text": "Submission", - "position": { - "top": 711, - "bottom": 747, - "left": 2072, - "right": 2259 - } - }, - { - "doc_offset": { - "start": 700, - "end": 703 - }, - "page_num": 0, - "text": "1.4", - "position": { - "top": 759, - "bottom": 797, - "left": 2005, - "right": 2051 - } - }, - { - "doc_offset": { - "start": 704, - "end": 714 - }, - "page_num": 0, - "text": "Submission", - "position": { - "top": 759, - "bottom": 797, - "left": 2071, - "right": 2260 - } - }, - { - "doc_offset": { - "start": 715, - "end": 719 - }, - "page_num": 0, - "text": "File", - "position": { - "top": 757, - "bottom": 797, - "left": 2274, - "right": 2335 - } - }, - { - "doc_offset": { - "start": 720, - "end": 723 - }, - "page_num": 0, - "text": "1.5", - "position": { - "top": 810, - "bottom": 846, - "left": 2005, - "right": 2048 - } - }, - { - "doc_offset": { - "start": 724, - "end": 732 - }, - "page_num": 0, - "text": "Reviewer", - "position": { - "top": 809, - "bottom": 846, - "left": 2070, - "right": 2226 - } - }, - { - "doc_offset": { - "start": 733, - "end": 736 - }, - "page_num": 0, - "text": "1.6", - "position": { - "top": 857, - "bottom": 896, - "left": 2007, - "right": 2050 - } - }, - { - "doc_offset": { - "start": 737, - "end": 747 - }, - "page_num": 0, - "text": "Prediction", - "position": { - "top": 856, - "bottom": 895, - "left": 2071, - "right": 2239 - } - }, - { - "doc_offset": { - "start": 748, - "end": 752 - }, - "page_num": 0, - "text": "Once", - "position": { - "top": 1067, - "bottom": 1117, - "left": 210, - "right": 310 - } - }, - { - "doc_offset": { - "start": 753, - "end": 762 - }, - "page_num": 0, - "text": "imported,", - "position": { - "top": 1067, - "bottom": 1117, - "left": 320, - "right": 515 - } - }, - { - "doc_offset": { - "start": 763, - "end": 770 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 1067, - "bottom": 1117, - "left": 525, - "right": 676 - } - }, - { - "doc_offset": { - "start": 771, - "end": 774 - }, - "page_num": 0, - "text": "can", - "position": { - "top": 1067, - "bottom": 1117, - "left": 687, - "right": 756 - } - }, - { - "doc_offset": { - "start": 775, - "end": 781 - }, - "page_num": 0, - "text": "filter", - "position": { - "top": 1067, - "bottom": 1117, - "left": 769, - "right": 858 - } - }, - { - "doc_offset": { - "start": 782, - "end": 785 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 1067, - "bottom": 1117, - "left": 868, - "right": 941 - } - }, - { - "doc_offset": { - "start": 786, - "end": 795 - }, - "page_num": 0, - "text": "aggregate", - "position": { - "top": 1067, - "bottom": 1117, - "left": 958, - "right": 1151 - } - }, - { - "doc_offset": { - "start": 796, - "end": 799 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1161, - "right": 1227 - } - }, - { - "doc_offset": { - "start": 800, - "end": 812 - }, - "page_num": 0, - "text": "intermediate", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1237, - "right": 1484 - } - }, - { - "doc_offset": { - "start": 813, - "end": 817 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1498, - "right": 1587 - } - }, - { - "doc_offset": { - "start": 818, - "end": 820 - }, - "page_num": 0, - "text": "as", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1597, - "right": 1646 - } - }, - { - "doc_offset": { - "start": 821, - "end": 830 - }, - "page_num": 0, - "text": "described", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1657, - "right": 1850 - } - }, - { - "doc_offset": { - "start": 831, - "end": 836 - }, - "page_num": 0, - "text": "below", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1860, - "right": 1972 - } - }, - { - "doc_offset": { - "start": 837, - "end": 839 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 1067, - "bottom": 1117, - "left": 1992, - "right": 2035 - } - }, - { - "doc_offset": { - "start": 840, - "end": 847 - }, - "page_num": 0, - "text": "display", - "position": { - "top": 1067, - "bottom": 1117, - "left": 2045, - "right": 2183 - } - }, - { - "doc_offset": { - "start": 848, - "end": 855 - }, - "page_num": 0, - "text": "higher-", - "position": { - "top": 1067, - "bottom": 1117, - "left": 2194, - "right": 2333 - } - }, - { - "doc_offset": { - "start": 856, - "end": 861 - }, - "page_num": 0, - "text": "level", - "position": { - "top": 1130, - "bottom": 1177, - "left": 206, - "right": 300 - } - }, - { - "doc_offset": { - "start": 862, - "end": 866 - }, - "page_num": 0, - "text": "data", - "position": { - "top": 1130, - "bottom": 1178, - "left": 310, - "right": 398 - } - }, - { - "doc_offset": { - "start": 867, - "end": 873 - }, - "page_num": 0, - "text": "points", - "position": { - "top": 1130, - "bottom": 1178, - "left": 406, - "right": 530 - } - }, - { - "doc_offset": { - "start": 874, - "end": 876 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 1128, - "bottom": 1178, - "left": 540, - "right": 581 - } - }, - { - "doc_offset": { - "start": 877, - "end": 884 - }, - "page_num": 0, - "text": "fulfill", - "position": { - "top": 1128, - "bottom": 1180, - "left": 591, - "right": 681 - } - }, - { - "doc_offset": { - "start": 885, - "end": 888 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 1128, - "bottom": 1180, - "left": 691, - "right": 756 - } - }, - { - "doc_offset": { - "start": 889, - "end": 898 - }, - "page_num": 0, - "text": "reporting", - "position": { - "top": 1128, - "bottom": 1180, - "left": 766, - "right": 944 - } - }, - { - "doc_offset": { - "start": 899, - "end": 911 - }, - "page_num": 0, - "text": "requirements", - "position": { - "top": 1128, - "bottom": 1178, - "left": 954, - "right": 1213 - } - }, - { - "doc_offset": { - "start": 912, - "end": 919 - }, - "page_num": 0, - "text": "defined", - "position": { - "top": 1128, - "bottom": 1177, - "left": 1221, - "right": 1368 - } - }, - { - "doc_offset": { - "start": 920, - "end": 930 - }, - "page_num": 0, - "text": "elsewhere.", - "position": { - "top": 1128, - "bottom": 1175, - "left": 1381, - "right": 1591 - } - }, - { - "doc_offset": { - "start": 931, - "end": 932 - }, - "page_num": 0, - "text": "1", - "position": { - "top": 1317, - "bottom": 1379, - "left": 220, - "right": 252 - } - }, - { - "doc_offset": { - "start": 933, - "end": 941 - }, - "page_num": 0, - "text": "Entities", - "position": { - "top": 1317, - "bottom": 1376, - "left": 310, - "right": 571 - } - }, - { - "doc_offset": { - "start": 942, - "end": 945 - }, - "page_num": 0, - "text": "1.1", - "position": { - "top": 1526, - "bottom": 1584, - "left": 220, - "right": 308 - } - }, - { - "doc_offset": { - "start": 946, - "end": 954 - }, - "page_num": 0, - "text": "Workflow", - "position": { - "top": 1528, - "bottom": 1584, - "left": 363, - "right": 643 - } - }, - { - "doc_offset": { - "start": 955, - "end": 961 - }, - "page_num": 0, - "text": "Column", - "position": { - "top": 1691, - "bottom": 1731, - "left": 262, - "right": 416 - } - }, - { - "doc_offset": { - "start": 962, - "end": 966 - }, - "page_num": 0, - "text": "Type", - "position": { - "top": 1690, - "bottom": 1735, - "left": 875, - "right": 966 - } - }, - { - "doc_offset": { - "start": 967, - "end": 974 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 1688, - "bottom": 1734, - "left": 1328, - "right": 1509 - } - }, - { - "doc_offset": { - "start": 975, - "end": 981 - }, - "page_num": 0, - "text": "Source", - "position": { - "top": 1688, - "bottom": 1734, - "left": 1525, - "right": 1670 - } - }, - { - "doc_offset": { - "start": 982, - "end": 984 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 1788, - "bottom": 1824, - "left": 257, - "right": 287 - } - }, - { - "doc_offset": { - "start": 985, - "end": 988 - }, - "page_num": 0, - "text": "int", - "position": { - "top": 1786, - "bottom": 1833, - "left": 868, - "right": 925 - } - }, - { - "doc_offset": { - "start": 989, - "end": 1000 - }, - "page_num": 0, - "text": "workflow.id", - "position": { - "top": 1790, - "bottom": 1829, - "left": 1339, - "right": 1584 - } - }, - { - "doc_offset": { - "start": 1001, - "end": 1005 - }, - "page_num": 0, - "text": "name", - "position": { - "top": 1877, - "bottom": 1927, - "left": 256, - "right": 366 - } - }, - { - "doc_offset": { - "start": 1006, - "end": 1009 - }, - "page_num": 0, - "text": "str", - "position": { - "top": 1876, - "bottom": 1927, - "left": 871, - "right": 922 - } - }, - { - "doc_offset": { - "start": 1010, - "end": 1019 - }, - "page_num": 0, - "text": "workflow.", - "position": { - "top": 1884, - "bottom": 1920, - "left": 1339, - "right": 1531 - } - }, - { - "doc_offset": { - "start": 1020, - "end": 1024 - }, - "page_num": 0, - "text": "name", - "position": { - "top": 1884, - "bottom": 1920, - "left": 1538, - "right": 1628 - } - }, - { - "doc_offset": { - "start": 1025, - "end": 1032 - }, - "page_num": 0, - "text": "Example", - "position": { - "top": 2010, - "bottom": 2059, - "left": 210, - "right": 389 - } - }, - { - "doc_offset": { - "start": 1033, - "end": 1040 - }, - "page_num": 0, - "text": "GraphQL", - "position": { - "top": 2009, - "bottom": 2059, - "left": 403, - "right": 590 - } - }, - { - "doc_offset": { - "start": 1041, - "end": 1046 - }, - "page_num": 0, - "text": "Query", - "position": { - "top": 2008, - "bottom": 2062, - "left": 604, - "right": 730 - } - }, - { - "doc_offset": { - "start": 1047, - "end": 1052 - }, - "page_num": 0, - "text": "query", - "position": { - "top": 2128, - "bottom": 2177, - "left": 240, - "right": 373 - } - }, - { - "doc_offset": { - "start": 1053, - "end": 1062 - }, - "page_num": 0, - "text": "Workflows", - "position": { - "top": 2125, - "bottom": 2177, - "left": 395, - "right": 643 - } - }, - { - "doc_offset": { - "start": 1063, - "end": 1064 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2124, - "bottom": 2179, - "left": 674, - "right": 701 - } - }, - { - "doc_offset": { - "start": 1065, - "end": 1074 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2189, - "bottom": 2234, - "left": 325, - "right": 570 - } - }, - { - "doc_offset": { - "start": 1075, - "end": 1076 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2187, - "bottom": 2235, - "left": 603, - "right": 624 - } - }, - { - "doc_offset": { - "start": 1077, - "end": 1086 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2251, - "bottom": 2300, - "left": 435, - "right": 680 - } - }, - { - "doc_offset": { - "start": 1087, - "end": 1088 - }, - "page_num": 0, - "text": "{", - "position": { - "top": 2250, - "bottom": 2300, - "left": 707, - "right": 734 - } - }, - { - "doc_offset": { - "start": 1089, - "end": 1091 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 2311, - "bottom": 2354, - "left": 547, - "right": 593 - } - }, - { - "doc_offset": { - "start": 1092, - "end": 1096 - }, - "page_num": 0, - "text": "name", - "position": { - "top": 2383, - "bottom": 2419, - "left": 542, - "right": 644 - } - }, - { - "doc_offset": { - "start": 1097, - "end": 1098 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2437, - "bottom": 2485, - "left": 438, - "right": 455 - } - }, - { - "doc_offset": { - "start": 1099, - "end": 1100 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2500, - "bottom": 2548, - "left": 328, - "right": 346 - } - }, - { - "doc_offset": { - "start": 1101, - "end": 1102 - }, - "page_num": 0, - "text": "}", - "position": { - "top": 2563, - "bottom": 2609, - "left": 222, - "right": 246 - } - }, - { - "doc_offset": { - "start": 1103, - "end": 1112 - }, - "page_num": 0, - "text": "Scheduled", - "position": { - "top": 2684, - "bottom": 2725, - "left": 212, - "right": 426 - } - }, - { - "doc_offset": { - "start": 1113, - "end": 1120 - }, - "page_num": 0, - "text": "Process", - "position": { - "top": 2682, - "bottom": 2728, - "left": 442, - "right": 614 - } - }, - { - "doc_offset": { - "start": 1121, - "end": 1126 - }, - "page_num": 0, - "text": "Logic", - "position": { - "top": 2681, - "bottom": 2731, - "left": 624, - "right": 739 - } - }, - { - "doc_offset": { - "start": 1127, - "end": 1131 - }, - "page_num": 0, - "text": "This", - "position": { - "top": 2785, - "bottom": 2833, - "left": 213, - "right": 287 - } - }, - { - "doc_offset": { - "start": 1132, - "end": 1134 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 2784, - "bottom": 2834, - "left": 297, - "right": 338 - } - }, - { - "doc_offset": { - "start": 1135, - "end": 1136 - }, - "page_num": 0, - "text": "a", - "position": { - "top": 2784, - "bottom": 2834, - "left": 348, - "right": 366 - } - }, - { - "doc_offset": { - "start": 1137, - "end": 1148 - }, - "page_num": 0, - "text": "lightweight", - "position": { - "top": 2784, - "bottom": 2834, - "left": 378, - "right": 594 - } - }, - { - "doc_offset": { - "start": 1149, - "end": 1155 - }, - "page_num": 0, - "text": "query.", - "position": { - "top": 2784, - "bottom": 2834, - "left": 605, - "right": 727 - } - }, - { - "doc_offset": { - "start": 1156, - "end": 1159 - }, - "page_num": 0, - "text": "All", - "position": { - "top": 2784, - "bottom": 2834, - "left": 737, - "right": 786 - } - }, - { - "doc_offset": { - "start": 1160, - "end": 1169 - }, - "page_num": 0, - "text": "workflows", - "position": { - "top": 2784, - "bottom": 2835, - "left": 796, - "right": 998 - } - }, - { - "doc_offset": { - "start": 1170, - "end": 1174 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1008, - "right": 1070 - } - }, - { - "doc_offset": { - "start": 1175, - "end": 1177 - }, - "page_num": 0, - "text": "be", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1081, - "right": 1133 - } - }, - { - "doc_offset": { - "start": 1178, - "end": 1184 - }, - "page_num": 0, - "text": "pulled", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1143, - "right": 1264 - } - }, - { - "doc_offset": { - "start": 1185, - "end": 1190 - }, - "page_num": 0, - "text": "every", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1276, - "right": 1381 - } - }, - { - "doc_offset": { - "start": 1191, - "end": 1195 - }, - "page_num": 0, - "text": "time", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1391, - "right": 1476 - } - }, - { - "doc_offset": { - "start": 1196, - "end": 1199 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 2784, - "bottom": 2835, - "left": 1487, - "right": 1550 - } - }, - { - "doc_offset": { - "start": 1200, - "end": 1211 - }, - "page_num": 0, - "text": "integration", - "position": { - "top": 2784, - "bottom": 2834, - "left": 1560, - "right": 1770 - } - }, - { - "doc_offset": { - "start": 1212, - "end": 1214 - }, - "page_num": 0, - "text": "is", - "position": { - "top": 2784, - "bottom": 2834, - "left": 1780, - "right": 1813 - } - }, - { - "doc_offset": { - "start": 1215, - "end": 1219 - }, - "page_num": 0, - "text": "run.", - "position": { - "top": 2785, - "bottom": 2834, - "left": 1823, - "right": 1903 - } - }, - { - "doc_offset": { - "start": 1220, - "end": 1224 - }, - "page_num": 0, - "text": "Data", - "position": { - "top": 2891, - "bottom": 2937, - "left": 210, - "right": 308 - } - }, - { - "doc_offset": { - "start": 1225, - "end": 1239 - }, - "page_num": 0, - "text": "Reconciliation", - "position": { - "top": 2891, - "bottom": 2937, - "left": 320, - "right": 616 - } - }, - { - "doc_offset": { - "start": 1240, - "end": 1243 - }, - "page_num": 0, - "text": "The", - "position": { - "top": 2994, - "bottom": 3043, - "left": 212, - "right": 283 - } - }, - { - "doc_offset": { - "start": 1244, - "end": 1250 - }, - "page_num": 0, - "text": "output", - "position": { - "top": 2994, - "bottom": 3043, - "left": 296, - "right": 431 - } - }, - { - "doc_offset": { - "start": 1251, - "end": 1255 - }, - "page_num": 0, - "text": "will", - "position": { - "top": 2994, - "bottom": 3045, - "left": 441, - "right": 510 - } - }, - { - "doc_offset": { - "start": 1256, - "end": 1263 - }, - "page_num": 0, - "text": "include", - "position": { - "top": 2994, - "bottom": 3045, - "left": 520, - "right": 667 - } - }, - { - "doc_offset": { - "start": 1264, - "end": 1267 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 2994, - "bottom": 3045, - "left": 677, - "right": 743 - } - }, - { - "doc_offset": { - "start": 1268, - "end": 1275 - }, - "page_num": 0, - "text": "primary", - "position": { - "top": 2994, - "bottom": 3045, - "left": 757, - "right": 911 - } - }, - { - "doc_offset": { - "start": 1276, - "end": 1279 - }, - "page_num": 0, - "text": "key", - "position": { - "top": 2994, - "bottom": 3046, - "left": 921, - "right": 997 - } - }, - { - "doc_offset": { - "start": 1280, - "end": 1282 - }, - "page_num": 0, - "text": "id", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1027, - "right": 1073 - } - }, - { - "doc_offset": { - "start": 1283, - "end": 1289 - }, - "page_num": 0, - "text": "needed", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1098, - "right": 1250 - } - }, - { - "doc_offset": { - "start": 1290, - "end": 1292 - }, - "page_num": 0, - "text": "to", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1263, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 1293, - "end": 1299 - }, - "page_num": 0, - "text": "update", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1322, - "right": 1464 - } - }, - { - "doc_offset": { - "start": 1300, - "end": 1308 - }, - "page_num": 0, - "text": "existing", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1476, - "right": 1631 - } - }, - { - "doc_offset": { - "start": 1309, - "end": 1313 - }, - "page_num": 0, - "text": "rows", - "position": { - "top": 2994, - "bottom": 3046, - "left": 1644, - "right": 1746 - } - }, - { - "doc_offset": { - "start": 1314, - "end": 1317 - }, - "page_num": 0, - "text": "and", - "position": { - "top": 2994, - "bottom": 3045, - "left": 1760, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 1318, - "end": 1324 - }, - "page_num": 0, - "text": "insert", - "position": { - "top": 2994, - "bottom": 3045, - "left": 1845, - "right": 1962 - } - }, - { - "doc_offset": { - "start": 1325, - "end": 1328 - }, - "page_num": 0, - "text": "new", - "position": { - "top": 2994, - "bottom": 3045, - "left": 1974, - "right": 2048 - } - }, - { - "doc_offset": { - "start": 1329, - "end": 1333 - }, - "page_num": 0, - "text": "rows", - "position": { - "top": 2994, - "bottom": 3045, - "left": 2070, - "right": 2170 - } - }, - { - "doc_offset": { - "start": 1334, - "end": 1338 - }, - "page_num": 0, - "text": "into", - "position": { - "top": 2994, - "bottom": 3043, - "left": 2181, - "right": 2259 - } - }, - { - "doc_offset": { - "start": 1339, - "end": 1342 - }, - "page_num": 0, - "text": "the", - "position": { - "top": 2994, - "bottom": 3043, - "left": 2273, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 1343, - "end": 1350 - }, - "page_num": 0, - "text": "Metrics", - "position": { - "top": 3057, - "bottom": 3102, - "left": 214, - "right": 356 - } - }, - { - "doc_offset": { - "start": 1351, - "end": 1360 - }, - "page_num": 0, - "text": "database.", - "position": { - "top": 3057, - "bottom": 3102, - "left": 368, - "right": 563 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_1_text.txt b/tests/data/etloutput/4289/107458/101157/page_1_text.txt deleted file mode 100644 index 95f0e61..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_1_text.txt +++ /dev/null @@ -1,20 +0,0 @@ -1.2 Model -Column Type GraphQL Source -id int modelGroup. id -name str model Group. name -workflow_id int model Group. workflowId -Example GraphQL Query -query Models { -modelGroups(Limit: 1000) { -model Groups { -id -name -workflowId -} -} -} -Scheduled Process Logic -This is a lightweight query. All models will be pulled every time the integration is run. -Data Reconciliation -The output will include the primary key id needed to update existing rows and insert new rows into the -Metrics database. \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_1_tokens.json b/tests/data/etloutput/4289/107458/101157/page_1_tokens.json deleted file mode 100644 index 960aed8..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_1_tokens.json +++ /dev/null @@ -1,1122 +0,0 @@ -[ - { - "doc_offset": { - "start": 1361, - "end": 1364 - }, - "page_num": 1, - "text": "1.2", - "position": { - "top": 51, - "bottom": 105, - "left": 220, - "right": 306 - } - }, - { - "doc_offset": { - "start": 1365, - "end": 1370 - }, - "page_num": 1, - "text": "Model", - "position": { - "top": 51, - "bottom": 105, - "left": 363, - "right": 551 - } - }, - { - "doc_offset": { - "start": 1371, - "end": 1377 - }, - "page_num": 1, - "text": "Column", - "position": { - "top": 211, - "bottom": 253, - "left": 262, - "right": 416 - } - }, - { - "doc_offset": { - "start": 1378, - "end": 1382 - }, - "page_num": 1, - "text": "Type", - "position": { - "top": 210, - "bottom": 259, - "left": 889, - "right": 984 - } - }, - { - "doc_offset": { - "start": 1383, - "end": 1390 - }, - "page_num": 1, - "text": "GraphQL", - "position": { - "top": 211, - "bottom": 257, - "left": 1252, - "right": 1435 - } - }, - { - "doc_offset": { - "start": 1391, - "end": 1397 - }, - "page_num": 1, - "text": "Source", - "position": { - "top": 211, - "bottom": 257, - "left": 1451, - "right": 1597 - } - }, - { - "doc_offset": { - "start": 1398, - "end": 1400 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 312, - "bottom": 350, - "left": 259, - "right": 289 - } - }, - { - "doc_offset": { - "start": 1401, - "end": 1404 - }, - "page_num": 1, - "text": "int", - "position": { - "top": 312, - "bottom": 350, - "left": 883, - "right": 938 - } - }, - { - "doc_offset": { - "start": 1405, - "end": 1416 - }, - "page_num": 1, - "text": "modelGroup.", - "position": { - "top": 313, - "bottom": 355, - "left": 1262, - "right": 1504 - } - }, - { - "doc_offset": { - "start": 1417, - "end": 1419 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 312, - "bottom": 355, - "left": 1512, - "right": 1555 - } - }, - { - "doc_offset": { - "start": 1420, - "end": 1424 - }, - "page_num": 1, - "text": "name", - "position": { - "top": 411, - "bottom": 446, - "left": 259, - "right": 363 - } - }, - { - "doc_offset": { - "start": 1425, - "end": 1428 - }, - "page_num": 1, - "text": "str", - "position": { - "top": 405, - "bottom": 445, - "left": 888, - "right": 936 - } - }, - { - "doc_offset": { - "start": 1429, - "end": 1434 - }, - "page_num": 1, - "text": "model", - "position": { - "top": 406, - "bottom": 448, - "left": 1262, - "right": 1369 - } - }, - { - "doc_offset": { - "start": 1435, - "end": 1441 - }, - "page_num": 1, - "text": "Group.", - "position": { - "top": 408, - "bottom": 448, - "left": 1376, - "right": 1501 - } - }, - { - "doc_offset": { - "start": 1442, - "end": 1446 - }, - "page_num": 1, - "text": "name", - "position": { - "top": 409, - "bottom": 448, - "left": 1509, - "right": 1601 - } - }, - { - "doc_offset": { - "start": 1447, - "end": 1458 - }, - "page_num": 1, - "text": "workflow_id", - "position": { - "top": 498, - "bottom": 542, - "left": 259, - "right": 494 - } - }, - { - "doc_offset": { - "start": 1459, - "end": 1462 - }, - "page_num": 1, - "text": "int", - "position": { - "top": 495, - "bottom": 537, - "left": 882, - "right": 938 - } - }, - { - "doc_offset": { - "start": 1463, - "end": 1468 - }, - "page_num": 1, - "text": "model", - "position": { - "top": 498, - "bottom": 539, - "left": 1262, - "right": 1366 - } - }, - { - "doc_offset": { - "start": 1469, - "end": 1475 - }, - "page_num": 1, - "text": "Group.", - "position": { - "top": 498, - "bottom": 539, - "left": 1375, - "right": 1497 - } - }, - { - "doc_offset": { - "start": 1476, - "end": 1486 - }, - "page_num": 1, - "text": "workflowId", - "position": { - "top": 497, - "bottom": 539, - "left": 1505, - "right": 1733 - } - }, - { - "doc_offset": { - "start": 1487, - "end": 1494 - }, - "page_num": 1, - "text": "Example", - "position": { - "top": 627, - "bottom": 676, - "left": 212, - "right": 391 - } - }, - { - "doc_offset": { - "start": 1495, - "end": 1502 - }, - "page_num": 1, - "text": "GraphQL", - "position": { - "top": 625, - "bottom": 676, - "left": 401, - "right": 590 - } - }, - { - "doc_offset": { - "start": 1503, - "end": 1508 - }, - "page_num": 1, - "text": "Query", - "position": { - "top": 625, - "bottom": 677, - "left": 604, - "right": 730 - } - }, - { - "doc_offset": { - "start": 1509, - "end": 1514 - }, - "page_num": 1, - "text": "query", - "position": { - "top": 741, - "bottom": 793, - "left": 242, - "right": 375 - } - }, - { - "doc_offset": { - "start": 1515, - "end": 1521 - }, - "page_num": 1, - "text": "Models", - "position": { - "top": 741, - "bottom": 794, - "left": 392, - "right": 565 - } - }, - { - "doc_offset": { - "start": 1522, - "end": 1523 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 740, - "bottom": 794, - "left": 593, - "right": 618 - } - }, - { - "doc_offset": { - "start": 1524, - "end": 1542 - }, - "page_num": 1, - "text": "modelGroups(Limit:", - "position": { - "top": 806, - "bottom": 855, - "left": 325, - "right": 815 - } - }, - { - "doc_offset": { - "start": 1543, - "end": 1548 - }, - "page_num": 1, - "text": "1000)", - "position": { - "top": 800, - "bottom": 856, - "left": 840, - "right": 981 - } - }, - { - "doc_offset": { - "start": 1549, - "end": 1550 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 800, - "bottom": 856, - "left": 1002, - "right": 1031 - } - }, - { - "doc_offset": { - "start": 1551, - "end": 1556 - }, - "page_num": 1, - "text": "model", - "position": { - "top": 866, - "bottom": 918, - "left": 435, - "right": 560 - } - }, - { - "doc_offset": { - "start": 1557, - "end": 1563 - }, - "page_num": 1, - "text": "Groups", - "position": { - "top": 866, - "bottom": 918, - "left": 571, - "right": 732 - } - }, - { - "doc_offset": { - "start": 1564, - "end": 1565 - }, - "page_num": 1, - "text": "{", - "position": { - "top": 865, - "bottom": 916, - "left": 763, - "right": 787 - } - }, - { - "doc_offset": { - "start": 1566, - "end": 1568 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 929, - "bottom": 973, - "left": 545, - "right": 593 - } - }, - { - "doc_offset": { - "start": 1569, - "end": 1573 - }, - "page_num": 1, - "text": "name", - "position": { - "top": 998, - "bottom": 1035, - "left": 542, - "right": 646 - } - }, - { - "doc_offset": { - "start": 1574, - "end": 1584 - }, - "page_num": 1, - "text": "workflowId", - "position": { - "top": 1055, - "bottom": 1098, - "left": 544, - "right": 806 - } - }, - { - "doc_offset": { - "start": 1585, - "end": 1586 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1115, - "bottom": 1165, - "left": 436, - "right": 455 - } - }, - { - "doc_offset": { - "start": 1587, - "end": 1588 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1178, - "bottom": 1224, - "left": 329, - "right": 346 - } - }, - { - "doc_offset": { - "start": 1589, - "end": 1590 - }, - "page_num": 1, - "text": "}", - "position": { - "top": 1241, - "bottom": 1287, - "left": 223, - "right": 239 - } - }, - { - "doc_offset": { - "start": 1591, - "end": 1600 - }, - "page_num": 1, - "text": "Scheduled", - "position": { - "top": 1360, - "bottom": 1403, - "left": 212, - "right": 426 - } - }, - { - "doc_offset": { - "start": 1601, - "end": 1608 - }, - "page_num": 1, - "text": "Process", - "position": { - "top": 1359, - "bottom": 1407, - "left": 442, - "right": 614 - } - }, - { - "doc_offset": { - "start": 1609, - "end": 1614 - }, - "page_num": 1, - "text": "Logic", - "position": { - "top": 1359, - "bottom": 1409, - "left": 623, - "right": 740 - } - }, - { - "doc_offset": { - "start": 1615, - "end": 1619 - }, - "page_num": 1, - "text": "This", - "position": { - "top": 1463, - "bottom": 1511, - "left": 213, - "right": 286 - } - }, - { - "doc_offset": { - "start": 1620, - "end": 1622 - }, - "page_num": 1, - "text": "is", - "position": { - "top": 1463, - "bottom": 1512, - "left": 296, - "right": 336 - } - }, - { - "doc_offset": { - "start": 1623, - "end": 1624 - }, - "page_num": 1, - "text": "a", - "position": { - "top": 1463, - "bottom": 1512, - "left": 348, - "right": 366 - } - }, - { - "doc_offset": { - "start": 1625, - "end": 1636 - }, - "page_num": 1, - "text": "lightweight", - "position": { - "top": 1463, - "bottom": 1512, - "left": 378, - "right": 594 - } - }, - { - "doc_offset": { - "start": 1637, - "end": 1643 - }, - "page_num": 1, - "text": "query.", - "position": { - "top": 1462, - "bottom": 1513, - "left": 605, - "right": 729 - } - }, - { - "doc_offset": { - "start": 1644, - "end": 1647 - }, - "page_num": 1, - "text": "All", - "position": { - "top": 1462, - "bottom": 1513, - "left": 739, - "right": 786 - } - }, - { - "doc_offset": { - "start": 1648, - "end": 1654 - }, - "page_num": 1, - "text": "models", - "position": { - "top": 1460, - "bottom": 1513, - "left": 796, - "right": 944 - } - }, - { - "doc_offset": { - "start": 1655, - "end": 1659 - }, - "page_num": 1, - "text": "will", - "position": { - "top": 1460, - "bottom": 1513, - "left": 954, - "right": 1017 - } - }, - { - "doc_offset": { - "start": 1660, - "end": 1662 - }, - "page_num": 1, - "text": "be", - "position": { - "top": 1460, - "bottom": 1513, - "left": 1027, - "right": 1077 - } - }, - { - "doc_offset": { - "start": 1663, - "end": 1669 - }, - "page_num": 1, - "text": "pulled", - "position": { - "top": 1460, - "bottom": 1513, - "left": 1088, - "right": 1209 - } - }, - { - "doc_offset": { - "start": 1670, - "end": 1675 - }, - "page_num": 1, - "text": "every", - "position": { - "top": 1460, - "bottom": 1513, - "left": 1221, - "right": 1326 - } - }, - { - "doc_offset": { - "start": 1676, - "end": 1680 - }, - "page_num": 1, - "text": "time", - "position": { - "top": 1460, - "bottom": 1513, - "left": 1336, - "right": 1422 - } - }, - { - "doc_offset": { - "start": 1681, - "end": 1684 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1462, - "bottom": 1513, - "left": 1434, - "right": 1497 - } - }, - { - "doc_offset": { - "start": 1685, - "end": 1696 - }, - "page_num": 1, - "text": "integration", - "position": { - "top": 1462, - "bottom": 1512, - "left": 1507, - "right": 1714 - } - }, - { - "doc_offset": { - "start": 1697, - "end": 1699 - }, - "page_num": 1, - "text": "is", - "position": { - "top": 1462, - "bottom": 1512, - "left": 1724, - "right": 1762 - } - }, - { - "doc_offset": { - "start": 1700, - "end": 1704 - }, - "page_num": 1, - "text": "run.", - "position": { - "top": 1462, - "bottom": 1512, - "left": 1772, - "right": 1849 - } - }, - { - "doc_offset": { - "start": 1705, - "end": 1709 - }, - "page_num": 1, - "text": "Data", - "position": { - "top": 1569, - "bottom": 1615, - "left": 210, - "right": 306 - } - }, - { - "doc_offset": { - "start": 1710, - "end": 1724 - }, - "page_num": 1, - "text": "Reconciliation", - "position": { - "top": 1569, - "bottom": 1614, - "left": 319, - "right": 614 - } - }, - { - "doc_offset": { - "start": 1725, - "end": 1728 - }, - "page_num": 1, - "text": "The", - "position": { - "top": 1672, - "bottom": 1723, - "left": 212, - "right": 282 - } - }, - { - "doc_offset": { - "start": 1729, - "end": 1735 - }, - "page_num": 1, - "text": "output", - "position": { - "top": 1672, - "bottom": 1724, - "left": 300, - "right": 431 - } - }, - { - "doc_offset": { - "start": 1736, - "end": 1740 - }, - "page_num": 1, - "text": "will", - "position": { - "top": 1672, - "bottom": 1724, - "left": 442, - "right": 505 - } - }, - { - "doc_offset": { - "start": 1741, - "end": 1748 - }, - "page_num": 1, - "text": "include", - "position": { - "top": 1672, - "bottom": 1724, - "left": 517, - "right": 666 - } - }, - { - "doc_offset": { - "start": 1749, - "end": 1752 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1671, - "bottom": 1724, - "left": 680, - "right": 743 - } - }, - { - "doc_offset": { - "start": 1753, - "end": 1760 - }, - "page_num": 1, - "text": "primary", - "position": { - "top": 1671, - "bottom": 1724, - "left": 757, - "right": 909 - } - }, - { - "doc_offset": { - "start": 1761, - "end": 1764 - }, - "page_num": 1, - "text": "key", - "position": { - "top": 1671, - "bottom": 1724, - "left": 921, - "right": 998 - } - }, - { - "doc_offset": { - "start": 1765, - "end": 1767 - }, - "page_num": 1, - "text": "id", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1025, - "right": 1073 - } - }, - { - "doc_offset": { - "start": 1768, - "end": 1774 - }, - "page_num": 1, - "text": "needed", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1100, - "right": 1249 - } - }, - { - "doc_offset": { - "start": 1775, - "end": 1777 - }, - "page_num": 1, - "text": "to", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1263, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 1778, - "end": 1784 - }, - "page_num": 1, - "text": "update", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1320, - "right": 1462 - } - }, - { - "doc_offset": { - "start": 1785, - "end": 1793 - }, - "page_num": 1, - "text": "existing", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1476, - "right": 1628 - } - }, - { - "doc_offset": { - "start": 1794, - "end": 1798 - }, - "page_num": 1, - "text": "rows", - "position": { - "top": 1671, - "bottom": 1724, - "left": 1643, - "right": 1744 - } - }, - { - "doc_offset": { - "start": 1799, - "end": 1802 - }, - "page_num": 1, - "text": "and", - "position": { - "top": 1671, - "bottom": 1723, - "left": 1757, - "right": 1832 - } - }, - { - "doc_offset": { - "start": 1803, - "end": 1809 - }, - "page_num": 1, - "text": "insert", - "position": { - "top": 1671, - "bottom": 1723, - "left": 1842, - "right": 1961 - } - }, - { - "doc_offset": { - "start": 1810, - "end": 1813 - }, - "page_num": 1, - "text": "new", - "position": { - "top": 1671, - "bottom": 1723, - "left": 1971, - "right": 2045 - } - }, - { - "doc_offset": { - "start": 1814, - "end": 1818 - }, - "page_num": 1, - "text": "rows", - "position": { - "top": 1672, - "bottom": 1723, - "left": 2070, - "right": 2167 - } - }, - { - "doc_offset": { - "start": 1819, - "end": 1823 - }, - "page_num": 1, - "text": "into", - "position": { - "top": 1672, - "bottom": 1723, - "left": 2178, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 1824, - "end": 1827 - }, - "page_num": 1, - "text": "the", - "position": { - "top": 1672, - "bottom": 1721, - "left": 2269, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 1828, - "end": 1835 - }, - "page_num": 1, - "text": "Metrics", - "position": { - "top": 1735, - "bottom": 1780, - "left": 212, - "right": 356 - } - }, - { - "doc_offset": { - "start": 1836, - "end": 1845 - }, - "page_num": 1, - "text": "database.", - "position": { - "top": 1735, - "bottom": 1780, - "left": 366, - "right": 567 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_2_text.txt b/tests/data/etloutput/4289/107458/101157/page_2_text.txt deleted file mode 100644 index 8226328..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_2_text.txt +++ /dev/null @@ -1,25 +0,0 @@ -1.3 Submission -Column Type GraphQL Source -id int submission.id -created_at datetime submission. createdAt -processed_at datetime submission.review. completedAt -reviewer_id int submission. review. createdBy 2 -review_started_at datetime submission.review. startedAt 2 -review_completed_at datetime submission.review. completedAt 2 -rejected bool submission. review. rejected 2 -rejection_reason str submission.review. notes 2 -completed_at datetime submission. completedAt -retrieved_at datetime submission. updatedAt 3 -failed bool submission.status 4 -status enum submission.status -workflow_id int submission.workflowId -1 The timestamp for submission processing being completed is not directly available on the -Instead it's approximated by the completion time of Auto Review in the reviews list -(where reviewType == "AUTO"). -submission object. -2 The HITL review data points must come from the Manual Review in the reviews list -(where reviewType == "MANUAL"). -3 The time of retrieval is not directly available on the submission object. Instead it's approximated by the last -update time of the submission once the retrieved flag is set. -4 The failure status is not directly available on the submission object as a boolean. Instead it's derived using the -status of the submission (where status == "FAILED"). \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_2_tokens.json b/tests/data/etloutput/4289/107458/101157/page_2_tokens.json deleted file mode 100644 index c58158d..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_2_tokens.json +++ /dev/null @@ -1,2452 +0,0 @@ -[ - { - "doc_offset": { - "start": 1846, - "end": 1849 - }, - "page_num": 2, - "text": "1.3", - "position": { - "top": 133, - "bottom": 189, - "left": 220, - "right": 302 - } - }, - { - "doc_offset": { - "start": 1850, - "end": 1860 - }, - "page_num": 2, - "text": "Submission", - "position": { - "top": 136, - "bottom": 190, - "left": 363, - "right": 711 - } - }, - { - "doc_offset": { - "start": 1861, - "end": 1867 - }, - "page_num": 2, - "text": "Column", - "position": { - "top": 295, - "bottom": 336, - "left": 262, - "right": 415 - } - }, - { - "doc_offset": { - "start": 1868, - "end": 1872 - }, - "page_num": 2, - "text": "Type", - "position": { - "top": 295, - "bottom": 340, - "left": 954, - "right": 1045 - } - }, - { - "doc_offset": { - "start": 1873, - "end": 1880 - }, - "page_num": 2, - "text": "GraphQL", - "position": { - "top": 293, - "bottom": 340, - "left": 1310, - "right": 1495 - } - }, - { - "doc_offset": { - "start": 1881, - "end": 1887 - }, - "page_num": 2, - "text": "Source", - "position": { - "top": 295, - "bottom": 340, - "left": 1511, - "right": 1656 - } - }, - { - "doc_offset": { - "start": 1888, - "end": 1890 - }, - "page_num": 2, - "text": "id", - "position": { - "top": 393, - "bottom": 432, - "left": 257, - "right": 290 - } - }, - { - "doc_offset": { - "start": 1891, - "end": 1894 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 393, - "bottom": 431, - "left": 946, - "right": 999 - } - }, - { - "doc_offset": { - "start": 1895, - "end": 1908 - }, - "page_num": 2, - "text": "submission.id", - "position": { - "top": 396, - "bottom": 433, - "left": 1326, - "right": 1611 - } - }, - { - "doc_offset": { - "start": 1909, - "end": 1919 - }, - "page_num": 2, - "text": "created_at", - "position": { - "top": 489, - "bottom": 531, - "left": 259, - "right": 469 - } - }, - { - "doc_offset": { - "start": 1920, - "end": 1928 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 489, - "bottom": 529, - "left": 948, - "right": 1120 - } - }, - { - "doc_offset": { - "start": 1929, - "end": 1940 - }, - "page_num": 2, - "text": "submission.", - "position": { - "top": 489, - "bottom": 528, - "left": 1326, - "right": 1562 - } - }, - { - "doc_offset": { - "start": 1941, - "end": 1950 - }, - "page_num": 2, - "text": "createdAt", - "position": { - "top": 489, - "bottom": 528, - "left": 1571, - "right": 1769 - } - }, - { - "doc_offset": { - "start": 1951, - "end": 1963 - }, - "page_num": 2, - "text": "processed_at", - "position": { - "top": 588, - "bottom": 631, - "left": 257, - "right": 528 - } - }, - { - "doc_offset": { - "start": 1964, - "end": 1972 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 587, - "bottom": 625, - "left": 948, - "right": 1120 - } - }, - { - "doc_offset": { - "start": 1973, - "end": 1991 - }, - "page_num": 2, - "text": "submission.review.", - "position": { - "top": 592, - "bottom": 638, - "left": 1323, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 1992, - "end": 2003 - }, - "page_num": 2, - "text": "completedAt", - "position": { - "top": 592, - "bottom": 640, - "left": 1726, - "right": 1975 - } - }, - { - "doc_offset": { - "start": 2004, - "end": 2015 - }, - "page_num": 2, - "text": "reviewer_id", - "position": { - "top": 688, - "bottom": 731, - "left": 257, - "right": 478 - } - }, - { - "doc_offset": { - "start": 2016, - "end": 2019 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 688, - "bottom": 726, - "left": 948, - "right": 999 - } - }, - { - "doc_offset": { - "start": 2020, - "end": 2031 - }, - "page_num": 2, - "text": "submission.", - "position": { - "top": 698, - "bottom": 737, - "left": 1323, - "right": 1561 - } - }, - { - "doc_offset": { - "start": 2032, - "end": 2039 - }, - "page_num": 2, - "text": "review.", - "position": { - "top": 698, - "bottom": 739, - "left": 1568, - "right": 1717 - } - }, - { - "doc_offset": { - "start": 2040, - "end": 2049 - }, - "page_num": 2, - "text": "createdBy", - "position": { - "top": 697, - "bottom": 740, - "left": 1726, - "right": 1928 - } - }, - { - "doc_offset": { - "start": 2050, - "end": 2051 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 693, - "bottom": 724, - "left": 1944, - "right": 1959 - } - }, - { - "doc_offset": { - "start": 2052, - "end": 2069 - }, - "page_num": 2, - "text": "review_started_at", - "position": { - "top": 792, - "bottom": 836, - "left": 257, - "right": 607 - } - }, - { - "doc_offset": { - "start": 2070, - "end": 2078 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 792, - "bottom": 833, - "left": 948, - "right": 1117 - } - }, - { - "doc_offset": { - "start": 2079, - "end": 2097 - }, - "page_num": 2, - "text": "submission.review.", - "position": { - "top": 803, - "bottom": 840, - "left": 1323, - "right": 1717 - } - }, - { - "doc_offset": { - "start": 2098, - "end": 2107 - }, - "page_num": 2, - "text": "startedAt", - "position": { - "top": 800, - "bottom": 839, - "left": 1726, - "right": 1925 - } - }, - { - "doc_offset": { - "start": 2108, - "end": 2109 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 797, - "bottom": 826, - "left": 1944, - "right": 1958 - } - }, - { - "doc_offset": { - "start": 2110, - "end": 2129 - }, - "page_num": 2, - "text": "review_completed_at", - "position": { - "top": 890, - "bottom": 941, - "left": 253, - "right": 679 - } - }, - { - "doc_offset": { - "start": 2130, - "end": 2138 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 893, - "bottom": 933, - "left": 951, - "right": 1118 - } - }, - { - "doc_offset": { - "start": 2139, - "end": 2157 - }, - "page_num": 2, - "text": "submission.review.", - "position": { - "top": 905, - "bottom": 943, - "left": 1323, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 2158, - "end": 2169 - }, - "page_num": 2, - "text": "completedAt", - "position": { - "top": 903, - "bottom": 946, - "left": 1724, - "right": 1971 - } - }, - { - "doc_offset": { - "start": 2170, - "end": 2171 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 896, - "bottom": 929, - "left": 1986, - "right": 2004 - } - }, - { - "doc_offset": { - "start": 2172, - "end": 2180 - }, - "page_num": 2, - "text": "rejected", - "position": { - "top": 998, - "bottom": 1042, - "left": 259, - "right": 412 - } - }, - { - "doc_offset": { - "start": 2181, - "end": 2185 - }, - "page_num": 2, - "text": "bool", - "position": { - "top": 992, - "bottom": 1039, - "left": 948, - "right": 1037 - } - }, - { - "doc_offset": { - "start": 2186, - "end": 2197 - }, - "page_num": 2, - "text": "submission.", - "position": { - "top": 1009, - "bottom": 1045, - "left": 1325, - "right": 1560 - } - }, - { - "doc_offset": { - "start": 2198, - "end": 2205 - }, - "page_num": 2, - "text": "review.", - "position": { - "top": 1006, - "bottom": 1049, - "left": 1568, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 2206, - "end": 2214 - }, - "page_num": 2, - "text": "rejected", - "position": { - "top": 1006, - "bottom": 1049, - "left": 1724, - "right": 1902 - } - }, - { - "doc_offset": { - "start": 2215, - "end": 2216 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 999, - "bottom": 1035, - "left": 1921, - "right": 1938 - } - }, - { - "doc_offset": { - "start": 2217, - "end": 2233 - }, - "page_num": 2, - "text": "rejection_reason", - "position": { - "top": 1100, - "bottom": 1147, - "left": 257, - "right": 578 - } - }, - { - "doc_offset": { - "start": 2234, - "end": 2237 - }, - "page_num": 2, - "text": "str", - "position": { - "top": 1094, - "bottom": 1144, - "left": 946, - "right": 1001 - } - }, - { - "doc_offset": { - "start": 2238, - "end": 2256 - }, - "page_num": 2, - "text": "submission.review.", - "position": { - "top": 1110, - "bottom": 1148, - "left": 1326, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 2257, - "end": 2262 - }, - "page_num": 2, - "text": "notes", - "position": { - "top": 1110, - "bottom": 1147, - "left": 1723, - "right": 1838 - } - }, - { - "doc_offset": { - "start": 2263, - "end": 2264 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 1102, - "bottom": 1134, - "left": 1855, - "right": 1872 - } - }, - { - "doc_offset": { - "start": 2265, - "end": 2277 - }, - "page_num": 2, - "text": "completed_at", - "position": { - "top": 1198, - "bottom": 1241, - "left": 257, - "right": 528 - } - }, - { - "doc_offset": { - "start": 2278, - "end": 2286 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 1198, - "bottom": 1237, - "left": 951, - "right": 1117 - } - }, - { - "doc_offset": { - "start": 2287, - "end": 2298 - }, - "page_num": 2, - "text": "submission.", - "position": { - "top": 1198, - "bottom": 1238, - "left": 1325, - "right": 1560 - } - }, - { - "doc_offset": { - "start": 2299, - "end": 2310 - }, - "page_num": 2, - "text": "completedAt", - "position": { - "top": 1198, - "bottom": 1238, - "left": 1570, - "right": 1813 - } - }, - { - "doc_offset": { - "start": 2311, - "end": 2323 - }, - "page_num": 2, - "text": "retrieved_at", - "position": { - "top": 1294, - "bottom": 1336, - "left": 257, - "right": 491 - } - }, - { - "doc_offset": { - "start": 2324, - "end": 2332 - }, - "page_num": 2, - "text": "datetime", - "position": { - "top": 1294, - "bottom": 1336, - "left": 951, - "right": 1118 - } - }, - { - "doc_offset": { - "start": 2333, - "end": 2344 - }, - "page_num": 2, - "text": "submission.", - "position": { - "top": 1306, - "bottom": 1347, - "left": 1323, - "right": 1560 - } - }, - { - "doc_offset": { - "start": 2345, - "end": 2354 - }, - "page_num": 2, - "text": "updatedAt", - "position": { - "top": 1306, - "bottom": 1344, - "left": 1568, - "right": 1770 - } - }, - { - "doc_offset": { - "start": 2355, - "end": 2356 - }, - "page_num": 2, - "text": "3", - "position": { - "top": 1301, - "bottom": 1343, - "left": 1785, - "right": 1807 - } - }, - { - "doc_offset": { - "start": 2357, - "end": 2363 - }, - "page_num": 2, - "text": "failed", - "position": { - "top": 1396, - "bottom": 1436, - "left": 257, - "right": 361 - } - }, - { - "doc_offset": { - "start": 2364, - "end": 2368 - }, - "page_num": 2, - "text": "bool", - "position": { - "top": 1392, - "bottom": 1440, - "left": 946, - "right": 1038 - } - }, - { - "doc_offset": { - "start": 2369, - "end": 2386 - }, - "page_num": 2, - "text": "submission.status", - "position": { - "top": 1407, - "bottom": 1446, - "left": 1323, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 2387, - "end": 2388 - }, - "page_num": 2, - "text": "4", - "position": { - "top": 1402, - "bottom": 1435, - "left": 1717, - "right": 1736 - } - }, - { - "doc_offset": { - "start": 2389, - "end": 2395 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 1498, - "bottom": 1533, - "left": 260, - "right": 378 - } - }, - { - "doc_offset": { - "start": 2396, - "end": 2400 - }, - "page_num": 2, - "text": "enum", - "position": { - "top": 1499, - "bottom": 1535, - "left": 949, - "right": 1040 - } - }, - { - "doc_offset": { - "start": 2401, - "end": 2418 - }, - "page_num": 2, - "text": "submission.status", - "position": { - "top": 1496, - "bottom": 1533, - "left": 1323, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 2419, - "end": 2430 - }, - "page_num": 2, - "text": "workflow_id", - "position": { - "top": 1589, - "bottom": 1631, - "left": 257, - "right": 488 - } - }, - { - "doc_offset": { - "start": 2431, - "end": 2434 - }, - "page_num": 2, - "text": "int", - "position": { - "top": 1586, - "bottom": 1627, - "left": 946, - "right": 999 - } - }, - { - "doc_offset": { - "start": 2435, - "end": 2456 - }, - "page_num": 2, - "text": "submission.workflowId", - "position": { - "top": 1588, - "bottom": 1627, - "left": 1325, - "right": 1790 - } - }, - { - "doc_offset": { - "start": 2457, - "end": 2458 - }, - "page_num": 2, - "text": "1", - "position": { - "top": 1717, - "bottom": 1763, - "left": 212, - "right": 234 - } - }, - { - "doc_offset": { - "start": 2459, - "end": 2462 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 1717, - "bottom": 1763, - "left": 246, - "right": 313 - } - }, - { - "doc_offset": { - "start": 2463, - "end": 2472 - }, - "page_num": 2, - "text": "timestamp", - "position": { - "top": 1718, - "bottom": 1764, - "left": 328, - "right": 521 - } - }, - { - "doc_offset": { - "start": 2473, - "end": 2476 - }, - "page_num": 2, - "text": "for", - "position": { - "top": 1718, - "bottom": 1766, - "left": 535, - "right": 593 - } - }, - { - "doc_offset": { - "start": 2477, - "end": 2487 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 1718, - "bottom": 1766, - "left": 603, - "right": 810 - } - }, - { - "doc_offset": { - "start": 2488, - "end": 2498 - }, - "page_num": 2, - "text": "processing", - "position": { - "top": 1720, - "bottom": 1767, - "left": 825, - "right": 1027 - } - }, - { - "doc_offset": { - "start": 2499, - "end": 2504 - }, - "page_num": 2, - "text": "being", - "position": { - "top": 1720, - "bottom": 1767, - "left": 1042, - "right": 1144 - } - }, - { - "doc_offset": { - "start": 2505, - "end": 2514 - }, - "page_num": 2, - "text": "completed", - "position": { - "top": 1720, - "bottom": 1767, - "left": 1160, - "right": 1356 - } - }, - { - "doc_offset": { - "start": 2515, - "end": 2517 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 1720, - "bottom": 1767, - "left": 1368, - "right": 1406 - } - }, - { - "doc_offset": { - "start": 2518, - "end": 2521 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 1720, - "bottom": 1766, - "left": 1416, - "right": 1485 - } - }, - { - "doc_offset": { - "start": 2522, - "end": 2530 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 1721, - "bottom": 1766, - "left": 1494, - "right": 1630 - } - }, - { - "doc_offset": { - "start": 2531, - "end": 2540 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 1721, - "bottom": 1763, - "left": 1641, - "right": 1802 - } - }, - { - "doc_offset": { - "start": 2541, - "end": 2543 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 1721, - "bottom": 1763, - "left": 1817, - "right": 1862 - } - }, - { - "doc_offset": { - "start": 2544, - "end": 2547 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1721, - "bottom": 1761, - "left": 1880, - "right": 1941 - } - }, - { - "doc_offset": { - "start": 2548, - "end": 2555 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 1771, - "bottom": 1816, - "left": 242, - "right": 372 - } - }, - { - "doc_offset": { - "start": 2556, - "end": 2560 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 1771, - "bottom": 1816, - "left": 382, - "right": 441 - } - }, - { - "doc_offset": { - "start": 2561, - "end": 2573 - }, - "page_num": 2, - "text": "approximated", - "position": { - "top": 1770, - "bottom": 1816, - "left": 451, - "right": 701 - } - }, - { - "doc_offset": { - "start": 2574, - "end": 2576 - }, - "page_num": 2, - "text": "by", - "position": { - "top": 1770, - "bottom": 1817, - "left": 713, - "right": 759 - } - }, - { - "doc_offset": { - "start": 2577, - "end": 2580 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1770, - "bottom": 1817, - "left": 767, - "right": 828 - } - }, - { - "doc_offset": { - "start": 2581, - "end": 2591 - }, - "page_num": 2, - "text": "completion", - "position": { - "top": 1770, - "bottom": 1816, - "left": 838, - "right": 1038 - } - }, - { - "doc_offset": { - "start": 2592, - "end": 2596 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 1770, - "bottom": 1816, - "left": 1050, - "right": 1130 - } - }, - { - "doc_offset": { - "start": 2597, - "end": 2599 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 1770, - "bottom": 1816, - "left": 1143, - "right": 1179 - } - }, - { - "doc_offset": { - "start": 2600, - "end": 2604 - }, - "page_num": 2, - "text": "Auto", - "position": { - "top": 1770, - "bottom": 1816, - "left": 1189, - "right": 1272 - } - }, - { - "doc_offset": { - "start": 2605, - "end": 2611 - }, - "page_num": 2, - "text": "Review", - "position": { - "top": 1771, - "bottom": 1814, - "left": 1283, - "right": 1406 - } - }, - { - "doc_offset": { - "start": 2612, - "end": 2614 - }, - "page_num": 2, - "text": "in", - "position": { - "top": 1771, - "bottom": 1813, - "left": 1425, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 2615, - "end": 2618 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1771, - "bottom": 1813, - "left": 1468, - "right": 1528 - } - }, - { - "doc_offset": { - "start": 2619, - "end": 2626 - }, - "page_num": 2, - "text": "reviews", - "position": { - "top": 1773, - "bottom": 1811, - "left": 1551, - "right": 1700 - } - }, - { - "doc_offset": { - "start": 2627, - "end": 2631 - }, - "page_num": 2, - "text": "list", - "position": { - "top": 1773, - "bottom": 1810, - "left": 1719, - "right": 1776 - } - }, - { - "doc_offset": { - "start": 2632, - "end": 2638 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 1821, - "bottom": 1867, - "left": 239, - "right": 361 - } - }, - { - "doc_offset": { - "start": 2639, - "end": 2649 - }, - "page_num": 2, - "text": "reviewType", - "position": { - "top": 1821, - "bottom": 1867, - "left": 385, - "right": 594 - } - }, - { - "doc_offset": { - "start": 2650, - "end": 2652 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 1821, - "bottom": 1867, - "left": 617, - "right": 667 - } - }, - { - "doc_offset": { - "start": 2653, - "end": 2661 - }, - "page_num": 2, - "text": "\"AUTO\").", - "position": { - "top": 1821, - "bottom": 1867, - "left": 677, - "right": 845 - } - }, - { - "doc_offset": { - "start": 2662, - "end": 2672 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 1720, - "bottom": 1768, - "left": 1969, - "right": 2178 - } - }, - { - "doc_offset": { - "start": 2673, - "end": 2680 - }, - "page_num": 2, - "text": "object.", - "position": { - "top": 1720, - "bottom": 1767, - "left": 2211, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 2681, - "end": 2682 - }, - "page_num": 2, - "text": "2", - "position": { - "top": 1922, - "bottom": 1966, - "left": 209, - "right": 232 - } - }, - { - "doc_offset": { - "start": 2683, - "end": 2686 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 1922, - "bottom": 1967, - "left": 243, - "right": 308 - } - }, - { - "doc_offset": { - "start": 2687, - "end": 2691 - }, - "page_num": 2, - "text": "HITL", - "position": { - "top": 1922, - "bottom": 1967, - "left": 316, - "right": 402 - } - }, - { - "doc_offset": { - "start": 2692, - "end": 2698 - }, - "page_num": 2, - "text": "review", - "position": { - "top": 1923, - "bottom": 1969, - "left": 414, - "right": 522 - } - }, - { - "doc_offset": { - "start": 2699, - "end": 2703 - }, - "page_num": 2, - "text": "data", - "position": { - "top": 1923, - "bottom": 1969, - "left": 542, - "right": 626 - } - }, - { - "doc_offset": { - "start": 2704, - "end": 2710 - }, - "page_num": 2, - "text": "points", - "position": { - "top": 1925, - "bottom": 1970, - "left": 634, - "right": 746 - } - }, - { - "doc_offset": { - "start": 2711, - "end": 2715 - }, - "page_num": 2, - "text": "must", - "position": { - "top": 1925, - "bottom": 1970, - "left": 754, - "right": 852 - } - }, - { - "doc_offset": { - "start": 2716, - "end": 2720 - }, - "page_num": 2, - "text": "come", - "position": { - "top": 1925, - "bottom": 1970, - "left": 860, - "right": 961 - } - }, - { - "doc_offset": { - "start": 2721, - "end": 2725 - }, - "page_num": 2, - "text": "from", - "position": { - "top": 1925, - "bottom": 1970, - "left": 972, - "right": 1041 - } - }, - { - "doc_offset": { - "start": 2726, - "end": 2729 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1926, - "bottom": 1970, - "left": 1064, - "right": 1124 - } - }, - { - "doc_offset": { - "start": 2730, - "end": 2736 - }, - "page_num": 2, - "text": "Manual", - "position": { - "top": 1926, - "bottom": 1969, - "left": 1133, - "right": 1272 - } - }, - { - "doc_offset": { - "start": 2737, - "end": 2743 - }, - "page_num": 2, - "text": "Review", - "position": { - "top": 1926, - "bottom": 1969, - "left": 1280, - "right": 1403 - } - }, - { - "doc_offset": { - "start": 2744, - "end": 2746 - }, - "page_num": 2, - "text": "in", - "position": { - "top": 1926, - "bottom": 1967, - "left": 1421, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 2747, - "end": 2750 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 1926, - "bottom": 1967, - "left": 1464, - "right": 1524 - } - }, - { - "doc_offset": { - "start": 2751, - "end": 2758 - }, - "page_num": 2, - "text": "reviews", - "position": { - "top": 1926, - "bottom": 1966, - "left": 1547, - "right": 1699 - } - }, - { - "doc_offset": { - "start": 2759, - "end": 2763 - }, - "page_num": 2, - "text": "list", - "position": { - "top": 1927, - "bottom": 1965, - "left": 1716, - "right": 1774 - } - }, - { - "doc_offset": { - "start": 2764, - "end": 2770 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 1976, - "bottom": 2022, - "left": 240, - "right": 361 - } - }, - { - "doc_offset": { - "start": 2771, - "end": 2781 - }, - "page_num": 2, - "text": "reviewType", - "position": { - "top": 1977, - "bottom": 2020, - "left": 385, - "right": 595 - } - }, - { - "doc_offset": { - "start": 2782, - "end": 2784 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 1976, - "bottom": 2020, - "left": 614, - "right": 667 - } - }, - { - "doc_offset": { - "start": 2785, - "end": 2795 - }, - "page_num": 2, - "text": "\"MANUAL\").", - "position": { - "top": 1976, - "bottom": 2020, - "left": 676, - "right": 906 - } - }, - { - "doc_offset": { - "start": 2796, - "end": 2797 - }, - "page_num": 2, - "text": "3", - "position": { - "top": 2075, - "bottom": 2125, - "left": 209, - "right": 233 - } - }, - { - "doc_offset": { - "start": 2798, - "end": 2801 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 2075, - "bottom": 2125, - "left": 247, - "right": 316 - } - }, - { - "doc_offset": { - "start": 2802, - "end": 2806 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 2076, - "bottom": 2125, - "left": 330, - "right": 412 - } - }, - { - "doc_offset": { - "start": 2807, - "end": 2809 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2076, - "bottom": 2125, - "left": 429, - "right": 468 - } - }, - { - "doc_offset": { - "start": 2810, - "end": 2819 - }, - "page_num": 2, - "text": "retrieval", - "position": { - "top": 2076, - "bottom": 2125, - "left": 478, - "right": 630 - } - }, - { - "doc_offset": { - "start": 2820, - "end": 2822 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2076, - "bottom": 2126, - "left": 640, - "right": 679 - } - }, - { - "doc_offset": { - "start": 2823, - "end": 2826 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 2076, - "bottom": 2126, - "left": 690, - "right": 757 - } - }, - { - "doc_offset": { - "start": 2827, - "end": 2835 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 2078, - "bottom": 2126, - "left": 769, - "right": 906 - } - }, - { - "doc_offset": { - "start": 2836, - "end": 2845 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 2078, - "bottom": 2128, - "left": 921, - "right": 1081 - } - }, - { - "doc_offset": { - "start": 2846, - "end": 2848 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 2078, - "bottom": 2128, - "left": 1095, - "right": 1144 - } - }, - { - "doc_offset": { - "start": 2849, - "end": 2852 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2078, - "bottom": 2128, - "left": 1158, - "right": 1223 - } - }, - { - "doc_offset": { - "start": 2853, - "end": 2863 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2078, - "bottom": 2128, - "left": 1250, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 2864, - "end": 2871 - }, - "page_num": 2, - "text": "object.", - "position": { - "top": 2078, - "bottom": 2128, - "left": 1491, - "right": 1623 - } - }, - { - "doc_offset": { - "start": 2872, - "end": 2879 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 2078, - "bottom": 2128, - "left": 1633, - "right": 1772 - } - }, - { - "doc_offset": { - "start": 2880, - "end": 2884 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 2078, - "bottom": 2129, - "left": 1785, - "right": 1848 - } - }, - { - "doc_offset": { - "start": 2885, - "end": 2897 - }, - "page_num": 2, - "text": "approximated", - "position": { - "top": 2078, - "bottom": 2129, - "left": 1860, - "right": 2114 - } - }, - { - "doc_offset": { - "start": 2898, - "end": 2900 - }, - "page_num": 2, - "text": "by", - "position": { - "top": 2078, - "bottom": 2129, - "left": 2127, - "right": 2180 - } - }, - { - "doc_offset": { - "start": 2901, - "end": 2904 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2078, - "bottom": 2129, - "left": 2193, - "right": 2256 - } - }, - { - "doc_offset": { - "start": 2905, - "end": 2909 - }, - "page_num": 2, - "text": "last", - "position": { - "top": 2078, - "bottom": 2128, - "left": 2266, - "right": 2343 - } - }, - { - "doc_offset": { - "start": 2910, - "end": 2916 - }, - "page_num": 2, - "text": "update", - "position": { - "top": 2132, - "bottom": 2175, - "left": 240, - "right": 369 - } - }, - { - "doc_offset": { - "start": 2917, - "end": 2921 - }, - "page_num": 2, - "text": "time", - "position": { - "top": 2131, - "bottom": 2175, - "left": 379, - "right": 458 - } - }, - { - "doc_offset": { - "start": 2922, - "end": 2924 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2131, - "bottom": 2175, - "left": 469, - "right": 507 - } - }, - { - "doc_offset": { - "start": 2925, - "end": 2928 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2131, - "bottom": 2174, - "left": 515, - "right": 571 - } - }, - { - "doc_offset": { - "start": 2929, - "end": 2939 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2131, - "bottom": 2174, - "left": 584, - "right": 787 - } - }, - { - "doc_offset": { - "start": 2940, - "end": 2944 - }, - "page_num": 2, - "text": "once", - "position": { - "top": 2131, - "bottom": 2174, - "left": 803, - "right": 891 - } - }, - { - "doc_offset": { - "start": 2945, - "end": 2948 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2131, - "bottom": 2174, - "left": 902, - "right": 959 - } - }, - { - "doc_offset": { - "start": 2949, - "end": 2958 - }, - "page_num": 2, - "text": "retrieved", - "position": { - "top": 2131, - "bottom": 2174, - "left": 985, - "right": 1173 - } - }, - { - "doc_offset": { - "start": 2959, - "end": 2963 - }, - "page_num": 2, - "text": "flag", - "position": { - "top": 2132, - "bottom": 2174, - "left": 1196, - "right": 1264 - } - }, - { - "doc_offset": { - "start": 2964, - "end": 2966 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2132, - "bottom": 2174, - "left": 1273, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 2967, - "end": 2971 - }, - "page_num": 2, - "text": "set.", - "position": { - "top": 2134, - "bottom": 2174, - "left": 1315, - "right": 1382 - } - }, - { - "doc_offset": { - "start": 2972, - "end": 2973 - }, - "page_num": 2, - "text": "4", - "position": { - "top": 2232, - "bottom": 2275, - "left": 209, - "right": 232 - } - }, - { - "doc_offset": { - "start": 2974, - "end": 2977 - }, - "page_num": 2, - "text": "The", - "position": { - "top": 2232, - "bottom": 2275, - "left": 246, - "right": 312 - } - }, - { - "doc_offset": { - "start": 2978, - "end": 2985 - }, - "page_num": 2, - "text": "failure", - "position": { - "top": 2232, - "bottom": 2275, - "left": 323, - "right": 436 - } - }, - { - "doc_offset": { - "start": 2986, - "end": 2992 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2234, - "bottom": 2277, - "left": 451, - "right": 563 - } - }, - { - "doc_offset": { - "start": 2993, - "end": 2995 - }, - "page_num": 2, - "text": "is", - "position": { - "top": 2234, - "bottom": 2277, - "left": 573, - "right": 610 - } - }, - { - "doc_offset": { - "start": 2996, - "end": 2999 - }, - "page_num": 2, - "text": "not", - "position": { - "top": 2234, - "bottom": 2277, - "left": 620, - "right": 684 - } - }, - { - "doc_offset": { - "start": 3000, - "end": 3008 - }, - "page_num": 2, - "text": "directly", - "position": { - "top": 2235, - "bottom": 2278, - "left": 693, - "right": 829 - } - }, - { - "doc_offset": { - "start": 3009, - "end": 3018 - }, - "page_num": 2, - "text": "available", - "position": { - "top": 2235, - "bottom": 2278, - "left": 842, - "right": 1001 - } - }, - { - "doc_offset": { - "start": 3019, - "end": 3021 - }, - "page_num": 2, - "text": "on", - "position": { - "top": 2235, - "bottom": 2280, - "left": 1017, - "right": 1060 - } - }, - { - "doc_offset": { - "start": 3022, - "end": 3025 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2235, - "bottom": 2280, - "left": 1075, - "right": 1137 - } - }, - { - "doc_offset": { - "start": 3026, - "end": 3036 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2235, - "bottom": 2280, - "left": 1164, - "right": 1370 - } - }, - { - "doc_offset": { - "start": 3037, - "end": 3043 - }, - "page_num": 2, - "text": "object", - "position": { - "top": 2235, - "bottom": 2280, - "left": 1401, - "right": 1522 - } - }, - { - "doc_offset": { - "start": 3044, - "end": 3046 - }, - "page_num": 2, - "text": "as", - "position": { - "top": 2235, - "bottom": 2280, - "left": 1531, - "right": 1575 - } - }, - { - "doc_offset": { - "start": 3047, - "end": 3048 - }, - "page_num": 2, - "text": "a", - "position": { - "top": 2235, - "bottom": 2281, - "left": 1588, - "right": 1611 - } - }, - { - "doc_offset": { - "start": 3049, - "end": 3057 - }, - "page_num": 2, - "text": "boolean.", - "position": { - "top": 2235, - "bottom": 2281, - "left": 1623, - "right": 1786 - } - }, - { - "doc_offset": { - "start": 3058, - "end": 3065 - }, - "page_num": 2, - "text": "Instead", - "position": { - "top": 2235, - "bottom": 2281, - "left": 1795, - "right": 1931 - } - }, - { - "doc_offset": { - "start": 3066, - "end": 3070 - }, - "page_num": 2, - "text": "it's", - "position": { - "top": 2234, - "bottom": 2281, - "left": 1944, - "right": 2005 - } - }, - { - "doc_offset": { - "start": 3071, - "end": 3078 - }, - "page_num": 2, - "text": "derived", - "position": { - "top": 2234, - "bottom": 2281, - "left": 2014, - "right": 2150 - } - }, - { - "doc_offset": { - "start": 3079, - "end": 3084 - }, - "page_num": 2, - "text": "using", - "position": { - "top": 2232, - "bottom": 2281, - "left": 2166, - "right": 2264 - } - }, - { - "doc_offset": { - "start": 3085, - "end": 3088 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2232, - "bottom": 2281, - "left": 2277, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 3089, - "end": 3095 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2284, - "bottom": 2333, - "left": 257, - "right": 383 - } - }, - { - "doc_offset": { - "start": 3096, - "end": 3098 - }, - "page_num": 2, - "text": "of", - "position": { - "top": 2284, - "bottom": 2333, - "left": 403, - "right": 438 - } - }, - { - "doc_offset": { - "start": 3099, - "end": 3102 - }, - "page_num": 2, - "text": "the", - "position": { - "top": 2284, - "bottom": 2333, - "left": 448, - "right": 508 - } - }, - { - "doc_offset": { - "start": 3103, - "end": 3113 - }, - "page_num": 2, - "text": "submission", - "position": { - "top": 2284, - "bottom": 2333, - "left": 518, - "right": 724 - } - }, - { - "doc_offset": { - "start": 3114, - "end": 3120 - }, - "page_num": 2, - "text": "(where", - "position": { - "top": 2284, - "bottom": 2333, - "left": 734, - "right": 858 - } - }, - { - "doc_offset": { - "start": 3121, - "end": 3127 - }, - "page_num": 2, - "text": "status", - "position": { - "top": 2284, - "bottom": 2333, - "left": 881, - "right": 1011 - } - }, - { - "doc_offset": { - "start": 3128, - "end": 3130 - }, - "page_num": 2, - "text": "==", - "position": { - "top": 2284, - "bottom": 2333, - "left": 1028, - "right": 1078 - } - }, - { - "doc_offset": { - "start": 3131, - "end": 3141 - }, - "page_num": 2, - "text": "\"FAILED\").", - "position": { - "top": 2284, - "bottom": 2331, - "left": 1088, - "right": 1286 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_3_text.txt b/tests/data/etloutput/4289/107458/101157/page_3_text.txt deleted file mode 100644 index d4c8b0a..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_3_text.txt +++ /dev/null @@ -1,40 +0,0 @@ -Example GraphQL Query -query Submissions { -submissions(orderBy: UPDATED_BY, desc: true, limit: 1000) { -submissions { -id -createdAt -inputFiles { -id -filename -} -reviews { -createdBy -startedAt -completedAt -rejected -notes -reviewType -} -retrieved -updatedAt -workflowId -} -} -} -Scheduled Process Logic -This is a heavyweight query. Submissions are ordered by updatedAt descending, and results should be -paginated such that processing can stop once all submissions have been processed whose updatedAt -date is greater than the timestamp of the previous run of the integration. -Data Reconciliation -The output will include the primary key id needed to update existing rows and insert new rows into the -Metrics database. -1.4 Submission File -Column Type GraphQL Source -id int submission. inputFile.id -name str submission. inputFile.filename -submission_id int submission.id -See the Submission section's example GraphQL query. -Data Reconciliation -The output will include the primary key id needed to update existing rows and insert new rows into the -Metrics database. \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_3_tokens.json b/tests/data/etloutput/4289/107458/101157/page_3_tokens.json deleted file mode 100644 index 7a37ae8..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_3_tokens.json +++ /dev/null @@ -1,2144 +0,0 @@ -[ - { - "doc_offset": { - "start": 3142, - "end": 3149 - }, - "page_num": 3, - "text": "Example", - "position": { - "top": 11, - "bottom": 57, - "left": 210, - "right": 388 - } - }, - { - "doc_offset": { - "start": 3150, - "end": 3157 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 8, - "bottom": 58, - "left": 402, - "right": 588 - } - }, - { - "doc_offset": { - "start": 3158, - "end": 3163 - }, - "page_num": 3, - "text": "Query", - "position": { - "top": 8, - "bottom": 58, - "left": 604, - "right": 729 - } - }, - { - "doc_offset": { - "start": 3164, - "end": 3169 - }, - "page_num": 3, - "text": "query", - "position": { - "top": 127, - "bottom": 176, - "left": 239, - "right": 373 - } - }, - { - "doc_offset": { - "start": 3170, - "end": 3181 - }, - "page_num": 3, - "text": "Submissions", - "position": { - "top": 124, - "bottom": 176, - "left": 401, - "right": 693 - } - }, - { - "doc_offset": { - "start": 3182, - "end": 3183 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 123, - "bottom": 176, - "left": 724, - "right": 749 - } - }, - { - "doc_offset": { - "start": 3184, - "end": 3204 - }, - "page_num": 3, - "text": "submissions(orderBy:", - "position": { - "top": 186, - "bottom": 237, - "left": 329, - "right": 869 - } - }, - { - "doc_offset": { - "start": 3205, - "end": 3216 - }, - "page_num": 3, - "text": "UPDATED_BY,", - "position": { - "top": 184, - "bottom": 239, - "left": 889, - "right": 1190 - } - }, - { - "doc_offset": { - "start": 3217, - "end": 3222 - }, - "page_num": 3, - "text": "desc:", - "position": { - "top": 183, - "bottom": 239, - "left": 1211, - "right": 1352 - } - }, - { - "doc_offset": { - "start": 3223, - "end": 3228 - }, - "page_num": 3, - "text": "true,", - "position": { - "top": 183, - "bottom": 239, - "left": 1373, - "right": 1514 - } - }, - { - "doc_offset": { - "start": 3229, - "end": 3235 - }, - "page_num": 3, - "text": "limit:", - "position": { - "top": 183, - "bottom": 239, - "left": 1535, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 3236, - "end": 3241 - }, - "page_num": 3, - "text": "1000)", - "position": { - "top": 183, - "bottom": 239, - "left": 1726, - "right": 1863 - } - }, - { - "doc_offset": { - "start": 3242, - "end": 3243 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 183, - "bottom": 239, - "left": 1885, - "right": 1915 - } - }, - { - "doc_offset": { - "start": 3244, - "end": 3255 - }, - "page_num": 3, - "text": "submissions", - "position": { - "top": 249, - "bottom": 297, - "left": 436, - "right": 732 - } - }, - { - "doc_offset": { - "start": 3256, - "end": 3257 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 247, - "bottom": 302, - "left": 762, - "right": 786 - } - }, - { - "doc_offset": { - "start": 3258, - "end": 3260 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 310, - "bottom": 356, - "left": 545, - "right": 594 - } - }, - { - "doc_offset": { - "start": 3261, - "end": 3270 - }, - "page_num": 3, - "text": "createdAt", - "position": { - "top": 378, - "bottom": 419, - "left": 545, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3271, - "end": 3281 - }, - "page_num": 3, - "text": "inputFiles", - "position": { - "top": 436, - "bottom": 486, - "left": 545, - "right": 815 - } - }, - { - "doc_offset": { - "start": 3282, - "end": 3283 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 436, - "bottom": 488, - "left": 843, - "right": 868 - } - }, - { - "doc_offset": { - "start": 3284, - "end": 3286 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 498, - "bottom": 539, - "left": 654, - "right": 701 - } - }, - { - "doc_offset": { - "start": 3287, - "end": 3295 - }, - "page_num": 3, - "text": "filename", - "position": { - "top": 562, - "bottom": 605, - "left": 654, - "right": 860 - } - }, - { - "doc_offset": { - "start": 3296, - "end": 3297 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 624, - "bottom": 671, - "left": 542, - "right": 561 - } - }, - { - "doc_offset": { - "start": 3298, - "end": 3305 - }, - "page_num": 3, - "text": "reviews", - "position": { - "top": 687, - "bottom": 733, - "left": 544, - "right": 730 - } - }, - { - "doc_offset": { - "start": 3306, - "end": 3307 - }, - "page_num": 3, - "text": "{", - "position": { - "top": 687, - "bottom": 736, - "left": 762, - "right": 785 - } - }, - { - "doc_offset": { - "start": 3308, - "end": 3317 - }, - "page_num": 3, - "text": "createdBy", - "position": { - "top": 751, - "bottom": 799, - "left": 651, - "right": 891 - } - }, - { - "doc_offset": { - "start": 3318, - "end": 3327 - }, - "page_num": 3, - "text": "startedAt", - "position": { - "top": 813, - "bottom": 860, - "left": 651, - "right": 889 - } - }, - { - "doc_offset": { - "start": 3328, - "end": 3339 - }, - "page_num": 3, - "text": "completedAt", - "position": { - "top": 875, - "bottom": 923, - "left": 653, - "right": 945 - } - }, - { - "doc_offset": { - "start": 3340, - "end": 3348 - }, - "page_num": 3, - "text": "rejected", - "position": { - "top": 939, - "bottom": 983, - "left": 654, - "right": 860 - } - }, - { - "doc_offset": { - "start": 3349, - "end": 3354 - }, - "page_num": 3, - "text": "notes", - "position": { - "top": 1005, - "bottom": 1044, - "left": 651, - "right": 780 - } - }, - { - "doc_offset": { - "start": 3355, - "end": 3365 - }, - "page_num": 3, - "text": "reviewType", - "position": { - "top": 1062, - "bottom": 1112, - "left": 653, - "right": 915 - } - }, - { - "doc_offset": { - "start": 3366, - "end": 3367 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1128, - "bottom": 1172, - "left": 547, - "right": 567 - } - }, - { - "doc_offset": { - "start": 3368, - "end": 3377 - }, - "page_num": 3, - "text": "retrieved", - "position": { - "top": 1187, - "bottom": 1231, - "left": 545, - "right": 782 - } - }, - { - "doc_offset": { - "start": 3378, - "end": 3387 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1251, - "bottom": 1296, - "left": 544, - "right": 783 - } - }, - { - "doc_offset": { - "start": 3388, - "end": 3398 - }, - "page_num": 3, - "text": "workflowId", - "position": { - "top": 1314, - "bottom": 1359, - "left": 542, - "right": 807 - } - }, - { - "doc_offset": { - "start": 3399, - "end": 3400 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1440, - "bottom": 1484, - "left": 333, - "right": 352 - } - }, - { - "doc_offset": { - "start": 3401, - "end": 3402 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1501, - "bottom": 1545, - "left": 222, - "right": 244 - } - }, - { - "doc_offset": { - "start": 3403, - "end": 3404 - }, - "page_num": 3, - "text": "}", - "position": { - "top": 1373, - "bottom": 1420, - "left": 438, - "right": 455 - } - }, - { - "doc_offset": { - "start": 3405, - "end": 3414 - }, - "page_num": 3, - "text": "Scheduled", - "position": { - "top": 1618, - "bottom": 1661, - "left": 212, - "right": 428 - } - }, - { - "doc_offset": { - "start": 3415, - "end": 3422 - }, - "page_num": 3, - "text": "Process", - "position": { - "top": 1618, - "bottom": 1664, - "left": 444, - "right": 614 - } - }, - { - "doc_offset": { - "start": 3423, - "end": 3428 - }, - "page_num": 3, - "text": "Logic", - "position": { - "top": 1617, - "bottom": 1665, - "left": 624, - "right": 743 - } - }, - { - "doc_offset": { - "start": 3429, - "end": 3433 - }, - "page_num": 3, - "text": "This", - "position": { - "top": 1721, - "bottom": 1770, - "left": 213, - "right": 295 - } - }, - { - "doc_offset": { - "start": 3434, - "end": 3436 - }, - "page_num": 3, - "text": "is", - "position": { - "top": 1721, - "bottom": 1770, - "left": 305, - "right": 342 - } - }, - { - "doc_offset": { - "start": 3437, - "end": 3438 - }, - "page_num": 3, - "text": "a", - "position": { - "top": 1721, - "bottom": 1771, - "left": 359, - "right": 385 - } - }, - { - "doc_offset": { - "start": 3439, - "end": 3450 - }, - "page_num": 3, - "text": "heavyweight", - "position": { - "top": 1721, - "bottom": 1771, - "left": 399, - "right": 654 - } - }, - { - "doc_offset": { - "start": 3451, - "end": 3457 - }, - "page_num": 3, - "text": "query.", - "position": { - "top": 1721, - "bottom": 1771, - "left": 664, - "right": 793 - } - }, - { - "doc_offset": { - "start": 3458, - "end": 3469 - }, - "page_num": 3, - "text": "Submissions", - "position": { - "top": 1721, - "bottom": 1773, - "left": 803, - "right": 1057 - } - }, - { - "doc_offset": { - "start": 3470, - "end": 3473 - }, - "page_num": 3, - "text": "are", - "position": { - "top": 1721, - "bottom": 1773, - "left": 1070, - "right": 1134 - } - }, - { - "doc_offset": { - "start": 3474, - "end": 3481 - }, - "page_num": 3, - "text": "ordered", - "position": { - "top": 1721, - "bottom": 1773, - "left": 1151, - "right": 1300 - } - }, - { - "doc_offset": { - "start": 3482, - "end": 3484 - }, - "page_num": 3, - "text": "by", - "position": { - "top": 1723, - "bottom": 1773, - "left": 1316, - "right": 1370 - } - }, - { - "doc_offset": { - "start": 3485, - "end": 3494 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1723, - "bottom": 1771, - "left": 1401, - "right": 1604 - } - }, - { - "doc_offset": { - "start": 3495, - "end": 3506 - }, - "page_num": 3, - "text": "descending,", - "position": { - "top": 1723, - "bottom": 1771, - "left": 1634, - "right": 1883 - } - }, - { - "doc_offset": { - "start": 3507, - "end": 3510 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 1723, - "bottom": 1770, - "left": 1893, - "right": 1968 - } - }, - { - "doc_offset": { - "start": 3511, - "end": 3518 - }, - "page_num": 3, - "text": "results", - "position": { - "top": 1723, - "bottom": 1770, - "left": 1984, - "right": 2121 - } - }, - { - "doc_offset": { - "start": 3519, - "end": 3525 - }, - "page_num": 3, - "text": "should", - "position": { - "top": 1721, - "bottom": 1768, - "left": 2134, - "right": 2266 - } - }, - { - "doc_offset": { - "start": 3526, - "end": 3528 - }, - "page_num": 3, - "text": "be", - "position": { - "top": 1721, - "bottom": 1768, - "left": 2283, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 3529, - "end": 3538 - }, - "page_num": 3, - "text": "paginated", - "position": { - "top": 1784, - "bottom": 1834, - "left": 210, - "right": 403 - } - }, - { - "doc_offset": { - "start": 3539, - "end": 3543 - }, - "page_num": 3, - "text": "such", - "position": { - "top": 1784, - "bottom": 1834, - "left": 424, - "right": 515 - } - }, - { - "doc_offset": { - "start": 3544, - "end": 3548 - }, - "page_num": 3, - "text": "that", - "position": { - "top": 1783, - "bottom": 1834, - "left": 535, - "right": 618 - } - }, - { - "doc_offset": { - "start": 3549, - "end": 3559 - }, - "page_num": 3, - "text": "processing", - "position": { - "top": 1783, - "bottom": 1834, - "left": 628, - "right": 848 - } - }, - { - "doc_offset": { - "start": 3560, - "end": 3563 - }, - "page_num": 3, - "text": "can", - "position": { - "top": 1781, - "bottom": 1834, - "left": 865, - "right": 934 - } - }, - { - "doc_offset": { - "start": 3564, - "end": 3568 - }, - "page_num": 3, - "text": "stop", - "position": { - "top": 1781, - "bottom": 1834, - "left": 955, - "right": 1041 - } - }, - { - "doc_offset": { - "start": 3569, - "end": 3573 - }, - "page_num": 3, - "text": "once", - "position": { - "top": 1781, - "bottom": 1834, - "left": 1062, - "right": 1158 - } - }, - { - "doc_offset": { - "start": 3574, - "end": 3577 - }, - "page_num": 3, - "text": "all", - "position": { - "top": 1781, - "bottom": 1834, - "left": 1177, - "right": 1230 - } - }, - { - "doc_offset": { - "start": 3578, - "end": 3589 - }, - "page_num": 3, - "text": "submissions", - "position": { - "top": 1781, - "bottom": 1833, - "left": 1240, - "right": 1488 - } - }, - { - "doc_offset": { - "start": 3590, - "end": 3594 - }, - "page_num": 3, - "text": "have", - "position": { - "top": 1781, - "bottom": 1833, - "left": 1499, - "right": 1598 - } - }, - { - "doc_offset": { - "start": 3595, - "end": 3599 - }, - "page_num": 3, - "text": "been", - "position": { - "top": 1781, - "bottom": 1833, - "left": 1613, - "right": 1710 - } - }, - { - "doc_offset": { - "start": 3600, - "end": 3609 - }, - "page_num": 3, - "text": "processed", - "position": { - "top": 1783, - "bottom": 1833, - "left": 1730, - "right": 1938 - } - }, - { - "doc_offset": { - "start": 3610, - "end": 3615 - }, - "page_num": 3, - "text": "whose", - "position": { - "top": 1783, - "bottom": 1833, - "left": 1955, - "right": 2085 - } - }, - { - "doc_offset": { - "start": 3616, - "end": 3625 - }, - "page_num": 3, - "text": "updatedAt", - "position": { - "top": 1784, - "bottom": 1833, - "left": 2117, - "right": 2322 - } - }, - { - "doc_offset": { - "start": 3626, - "end": 3630 - }, - "page_num": 3, - "text": "date", - "position": { - "top": 1846, - "bottom": 1892, - "left": 210, - "right": 295 - } - }, - { - "doc_offset": { - "start": 3631, - "end": 3633 - }, - "page_num": 3, - "text": "is", - "position": { - "top": 1844, - "bottom": 1892, - "left": 305, - "right": 340 - } - }, - { - "doc_offset": { - "start": 3634, - "end": 3641 - }, - "page_num": 3, - "text": "greater", - "position": { - "top": 1844, - "bottom": 1892, - "left": 350, - "right": 488 - } - }, - { - "doc_offset": { - "start": 3642, - "end": 3646 - }, - "page_num": 3, - "text": "than", - "position": { - "top": 1844, - "bottom": 1893, - "left": 498, - "right": 585 - } - }, - { - "doc_offset": { - "start": 3647, - "end": 3650 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1843, - "bottom": 1893, - "left": 598, - "right": 660 - } - }, - { - "doc_offset": { - "start": 3651, - "end": 3660 - }, - "page_num": 3, - "text": "timestamp", - "position": { - "top": 1843, - "bottom": 1893, - "left": 670, - "right": 879 - } - }, - { - "doc_offset": { - "start": 3661, - "end": 3663 - }, - "page_num": 3, - "text": "of", - "position": { - "top": 1843, - "bottom": 1893, - "left": 892, - "right": 931 - } - }, - { - "doc_offset": { - "start": 3664, - "end": 3667 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1843, - "bottom": 1893, - "left": 941, - "right": 1005 - } - }, - { - "doc_offset": { - "start": 3668, - "end": 3676 - }, - "page_num": 3, - "text": "previous", - "position": { - "top": 1843, - "bottom": 1893, - "left": 1015, - "right": 1181 - } - }, - { - "doc_offset": { - "start": 3677, - "end": 3680 - }, - "page_num": 3, - "text": "run", - "position": { - "top": 1843, - "bottom": 1893, - "left": 1191, - "right": 1256 - } - }, - { - "doc_offset": { - "start": 3681, - "end": 3683 - }, - "page_num": 3, - "text": "of", - "position": { - "top": 1843, - "bottom": 1893, - "left": 1269, - "right": 1307 - } - }, - { - "doc_offset": { - "start": 3684, - "end": 3687 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 1843, - "bottom": 1893, - "left": 1317, - "right": 1382 - } - }, - { - "doc_offset": { - "start": 3688, - "end": 3700 - }, - "page_num": 3, - "text": "integration.", - "position": { - "top": 1844, - "bottom": 1893, - "left": 1392, - "right": 1615 - } - }, - { - "doc_offset": { - "start": 3701, - "end": 3705 - }, - "page_num": 3, - "text": "Data", - "position": { - "top": 1950, - "bottom": 1996, - "left": 212, - "right": 308 - } - }, - { - "doc_offset": { - "start": 3706, - "end": 3720 - }, - "page_num": 3, - "text": "Reconciliation", - "position": { - "top": 1950, - "bottom": 1996, - "left": 320, - "right": 616 - } - }, - { - "doc_offset": { - "start": 3721, - "end": 3724 - }, - "page_num": 3, - "text": "The", - "position": { - "top": 2055, - "bottom": 2102, - "left": 212, - "right": 285 - } - }, - { - "doc_offset": { - "start": 3725, - "end": 3731 - }, - "page_num": 3, - "text": "output", - "position": { - "top": 2055, - "bottom": 2102, - "left": 299, - "right": 429 - } - }, - { - "doc_offset": { - "start": 3732, - "end": 3736 - }, - "page_num": 3, - "text": "will", - "position": { - "top": 2053, - "bottom": 2104, - "left": 441, - "right": 510 - } - }, - { - "doc_offset": { - "start": 3737, - "end": 3744 - }, - "page_num": 3, - "text": "include", - "position": { - "top": 2053, - "bottom": 2104, - "left": 520, - "right": 666 - } - }, - { - "doc_offset": { - "start": 3745, - "end": 3748 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2053, - "bottom": 2104, - "left": 679, - "right": 744 - } - }, - { - "doc_offset": { - "start": 3749, - "end": 3756 - }, - "page_num": 3, - "text": "primary", - "position": { - "top": 2053, - "bottom": 2105, - "left": 759, - "right": 911 - } - }, - { - "doc_offset": { - "start": 3757, - "end": 3760 - }, - "page_num": 3, - "text": "key", - "position": { - "top": 2053, - "bottom": 2105, - "left": 921, - "right": 997 - } - }, - { - "doc_offset": { - "start": 3761, - "end": 3763 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1027, - "right": 1073 - } - }, - { - "doc_offset": { - "start": 3764, - "end": 3770 - }, - "page_num": 3, - "text": "needed", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1100, - "right": 1247 - } - }, - { - "doc_offset": { - "start": 3771, - "end": 3773 - }, - "page_num": 3, - "text": "to", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1262, - "right": 1305 - } - }, - { - "doc_offset": { - "start": 3774, - "end": 3780 - }, - "page_num": 3, - "text": "update", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1322, - "right": 1459 - } - }, - { - "doc_offset": { - "start": 3781, - "end": 3789 - }, - "page_num": 3, - "text": "existing", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1476, - "right": 1628 - } - }, - { - "doc_offset": { - "start": 3790, - "end": 3794 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 2053, - "bottom": 2105, - "left": 1643, - "right": 1744 - } - }, - { - "doc_offset": { - "start": 3795, - "end": 3798 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 2053, - "bottom": 2104, - "left": 1754, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 3799, - "end": 3805 - }, - "page_num": 3, - "text": "insert", - "position": { - "top": 2053, - "bottom": 2104, - "left": 1845, - "right": 1961 - } - }, - { - "doc_offset": { - "start": 3806, - "end": 3809 - }, - "page_num": 3, - "text": "new", - "position": { - "top": 2053, - "bottom": 2104, - "left": 1971, - "right": 2047 - } - }, - { - "doc_offset": { - "start": 3810, - "end": 3814 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 2053, - "bottom": 2104, - "left": 2067, - "right": 2168 - } - }, - { - "doc_offset": { - "start": 3815, - "end": 3819 - }, - "page_num": 3, - "text": "into", - "position": { - "top": 2053, - "bottom": 2102, - "left": 2178, - "right": 2254 - } - }, - { - "doc_offset": { - "start": 3820, - "end": 3823 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2053, - "bottom": 2102, - "left": 2272, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 3824, - "end": 3831 - }, - "page_num": 3, - "text": "Metrics", - "position": { - "top": 2116, - "bottom": 2161, - "left": 210, - "right": 356 - } - }, - { - "doc_offset": { - "start": 3832, - "end": 3841 - }, - "page_num": 3, - "text": "database.", - "position": { - "top": 2116, - "bottom": 2162, - "left": 365, - "right": 561 - } - }, - { - "doc_offset": { - "start": 3842, - "end": 3845 - }, - "page_num": 3, - "text": "1.4", - "position": { - "top": 2305, - "bottom": 2360, - "left": 219, - "right": 302 - } - }, - { - "doc_offset": { - "start": 3846, - "end": 3856 - }, - "page_num": 3, - "text": "Submission", - "position": { - "top": 2305, - "bottom": 2361, - "left": 363, - "right": 714 - } - }, - { - "doc_offset": { - "start": 3857, - "end": 3861 - }, - "page_num": 3, - "text": "File", - "position": { - "top": 2305, - "bottom": 2361, - "left": 744, - "right": 850 - } - }, - { - "doc_offset": { - "start": 3862, - "end": 3868 - }, - "page_num": 3, - "text": "Column", - "position": { - "top": 2466, - "bottom": 2507, - "left": 260, - "right": 415 - } - }, - { - "doc_offset": { - "start": 3869, - "end": 3873 - }, - "page_num": 3, - "text": "Type", - "position": { - "top": 2466, - "bottom": 2512, - "left": 858, - "right": 946 - } - }, - { - "doc_offset": { - "start": 3874, - "end": 3881 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 2463, - "bottom": 2513, - "left": 1156, - "right": 1345 - } - }, - { - "doc_offset": { - "start": 3882, - "end": 3888 - }, - "page_num": 3, - "text": "Source", - "position": { - "top": 2464, - "bottom": 2513, - "left": 1358, - "right": 1501 - } - }, - { - "doc_offset": { - "start": 3889, - "end": 3891 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 2563, - "bottom": 2603, - "left": 257, - "right": 292 - } - }, - { - "doc_offset": { - "start": 3892, - "end": 3895 - }, - "page_num": 3, - "text": "int", - "position": { - "top": 2565, - "bottom": 2602, - "left": 850, - "right": 903 - } - }, - { - "doc_offset": { - "start": 3896, - "end": 3907 - }, - "page_num": 3, - "text": "submission.", - "position": { - "top": 2568, - "bottom": 2609, - "left": 1171, - "right": 1408 - } - }, - { - "doc_offset": { - "start": 3908, - "end": 3920 - }, - "page_num": 3, - "text": "inputFile.id", - "position": { - "top": 2566, - "bottom": 2611, - "left": 1418, - "right": 1684 - } - }, - { - "doc_offset": { - "start": 3921, - "end": 3925 - }, - "page_num": 3, - "text": "name", - "position": { - "top": 2666, - "bottom": 2699, - "left": 259, - "right": 362 - } - }, - { - "doc_offset": { - "start": 3926, - "end": 3929 - }, - "page_num": 3, - "text": "str", - "position": { - "top": 2661, - "bottom": 2698, - "left": 855, - "right": 905 - } - }, - { - "doc_offset": { - "start": 3930, - "end": 3941 - }, - "page_num": 3, - "text": "submission.", - "position": { - "top": 2662, - "bottom": 2701, - "left": 1171, - "right": 1408 - } - }, - { - "doc_offset": { - "start": 3942, - "end": 3960 - }, - "page_num": 3, - "text": "inputFile.filename", - "position": { - "top": 2661, - "bottom": 2701, - "left": 1416, - "right": 1816 - } - }, - { - "doc_offset": { - "start": 3961, - "end": 3974 - }, - "page_num": 3, - "text": "submission_id", - "position": { - "top": 2752, - "bottom": 2797, - "left": 260, - "right": 535 - } - }, - { - "doc_offset": { - "start": 3975, - "end": 3978 - }, - "page_num": 3, - "text": "int", - "position": { - "top": 2751, - "bottom": 2791, - "left": 850, - "right": 903 - } - }, - { - "doc_offset": { - "start": 3979, - "end": 3992 - }, - "page_num": 3, - "text": "submission.id", - "position": { - "top": 2754, - "bottom": 2791, - "left": 1173, - "right": 1458 - } - }, - { - "doc_offset": { - "start": 3993, - "end": 3996 - }, - "page_num": 3, - "text": "See", - "position": { - "top": 2880, - "bottom": 2924, - "left": 212, - "right": 283 - } - }, - { - "doc_offset": { - "start": 3997, - "end": 4000 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 2880, - "bottom": 2926, - "left": 293, - "right": 361 - } - }, - { - "doc_offset": { - "start": 4001, - "end": 4011 - }, - "page_num": 3, - "text": "Submission", - "position": { - "top": 2878, - "bottom": 2926, - "left": 371, - "right": 594 - } - }, - { - "doc_offset": { - "start": 4012, - "end": 4021 - }, - "page_num": 3, - "text": "section's", - "position": { - "top": 2877, - "bottom": 2927, - "left": 607, - "right": 785 - } - }, - { - "doc_offset": { - "start": 4022, - "end": 4029 - }, - "page_num": 3, - "text": "example", - "position": { - "top": 2878, - "bottom": 2929, - "left": 796, - "right": 966 - } - }, - { - "doc_offset": { - "start": 4030, - "end": 4037 - }, - "page_num": 3, - "text": "GraphQL", - "position": { - "top": 2880, - "bottom": 2930, - "left": 977, - "right": 1154 - } - }, - { - "doc_offset": { - "start": 4038, - "end": 4044 - }, - "page_num": 3, - "text": "query.", - "position": { - "top": 2881, - "bottom": 2930, - "left": 1168, - "right": 1287 - } - }, - { - "doc_offset": { - "start": 4045, - "end": 4049 - }, - "page_num": 3, - "text": "Data", - "position": { - "top": 2986, - "bottom": 3032, - "left": 212, - "right": 306 - } - }, - { - "doc_offset": { - "start": 4050, - "end": 4064 - }, - "page_num": 3, - "text": "Reconciliation", - "position": { - "top": 2986, - "bottom": 3032, - "left": 322, - "right": 616 - } - }, - { - "doc_offset": { - "start": 4065, - "end": 4068 - }, - "page_num": 3, - "text": "The", - "position": { - "top": 3088, - "bottom": 3136, - "left": 212, - "right": 283 - } - }, - { - "doc_offset": { - "start": 4069, - "end": 4075 - }, - "page_num": 3, - "text": "output", - "position": { - "top": 3088, - "bottom": 3136, - "left": 297, - "right": 432 - } - }, - { - "doc_offset": { - "start": 4076, - "end": 4080 - }, - "page_num": 3, - "text": "will", - "position": { - "top": 3088, - "bottom": 3138, - "left": 444, - "right": 510 - } - }, - { - "doc_offset": { - "start": 4081, - "end": 4088 - }, - "page_num": 3, - "text": "include", - "position": { - "top": 3088, - "bottom": 3138, - "left": 520, - "right": 664 - } - }, - { - "doc_offset": { - "start": 4089, - "end": 4092 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 3088, - "bottom": 3138, - "left": 679, - "right": 744 - } - }, - { - "doc_offset": { - "start": 4093, - "end": 4100 - }, - "page_num": 3, - "text": "primary", - "position": { - "top": 3088, - "bottom": 3139, - "left": 759, - "right": 911 - } - }, - { - "doc_offset": { - "start": 4101, - "end": 4104 - }, - "page_num": 3, - "text": "key", - "position": { - "top": 3088, - "bottom": 3139, - "left": 921, - "right": 997 - } - }, - { - "doc_offset": { - "start": 4105, - "end": 4107 - }, - "page_num": 3, - "text": "id", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1027, - "right": 1073 - } - }, - { - "doc_offset": { - "start": 4108, - "end": 4114 - }, - "page_num": 3, - "text": "needed", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1100, - "right": 1249 - } - }, - { - "doc_offset": { - "start": 4115, - "end": 4117 - }, - "page_num": 3, - "text": "to", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1263, - "right": 1305 - } - }, - { - "doc_offset": { - "start": 4118, - "end": 4124 - }, - "page_num": 3, - "text": "update", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1322, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 4125, - "end": 4133 - }, - "page_num": 3, - "text": "existing", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1475, - "right": 1630 - } - }, - { - "doc_offset": { - "start": 4134, - "end": 4138 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1640, - "right": 1743 - } - }, - { - "doc_offset": { - "start": 4139, - "end": 4142 - }, - "page_num": 3, - "text": "and", - "position": { - "top": 3088, - "bottom": 3139, - "left": 1756, - "right": 1829 - } - }, - { - "doc_offset": { - "start": 4143, - "end": 4149 - }, - "page_num": 3, - "text": "insert", - "position": { - "top": 3088, - "bottom": 3138, - "left": 1843, - "right": 1959 - } - }, - { - "doc_offset": { - "start": 4150, - "end": 4153 - }, - "page_num": 3, - "text": "new", - "position": { - "top": 3088, - "bottom": 3138, - "left": 1969, - "right": 2045 - } - }, - { - "doc_offset": { - "start": 4154, - "end": 4158 - }, - "page_num": 3, - "text": "rows", - "position": { - "top": 3088, - "bottom": 3138, - "left": 2068, - "right": 2167 - } - }, - { - "doc_offset": { - "start": 4159, - "end": 4163 - }, - "page_num": 3, - "text": "into", - "position": { - "top": 3088, - "bottom": 3138, - "left": 2177, - "right": 2257 - } - }, - { - "doc_offset": { - "start": 4164, - "end": 4167 - }, - "page_num": 3, - "text": "the", - "position": { - "top": 3088, - "bottom": 3136, - "left": 2270, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 4168, - "end": 4175 - }, - "page_num": 3, - "text": "Metrics", - "position": { - "top": 3152, - "bottom": 3195, - "left": 213, - "right": 355 - } - }, - { - "doc_offset": { - "start": 4176, - "end": 4185 - }, - "page_num": 3, - "text": "database.", - "position": { - "top": 3152, - "bottom": 3195, - "left": 368, - "right": 561 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_4_text.txt b/tests/data/etloutput/4289/107458/101157/page_4_text.txt deleted file mode 100644 index 3aea74f..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_4_text.txt +++ /dev/null @@ -1,22 +0,0 @@ -1.5 Reviewer -Column Type GraphQL Source -id int userSnapshot.id -name str userSnapshot . name -email str userSnapshot. email -enabled bool userSnapshot . enabled -Example GraphQL Query -query Users { -userSnapshot(orderBy: ID, desc: false, limit: 1000) { -results { -id -name -email -enabled -} -} -} -Scheduled Process Logic -This is a lightweight query. All reviewers will be pulled every time the integration is run. -Data Reconciliation -The output will include the primary key id needed to update existing rows and insert new rows into the -Metrics database. \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_4_tokens.json b/tests/data/etloutput/4289/107458/101157/page_4_tokens.json deleted file mode 100644 index 8419131..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_4_tokens.json +++ /dev/null @@ -1,1220 +0,0 @@ -[ - { - "doc_offset": { - "start": 4186, - "end": 4189 - }, - "page_num": 4, - "text": "1.5", - "position": { - "top": 51, - "bottom": 105, - "left": 220, - "right": 299 - } - }, - { - "doc_offset": { - "start": 4190, - "end": 4198 - }, - "page_num": 4, - "text": "Reviewer", - "position": { - "top": 55, - "bottom": 105, - "left": 363, - "right": 657 - } - }, - { - "doc_offset": { - "start": 4199, - "end": 4205 - }, - "page_num": 4, - "text": "Column", - "position": { - "top": 211, - "bottom": 253, - "left": 260, - "right": 416 - } - }, - { - "doc_offset": { - "start": 4206, - "end": 4210 - }, - "page_num": 4, - "text": "Type", - "position": { - "top": 211, - "bottom": 257, - "left": 799, - "right": 891 - } - }, - { - "doc_offset": { - "start": 4211, - "end": 4218 - }, - "page_num": 4, - "text": "GraphQL", - "position": { - "top": 210, - "bottom": 257, - "left": 1193, - "right": 1378 - } - }, - { - "doc_offset": { - "start": 4219, - "end": 4225 - }, - "page_num": 4, - "text": "Source", - "position": { - "top": 211, - "bottom": 257, - "left": 1393, - "right": 1538 - } - }, - { - "doc_offset": { - "start": 4226, - "end": 4228 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 312, - "bottom": 350, - "left": 259, - "right": 289 - } - }, - { - "doc_offset": { - "start": 4229, - "end": 4232 - }, - "page_num": 4, - "text": "int", - "position": { - "top": 309, - "bottom": 355, - "left": 790, - "right": 845 - } - }, - { - "doc_offset": { - "start": 4233, - "end": 4248 - }, - "page_num": 4, - "text": "userSnapshot.id", - "position": { - "top": 313, - "bottom": 355, - "left": 1204, - "right": 1540 - } - }, - { - "doc_offset": { - "start": 4249, - "end": 4253 - }, - "page_num": 4, - "text": "name", - "position": { - "top": 411, - "bottom": 446, - "left": 259, - "right": 363 - } - }, - { - "doc_offset": { - "start": 4254, - "end": 4257 - }, - "page_num": 4, - "text": "str", - "position": { - "top": 406, - "bottom": 444, - "left": 795, - "right": 845 - } - }, - { - "doc_offset": { - "start": 4258, - "end": 4270 - }, - "page_num": 4, - "text": "userSnapshot", - "position": { - "top": 408, - "bottom": 448, - "left": 1206, - "right": 1468 - } - }, - { - "doc_offset": { - "start": 4271, - "end": 4272 - }, - "page_num": 4, - "text": ".", - "position": { - "top": 408, - "bottom": 448, - "left": 1475, - "right": 1487 - } - }, - { - "doc_offset": { - "start": 4273, - "end": 4277 - }, - "page_num": 4, - "text": "name", - "position": { - "top": 408, - "bottom": 448, - "left": 1494, - "right": 1585 - } - }, - { - "doc_offset": { - "start": 4278, - "end": 4283 - }, - "page_num": 4, - "text": "email", - "position": { - "top": 499, - "bottom": 538, - "left": 259, - "right": 363 - } - }, - { - "doc_offset": { - "start": 4284, - "end": 4287 - }, - "page_num": 4, - "text": "str", - "position": { - "top": 499, - "bottom": 537, - "left": 795, - "right": 846 - } - }, - { - "doc_offset": { - "start": 4288, - "end": 4301 - }, - "page_num": 4, - "text": "userSnapshot.", - "position": { - "top": 499, - "bottom": 539, - "left": 1204, - "right": 1487 - } - }, - { - "doc_offset": { - "start": 4302, - "end": 4307 - }, - "page_num": 4, - "text": "email", - "position": { - "top": 498, - "bottom": 539, - "left": 1495, - "right": 1607 - } - }, - { - "doc_offset": { - "start": 4308, - "end": 4315 - }, - "page_num": 4, - "text": "enabled", - "position": { - "top": 591, - "bottom": 631, - "left": 259, - "right": 411 - } - }, - { - "doc_offset": { - "start": 4316, - "end": 4320 - }, - "page_num": 4, - "text": "bool", - "position": { - "top": 585, - "bottom": 633, - "left": 792, - "right": 883 - } - }, - { - "doc_offset": { - "start": 4321, - "end": 4333 - }, - "page_num": 4, - "text": "userSnapshot", - "position": { - "top": 592, - "bottom": 633, - "left": 1204, - "right": 1465 - } - }, - { - "doc_offset": { - "start": 4334, - "end": 4335 - }, - "page_num": 4, - "text": ".", - "position": { - "top": 591, - "bottom": 633, - "left": 1475, - "right": 1487 - } - }, - { - "doc_offset": { - "start": 4336, - "end": 4343 - }, - "page_num": 4, - "text": "enabled", - "position": { - "top": 591, - "bottom": 631, - "left": 1497, - "right": 1651 - } - }, - { - "doc_offset": { - "start": 4344, - "end": 4351 - }, - "page_num": 4, - "text": "Example", - "position": { - "top": 719, - "bottom": 767, - "left": 212, - "right": 391 - } - }, - { - "doc_offset": { - "start": 4352, - "end": 4359 - }, - "page_num": 4, - "text": "GraphQL", - "position": { - "top": 717, - "bottom": 767, - "left": 402, - "right": 588 - } - }, - { - "doc_offset": { - "start": 4360, - "end": 4365 - }, - "page_num": 4, - "text": "Query", - "position": { - "top": 717, - "bottom": 769, - "left": 603, - "right": 729 - } - }, - { - "doc_offset": { - "start": 4366, - "end": 4371 - }, - "page_num": 4, - "text": "query", - "position": { - "top": 836, - "bottom": 885, - "left": 239, - "right": 373 - } - }, - { - "doc_offset": { - "start": 4372, - "end": 4377 - }, - "page_num": 4, - "text": "Users", - "position": { - "top": 835, - "bottom": 885, - "left": 396, - "right": 537 - } - }, - { - "doc_offset": { - "start": 4378, - "end": 4379 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 835, - "bottom": 885, - "left": 564, - "right": 587 - } - }, - { - "doc_offset": { - "start": 4380, - "end": 4401 - }, - "page_num": 4, - "text": "userSnapshot(orderBy:", - "position": { - "top": 898, - "bottom": 945, - "left": 326, - "right": 895 - } - }, - { - "doc_offset": { - "start": 4402, - "end": 4405 - }, - "page_num": 4, - "text": "ID,", - "position": { - "top": 892, - "bottom": 949, - "left": 919, - "right": 1002 - } - }, - { - "doc_offset": { - "start": 4406, - "end": 4411 - }, - "page_num": 4, - "text": "desc:", - "position": { - "top": 892, - "bottom": 949, - "left": 1024, - "right": 1163 - } - }, - { - "doc_offset": { - "start": 4412, - "end": 4418 - }, - "page_num": 4, - "text": "false,", - "position": { - "top": 892, - "bottom": 949, - "left": 1189, - "right": 1349 - } - }, - { - "doc_offset": { - "start": 4419, - "end": 4425 - }, - "page_num": 4, - "text": "limit:", - "position": { - "top": 890, - "bottom": 948, - "left": 1373, - "right": 1538 - } - }, - { - "doc_offset": { - "start": 4426, - "end": 4431 - }, - "page_num": 4, - "text": "1000)", - "position": { - "top": 890, - "bottom": 948, - "left": 1564, - "right": 1703 - } - }, - { - "doc_offset": { - "start": 4432, - "end": 4433 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 892, - "bottom": 948, - "left": 1724, - "right": 1753 - } - }, - { - "doc_offset": { - "start": 4434, - "end": 4441 - }, - "page_num": 4, - "text": "results", - "position": { - "top": 959, - "bottom": 1011, - "left": 436, - "right": 626 - } - }, - { - "doc_offset": { - "start": 4442, - "end": 4443 - }, - "page_num": 4, - "text": "{", - "position": { - "top": 958, - "bottom": 1009, - "left": 654, - "right": 681 - } - }, - { - "doc_offset": { - "start": 4444, - "end": 4446 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 1021, - "bottom": 1067, - "left": 545, - "right": 594 - } - }, - { - "doc_offset": { - "start": 4447, - "end": 4451 - }, - "page_num": 4, - "text": "name", - "position": { - "top": 1088, - "bottom": 1127, - "left": 542, - "right": 644 - } - }, - { - "doc_offset": { - "start": 4452, - "end": 4457 - }, - "page_num": 4, - "text": "email", - "position": { - "top": 1148, - "bottom": 1191, - "left": 544, - "right": 674 - } - }, - { - "doc_offset": { - "start": 4458, - "end": 4465 - }, - "page_num": 4, - "text": "enabled", - "position": { - "top": 1210, - "bottom": 1253, - "left": 542, - "right": 729 - } - }, - { - "doc_offset": { - "start": 4466, - "end": 4467 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1334, - "bottom": 1382, - "left": 330, - "right": 348 - } - }, - { - "doc_offset": { - "start": 4468, - "end": 4469 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1395, - "bottom": 1440, - "left": 223, - "right": 240 - } - }, - { - "doc_offset": { - "start": 4470, - "end": 4471 - }, - "page_num": 4, - "text": "}", - "position": { - "top": 1269, - "bottom": 1319, - "left": 436, - "right": 456 - } - }, - { - "doc_offset": { - "start": 4472, - "end": 4481 - }, - "page_num": 4, - "text": "Scheduled", - "position": { - "top": 1516, - "bottom": 1558, - "left": 212, - "right": 429 - } - }, - { - "doc_offset": { - "start": 4482, - "end": 4489 - }, - "page_num": 4, - "text": "Process", - "position": { - "top": 1513, - "bottom": 1561, - "left": 441, - "right": 613 - } - }, - { - "doc_offset": { - "start": 4490, - "end": 4495 - }, - "page_num": 4, - "text": "Logic", - "position": { - "top": 1513, - "bottom": 1562, - "left": 624, - "right": 740 - } - }, - { - "doc_offset": { - "start": 4496, - "end": 4500 - }, - "page_num": 4, - "text": "This", - "position": { - "top": 1619, - "bottom": 1667, - "left": 212, - "right": 287 - } - }, - { - "doc_offset": { - "start": 4501, - "end": 4503 - }, - "page_num": 4, - "text": "is", - "position": { - "top": 1619, - "bottom": 1668, - "left": 299, - "right": 335 - } - }, - { - "doc_offset": { - "start": 4504, - "end": 4505 - }, - "page_num": 4, - "text": "a", - "position": { - "top": 1618, - "bottom": 1668, - "left": 346, - "right": 365 - } - }, - { - "doc_offset": { - "start": 4506, - "end": 4517 - }, - "page_num": 4, - "text": "lightweight", - "position": { - "top": 1618, - "bottom": 1668, - "left": 376, - "right": 594 - } - }, - { - "doc_offset": { - "start": 4518, - "end": 4524 - }, - "page_num": 4, - "text": "query.", - "position": { - "top": 1618, - "bottom": 1668, - "left": 604, - "right": 727 - } - }, - { - "doc_offset": { - "start": 4525, - "end": 4528 - }, - "page_num": 4, - "text": "All", - "position": { - "top": 1618, - "bottom": 1670, - "left": 739, - "right": 785 - } - }, - { - "doc_offset": { - "start": 4529, - "end": 4538 - }, - "page_num": 4, - "text": "reviewers", - "position": { - "top": 1617, - "bottom": 1670, - "left": 796, - "right": 984 - } - }, - { - "doc_offset": { - "start": 4539, - "end": 4543 - }, - "page_num": 4, - "text": "will", - "position": { - "top": 1617, - "bottom": 1670, - "left": 994, - "right": 1057 - } - }, - { - "doc_offset": { - "start": 4544, - "end": 4546 - }, - "page_num": 4, - "text": "be", - "position": { - "top": 1617, - "bottom": 1670, - "left": 1067, - "right": 1117 - } - }, - { - "doc_offset": { - "start": 4547, - "end": 4553 - }, - "page_num": 4, - "text": "pulled", - "position": { - "top": 1617, - "bottom": 1670, - "left": 1128, - "right": 1252 - } - }, - { - "doc_offset": { - "start": 4554, - "end": 4559 - }, - "page_num": 4, - "text": "every", - "position": { - "top": 1617, - "bottom": 1670, - "left": 1262, - "right": 1366 - } - }, - { - "doc_offset": { - "start": 4560, - "end": 4564 - }, - "page_num": 4, - "text": "time", - "position": { - "top": 1617, - "bottom": 1670, - "left": 1376, - "right": 1464 - } - }, - { - "doc_offset": { - "start": 4565, - "end": 4568 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1617, - "bottom": 1670, - "left": 1474, - "right": 1537 - } - }, - { - "doc_offset": { - "start": 4569, - "end": 4580 - }, - "page_num": 4, - "text": "integration", - "position": { - "top": 1618, - "bottom": 1670, - "left": 1548, - "right": 1756 - } - }, - { - "doc_offset": { - "start": 4581, - "end": 4583 - }, - "page_num": 4, - "text": "is", - "position": { - "top": 1618, - "bottom": 1670, - "left": 1766, - "right": 1799 - } - }, - { - "doc_offset": { - "start": 4584, - "end": 4588 - }, - "page_num": 4, - "text": "run.", - "position": { - "top": 1618, - "bottom": 1668, - "left": 1810, - "right": 1891 - } - }, - { - "doc_offset": { - "start": 4589, - "end": 4593 - }, - "page_num": 4, - "text": "Data", - "position": { - "top": 1725, - "bottom": 1771, - "left": 212, - "right": 309 - } - }, - { - "doc_offset": { - "start": 4594, - "end": 4608 - }, - "page_num": 4, - "text": "Reconciliation", - "position": { - "top": 1725, - "bottom": 1771, - "left": 318, - "right": 614 - } - }, - { - "doc_offset": { - "start": 4609, - "end": 4612 - }, - "page_num": 4, - "text": "The", - "position": { - "top": 1829, - "bottom": 1879, - "left": 213, - "right": 283 - } - }, - { - "doc_offset": { - "start": 4613, - "end": 4619 - }, - "page_num": 4, - "text": "output", - "position": { - "top": 1829, - "bottom": 1879, - "left": 297, - "right": 432 - } - }, - { - "doc_offset": { - "start": 4620, - "end": 4624 - }, - "page_num": 4, - "text": "will", - "position": { - "top": 1827, - "bottom": 1879, - "left": 444, - "right": 507 - } - }, - { - "doc_offset": { - "start": 4625, - "end": 4632 - }, - "page_num": 4, - "text": "include", - "position": { - "top": 1827, - "bottom": 1879, - "left": 518, - "right": 667 - } - }, - { - "doc_offset": { - "start": 4633, - "end": 4636 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1827, - "bottom": 1879, - "left": 679, - "right": 746 - } - }, - { - "doc_offset": { - "start": 4637, - "end": 4644 - }, - "page_num": 4, - "text": "primary", - "position": { - "top": 1827, - "bottom": 1879, - "left": 760, - "right": 912 - } - }, - { - "doc_offset": { - "start": 4645, - "end": 4648 - }, - "page_num": 4, - "text": "key", - "position": { - "top": 1827, - "bottom": 1879, - "left": 924, - "right": 997 - } - }, - { - "doc_offset": { - "start": 4649, - "end": 4651 - }, - "page_num": 4, - "text": "id", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1025, - "right": 1075 - } - }, - { - "doc_offset": { - "start": 4652, - "end": 4658 - }, - "page_num": 4, - "text": "needed", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1100, - "right": 1249 - } - }, - { - "doc_offset": { - "start": 4659, - "end": 4661 - }, - "page_num": 4, - "text": "to", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1263, - "right": 1306 - } - }, - { - "doc_offset": { - "start": 4662, - "end": 4668 - }, - "page_num": 4, - "text": "update", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1320, - "right": 1464 - } - }, - { - "doc_offset": { - "start": 4669, - "end": 4677 - }, - "page_num": 4, - "text": "existing", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1476, - "right": 1630 - } - }, - { - "doc_offset": { - "start": 4678, - "end": 4682 - }, - "page_num": 4, - "text": "rows", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1644, - "right": 1746 - } - }, - { - "doc_offset": { - "start": 4683, - "end": 4686 - }, - "page_num": 4, - "text": "and", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1759, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 4687, - "end": 4693 - }, - "page_num": 4, - "text": "insert", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1845, - "right": 1959 - } - }, - { - "doc_offset": { - "start": 4694, - "end": 4697 - }, - "page_num": 4, - "text": "new", - "position": { - "top": 1827, - "bottom": 1879, - "left": 1971, - "right": 2048 - } - }, - { - "doc_offset": { - "start": 4698, - "end": 4702 - }, - "page_num": 4, - "text": "rows", - "position": { - "top": 1827, - "bottom": 1879, - "left": 2068, - "right": 2171 - } - }, - { - "doc_offset": { - "start": 4703, - "end": 4707 - }, - "page_num": 4, - "text": "into", - "position": { - "top": 1827, - "bottom": 1879, - "left": 2181, - "right": 2259 - } - }, - { - "doc_offset": { - "start": 4708, - "end": 4711 - }, - "page_num": 4, - "text": "the", - "position": { - "top": 1827, - "bottom": 1879, - "left": 2273, - "right": 2340 - } - }, - { - "doc_offset": { - "start": 4712, - "end": 4719 - }, - "page_num": 4, - "text": "Metrics", - "position": { - "top": 1892, - "bottom": 1935, - "left": 213, - "right": 355 - } - }, - { - "doc_offset": { - "start": 4720, - "end": 4729 - }, - "page_num": 4, - "text": "database.", - "position": { - "top": 1892, - "bottom": 1935, - "left": 368, - "right": 564 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_5_text.txt b/tests/data/etloutput/4289/107458/101157/page_5_text.txt deleted file mode 100644 index c7e9556..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_5_text.txt +++ /dev/null @@ -1,27 +0,0 @@ -1.6 Prediction -Column Type Result File Source -id uuid Generated by integration5 -label str Prediction. Label 6,7 -predicted_value str Prediction. Text 8,7 -reviewed_value str Prediction. Text 8,7 -submission_file_id int Prediction. Document. Id 7 -model_id int Prediction. Model. Id 7 -5 Predictions do not have a system-assigned unique identifier. Recommended that the integration pulling this data -generates a unique UUIDv7 for each prediction. -6 For performance reasons, this column should have an index. Depending upon the DBMS, this column may need to -be normalized out, hashed, or otherwise converted to an indexable type. -7 Based on the Result File classes in the Indico Toolkit (available in Python and C# versions). -8 As predictions do not have a system-assigned unique identifier, predicted values and reviewed values must be -matched by similarity within the integration. An example of doing so is available in the Indico-developed -groundtruth program. -Scheduled Process Logic -This is a heavyweight query tied to submissions. Because predictions have no system-assigned unique -identifier, and the identifier assigned by the integration is not stable, predictions must be pulled only once -per submission. This should occur at the terminal state of the submission just before it's omitted from future -processing: i.e. when the submission is marked as retrieved. Once a submission is marked as retrieved, -there should be no further updates to the submission resetting its updatedAt attribute, therefore it will be -omitted from all future runs of the integration. -Data Reconciliation -The output does not include a primary key needed to update existing rows. As such it will only contain new -rows to be inserted into the Metrics database. -formatted by Markdeep 1.17 \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/page_5_tokens.json b/tests/data/etloutput/4289/107458/101157/page_5_tokens.json deleted file mode 100644 index 5cb7290..0000000 --- a/tests/data/etloutput/4289/107458/101157/page_5_tokens.json +++ /dev/null @@ -1,3796 +0,0 @@ -[ - { - "doc_offset": { - "start": 4730, - "end": 4733 - }, - "page_num": 5, - "text": "1.6", - "position": { - "top": 136, - "bottom": 193, - "left": 220, - "right": 302 - } - }, - { - "doc_offset": { - "start": 4734, - "end": 4744 - }, - "page_num": 5, - "text": "Prediction", - "position": { - "top": 137, - "bottom": 190, - "left": 362, - "right": 676 - } - }, - { - "doc_offset": { - "start": 4745, - "end": 4751 - }, - "page_num": 5, - "text": "Column", - "position": { - "top": 296, - "bottom": 336, - "left": 262, - "right": 415 - } - }, - { - "doc_offset": { - "start": 4752, - "end": 4756 - }, - "page_num": 5, - "text": "Type", - "position": { - "top": 296, - "bottom": 342, - "left": 1015, - "right": 1107 - } - }, - { - "doc_offset": { - "start": 4757, - "end": 4763 - }, - "page_num": 5, - "text": "Result", - "position": { - "top": 295, - "bottom": 339, - "left": 1328, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 4764, - "end": 4768 - }, - "page_num": 5, - "text": "File", - "position": { - "top": 295, - "bottom": 338, - "left": 1471, - "right": 1542 - } - }, - { - "doc_offset": { - "start": 4769, - "end": 4775 - }, - "page_num": 5, - "text": "Source", - "position": { - "top": 295, - "bottom": 339, - "left": 1561, - "right": 1704 - } - }, - { - "doc_offset": { - "start": 4776, - "end": 4778 - }, - "page_num": 5, - "text": "id", - "position": { - "top": 403, - "bottom": 439, - "left": 259, - "right": 289 - } - }, - { - "doc_offset": { - "start": 4779, - "end": 4783 - }, - "page_num": 5, - "text": "uuid", - "position": { - "top": 403, - "bottom": 442, - "left": 1009, - "right": 1091 - } - }, - { - "doc_offset": { - "start": 4784, - "end": 4793 - }, - "page_num": 5, - "text": "Generated", - "position": { - "top": 409, - "bottom": 456, - "left": 1328, - "right": 1532 - } - }, - { - "doc_offset": { - "start": 4794, - "end": 4796 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 409, - "bottom": 458, - "left": 1542, - "right": 1590 - } - }, - { - "doc_offset": { - "start": 4797, - "end": 4809 - }, - "page_num": 5, - "text": "integration5", - "position": { - "top": 409, - "bottom": 456, - "left": 1600, - "right": 1836 - } - }, - { - "doc_offset": { - "start": 4810, - "end": 4815 - }, - "page_num": 5, - "text": "label", - "position": { - "top": 508, - "bottom": 545, - "left": 257, - "right": 349 - } - }, - { - "doc_offset": { - "start": 4816, - "end": 4819 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 509, - "bottom": 548, - "left": 1011, - "right": 1061 - } - }, - { - "doc_offset": { - "start": 4820, - "end": 4831 - }, - "page_num": 5, - "text": "Prediction.", - "position": { - "top": 518, - "bottom": 555, - "left": 1340, - "right": 1577 - } - }, - { - "doc_offset": { - "start": 4832, - "end": 4837 - }, - "page_num": 5, - "text": "Label", - "position": { - "top": 514, - "bottom": 552, - "left": 1585, - "right": 1701 - } - }, - { - "doc_offset": { - "start": 4838, - "end": 4841 - }, - "page_num": 5, - "text": "6,7", - "position": { - "top": 511, - "bottom": 548, - "left": 1714, - "right": 1764 - } - }, - { - "doc_offset": { - "start": 4842, - "end": 4857 - }, - "page_num": 5, - "text": "predicted_value", - "position": { - "top": 613, - "bottom": 657, - "left": 259, - "right": 570 - } - }, - { - "doc_offset": { - "start": 4858, - "end": 4861 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 615, - "bottom": 648, - "left": 1012, - "right": 1060 - } - }, - { - "doc_offset": { - "start": 4862, - "end": 4873 - }, - "page_num": 5, - "text": "Prediction.", - "position": { - "top": 621, - "bottom": 657, - "left": 1342, - "right": 1583 - } - }, - { - "doc_offset": { - "start": 4874, - "end": 4878 - }, - "page_num": 5, - "text": "Text", - "position": { - "top": 620, - "bottom": 657, - "left": 1590, - "right": 1676 - } - }, - { - "doc_offset": { - "start": 4879, - "end": 4882 - }, - "page_num": 5, - "text": "8,7", - "position": { - "top": 608, - "bottom": 653, - "left": 1693, - "right": 1742 - } - }, - { - "doc_offset": { - "start": 4883, - "end": 4897 - }, - "page_num": 5, - "text": "reviewed_value", - "position": { - "top": 714, - "bottom": 756, - "left": 257, - "right": 560 - } - }, - { - "doc_offset": { - "start": 4898, - "end": 4901 - }, - "page_num": 5, - "text": "str", - "position": { - "top": 716, - "bottom": 751, - "left": 1011, - "right": 1061 - } - }, - { - "doc_offset": { - "start": 4902, - "end": 4913 - }, - "page_num": 5, - "text": "Prediction.", - "position": { - "top": 724, - "bottom": 761, - "left": 1340, - "right": 1584 - } - }, - { - "doc_offset": { - "start": 4914, - "end": 4918 - }, - "page_num": 5, - "text": "Text", - "position": { - "top": 723, - "bottom": 760, - "left": 1591, - "right": 1674 - } - }, - { - "doc_offset": { - "start": 4919, - "end": 4922 - }, - "page_num": 5, - "text": "8,7", - "position": { - "top": 711, - "bottom": 754, - "left": 1693, - "right": 1742 - } - }, - { - "doc_offset": { - "start": 4923, - "end": 4941 - }, - "page_num": 5, - "text": "submission_file_id", - "position": { - "top": 816, - "bottom": 859, - "left": 260, - "right": 614 - } - }, - { - "doc_offset": { - "start": 4942, - "end": 4945 - }, - "page_num": 5, - "text": "int", - "position": { - "top": 814, - "bottom": 853, - "left": 1007, - "right": 1060 - } - }, - { - "doc_offset": { - "start": 4946, - "end": 4957 - }, - "page_num": 5, - "text": "Prediction.", - "position": { - "top": 827, - "bottom": 865, - "left": 1343, - "right": 1577 - } - }, - { - "doc_offset": { - "start": 4958, - "end": 4967 - }, - "page_num": 5, - "text": "Document.", - "position": { - "top": 826, - "bottom": 863, - "left": 1585, - "right": 1783 - } - }, - { - "doc_offset": { - "start": 4968, - "end": 4970 - }, - "page_num": 5, - "text": "Id", - "position": { - "top": 825, - "bottom": 863, - "left": 1790, - "right": 1830 - } - }, - { - "doc_offset": { - "start": 4971, - "end": 4972 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 823, - "bottom": 863, - "left": 1849, - "right": 1869 - } - }, - { - "doc_offset": { - "start": 4973, - "end": 4981 - }, - "page_num": 5, - "text": "model_id", - "position": { - "top": 919, - "bottom": 962, - "left": 257, - "right": 436 - } - }, - { - "doc_offset": { - "start": 4982, - "end": 4985 - }, - "page_num": 5, - "text": "int", - "position": { - "top": 918, - "bottom": 958, - "left": 1007, - "right": 1060 - } - }, - { - "doc_offset": { - "start": 4986, - "end": 4997 - }, - "page_num": 5, - "text": "Prediction.", - "position": { - "top": 928, - "bottom": 966, - "left": 1340, - "right": 1575 - } - }, - { - "doc_offset": { - "start": 4998, - "end": 5004 - }, - "page_num": 5, - "text": "Model.", - "position": { - "top": 926, - "bottom": 966, - "left": 1584, - "right": 1716 - } - }, - { - "doc_offset": { - "start": 5005, - "end": 5007 - }, - "page_num": 5, - "text": "Id", - "position": { - "top": 926, - "bottom": 966, - "left": 1724, - "right": 1766 - } - }, - { - "doc_offset": { - "start": 5008, - "end": 5009 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 925, - "bottom": 965, - "left": 1782, - "right": 1800 - } - }, - { - "doc_offset": { - "start": 5010, - "end": 5011 - }, - "page_num": 5, - "text": "5", - "position": { - "top": 1054, - "bottom": 1100, - "left": 210, - "right": 232 - } - }, - { - "doc_offset": { - "start": 5012, - "end": 5023 - }, - "page_num": 5, - "text": "Predictions", - "position": { - "top": 1054, - "bottom": 1100, - "left": 243, - "right": 449 - } - }, - { - "doc_offset": { - "start": 5024, - "end": 5026 - }, - "page_num": 5, - "text": "do", - "position": { - "top": 1055, - "bottom": 1101, - "left": 464, - "right": 508 - } - }, - { - "doc_offset": { - "start": 5027, - "end": 5030 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1055, - "bottom": 1101, - "left": 522, - "right": 585 - } - }, - { - "doc_offset": { - "start": 5031, - "end": 5035 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1055, - "bottom": 1101, - "left": 597, - "right": 689 - } - }, - { - "doc_offset": { - "start": 5036, - "end": 5037 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1055, - "bottom": 1101, - "left": 701, - "right": 726 - } - }, - { - "doc_offset": { - "start": 5038, - "end": 5053 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1057, - "bottom": 1101, - "left": 739, - "right": 1048 - } - }, - { - "doc_offset": { - "start": 5054, - "end": 5060 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1057, - "bottom": 1102, - "left": 1061, - "right": 1189 - } - }, - { - "doc_offset": { - "start": 5061, - "end": 5072 - }, - "page_num": 5, - "text": "identifier.", - "position": { - "top": 1057, - "bottom": 1102, - "left": 1197, - "right": 1368 - } - }, - { - "doc_offset": { - "start": 5073, - "end": 5084 - }, - "page_num": 5, - "text": "Recommended", - "position": { - "top": 1057, - "bottom": 1104, - "left": 1378, - "right": 1657 - } - }, - { - "doc_offset": { - "start": 5085, - "end": 5089 - }, - "page_num": 5, - "text": "that", - "position": { - "top": 1057, - "bottom": 1104, - "left": 1673, - "right": 1747 - } - }, - { - "doc_offset": { - "start": 5090, - "end": 5093 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1057, - "bottom": 1104, - "left": 1756, - "right": 1817 - } - }, - { - "doc_offset": { - "start": 5094, - "end": 5105 - }, - "page_num": 5, - "text": "integration", - "position": { - "top": 1057, - "bottom": 1104, - "left": 1827, - "right": 2022 - } - }, - { - "doc_offset": { - "start": 5106, - "end": 5113 - }, - "page_num": 5, - "text": "pulling", - "position": { - "top": 1055, - "bottom": 1104, - "left": 2038, - "right": 2158 - } - }, - { - "doc_offset": { - "start": 5114, - "end": 5118 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1055, - "bottom": 1104, - "left": 2171, - "right": 2243 - } - }, - { - "doc_offset": { - "start": 5119, - "end": 5123 - }, - "page_num": 5, - "text": "data", - "position": { - "top": 1055, - "bottom": 1104, - "left": 2253, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5124, - "end": 5133 - }, - "page_num": 5, - "text": "generates", - "position": { - "top": 1107, - "bottom": 1151, - "left": 242, - "right": 422 - } - }, - { - "doc_offset": { - "start": 5134, - "end": 5135 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1105, - "bottom": 1151, - "left": 432, - "right": 455 - } - }, - { - "doc_offset": { - "start": 5136, - "end": 5142 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1104, - "bottom": 1151, - "left": 465, - "right": 588 - } - }, - { - "doc_offset": { - "start": 5143, - "end": 5149 - }, - "page_num": 5, - "text": "UUIDv7", - "position": { - "top": 1104, - "bottom": 1151, - "left": 598, - "right": 740 - } - }, - { - "doc_offset": { - "start": 5150, - "end": 5153 - }, - "page_num": 5, - "text": "for", - "position": { - "top": 1104, - "bottom": 1150, - "left": 749, - "right": 800 - } - }, - { - "doc_offset": { - "start": 5154, - "end": 5158 - }, - "page_num": 5, - "text": "each", - "position": { - "top": 1104, - "bottom": 1150, - "left": 810, - "right": 898 - } - }, - { - "doc_offset": { - "start": 5159, - "end": 5170 - }, - "page_num": 5, - "text": "prediction.", - "position": { - "top": 1105, - "bottom": 1150, - "left": 909, - "right": 1104 - } - }, - { - "doc_offset": { - "start": 5171, - "end": 5172 - }, - "page_num": 5, - "text": "6", - "position": { - "top": 1204, - "bottom": 1250, - "left": 209, - "right": 229 - } - }, - { - "doc_offset": { - "start": 5173, - "end": 5176 - }, - "page_num": 5, - "text": "For", - "position": { - "top": 1204, - "bottom": 1250, - "left": 237, - "right": 302 - } - }, - { - "doc_offset": { - "start": 5177, - "end": 5188 - }, - "page_num": 5, - "text": "performance", - "position": { - "top": 1205, - "bottom": 1250, - "left": 310, - "right": 542 - } - }, - { - "doc_offset": { - "start": 5189, - "end": 5197 - }, - "page_num": 5, - "text": "reasons,", - "position": { - "top": 1205, - "bottom": 1250, - "left": 551, - "right": 710 - } - }, - { - "doc_offset": { - "start": 5198, - "end": 5202 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1205, - "bottom": 1250, - "left": 719, - "right": 789 - } - }, - { - "doc_offset": { - "start": 5203, - "end": 5209 - }, - "page_num": 5, - "text": "column", - "position": { - "top": 1205, - "bottom": 1251, - "left": 797, - "right": 932 - } - }, - { - "doc_offset": { - "start": 5210, - "end": 5216 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 1205, - "bottom": 1251, - "left": 948, - "right": 1068 - } - }, - { - "doc_offset": { - "start": 5217, - "end": 5221 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1078, - "right": 1168 - } - }, - { - "doc_offset": { - "start": 5222, - "end": 5224 - }, - "page_num": 5, - "text": "an", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1179, - "right": 1224 - } - }, - { - "doc_offset": { - "start": 5225, - "end": 5231 - }, - "page_num": 5, - "text": "index.", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1233, - "right": 1349 - } - }, - { - "doc_offset": { - "start": 5232, - "end": 5241 - }, - "page_num": 5, - "text": "Depending", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1359, - "right": 1558 - } - }, - { - "doc_offset": { - "start": 5242, - "end": 5246 - }, - "page_num": 5, - "text": "upon", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1568, - "right": 1660 - } - }, - { - "doc_offset": { - "start": 5247, - "end": 5250 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1205, - "bottom": 1251, - "left": 1671, - "right": 1733 - } - }, - { - "doc_offset": { - "start": 5251, - "end": 5256 - }, - "page_num": 5, - "text": "DBMS,", - "position": { - "top": 1205, - "bottom": 1253, - "left": 1742, - "right": 1872 - } - }, - { - "doc_offset": { - "start": 5257, - "end": 5261 - }, - "page_num": 5, - "text": "this", - "position": { - "top": 1205, - "bottom": 1253, - "left": 1882, - "right": 1952 - } - }, - { - "doc_offset": { - "start": 5262, - "end": 5268 - }, - "page_num": 5, - "text": "column", - "position": { - "top": 1204, - "bottom": 1253, - "left": 1961, - "right": 2094 - } - }, - { - "doc_offset": { - "start": 5269, - "end": 5272 - }, - "page_num": 5, - "text": "may", - "position": { - "top": 1204, - "bottom": 1253, - "left": 2107, - "right": 2186 - } - }, - { - "doc_offset": { - "start": 5273, - "end": 5277 - }, - "page_num": 5, - "text": "need", - "position": { - "top": 1204, - "bottom": 1253, - "left": 2196, - "right": 2286 - } - }, - { - "doc_offset": { - "start": 5278, - "end": 5280 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1204, - "bottom": 1253, - "left": 2299, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 5281, - "end": 5283 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1254, - "bottom": 1297, - "left": 240, - "right": 285 - } - }, - { - "doc_offset": { - "start": 5284, - "end": 5294 - }, - "page_num": 5, - "text": "normalized", - "position": { - "top": 1254, - "bottom": 1297, - "left": 295, - "right": 497 - } - }, - { - "doc_offset": { - "start": 5295, - "end": 5299 - }, - "page_num": 5, - "text": "out,", - "position": { - "top": 1254, - "bottom": 1297, - "left": 508, - "right": 578 - } - }, - { - "doc_offset": { - "start": 5300, - "end": 5307 - }, - "page_num": 5, - "text": "hashed,", - "position": { - "top": 1253, - "bottom": 1297, - "left": 587, - "right": 737 - } - }, - { - "doc_offset": { - "start": 5308, - "end": 5310 - }, - "page_num": 5, - "text": "or", - "position": { - "top": 1253, - "bottom": 1299, - "left": 746, - "right": 783 - } - }, - { - "doc_offset": { - "start": 5311, - "end": 5320 - }, - "page_num": 5, - "text": "otherwise", - "position": { - "top": 1253, - "bottom": 1299, - "left": 793, - "right": 971 - } - }, - { - "doc_offset": { - "start": 5321, - "end": 5330 - }, - "page_num": 5, - "text": "converted", - "position": { - "top": 1254, - "bottom": 1299, - "left": 979, - "right": 1161 - } - }, - { - "doc_offset": { - "start": 5331, - "end": 5333 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1254, - "bottom": 1299, - "left": 1174, - "right": 1211 - } - }, - { - "doc_offset": { - "start": 5334, - "end": 5336 - }, - "page_num": 5, - "text": "an", - "position": { - "top": 1254, - "bottom": 1299, - "left": 1223, - "right": 1264 - } - }, - { - "doc_offset": { - "start": 5337, - "end": 5346 - }, - "page_num": 5, - "text": "indexable", - "position": { - "top": 1254, - "bottom": 1299, - "left": 1273, - "right": 1455 - } - }, - { - "doc_offset": { - "start": 5347, - "end": 5352 - }, - "page_num": 5, - "text": "type.", - "position": { - "top": 1254, - "bottom": 1300, - "left": 1464, - "right": 1558 - } - }, - { - "doc_offset": { - "start": 5353, - "end": 5354 - }, - "page_num": 5, - "text": "7", - "position": { - "top": 1352, - "bottom": 1396, - "left": 212, - "right": 229 - } - }, - { - "doc_offset": { - "start": 5355, - "end": 5360 - }, - "page_num": 5, - "text": "Based", - "position": { - "top": 1353, - "bottom": 1396, - "left": 237, - "right": 353 - } - }, - { - "doc_offset": { - "start": 5361, - "end": 5363 - }, - "page_num": 5, - "text": "on", - "position": { - "top": 1353, - "bottom": 1396, - "left": 365, - "right": 411 - } - }, - { - "doc_offset": { - "start": 5364, - "end": 5367 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1353, - "bottom": 1397, - "left": 422, - "right": 481 - } - }, - { - "doc_offset": { - "start": 5368, - "end": 5374 - }, - "page_num": 5, - "text": "Result", - "position": { - "top": 1353, - "bottom": 1397, - "left": 491, - "right": 607 - } - }, - { - "doc_offset": { - "start": 5375, - "end": 5379 - }, - "page_num": 5, - "text": "File", - "position": { - "top": 1354, - "bottom": 1397, - "left": 616, - "right": 684 - } - }, - { - "doc_offset": { - "start": 5380, - "end": 5387 - }, - "page_num": 5, - "text": "classes", - "position": { - "top": 1354, - "bottom": 1399, - "left": 693, - "right": 826 - } - }, - { - "doc_offset": { - "start": 5388, - "end": 5390 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1354, - "bottom": 1399, - "left": 836, - "right": 872 - } - }, - { - "doc_offset": { - "start": 5391, - "end": 5394 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1354, - "bottom": 1399, - "left": 881, - "right": 939 - } - }, - { - "doc_offset": { - "start": 5395, - "end": 5401 - }, - "page_num": 5, - "text": "Indico", - "position": { - "top": 1354, - "bottom": 1399, - "left": 949, - "right": 1062 - } - }, - { - "doc_offset": { - "start": 5402, - "end": 5409 - }, - "page_num": 5, - "text": "Toolkit", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1077, - "right": 1190 - } - }, - { - "doc_offset": { - "start": 5410, - "end": 5420 - }, - "page_num": 5, - "text": "(available", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1199, - "right": 1372 - } - }, - { - "doc_offset": { - "start": 5421, - "end": 5423 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1381, - "right": 1413 - } - }, - { - "doc_offset": { - "start": 5424, - "end": 5430 - }, - "page_num": 5, - "text": "Python", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1428, - "right": 1552 - } - }, - { - "doc_offset": { - "start": 5431, - "end": 5434 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1565, - "right": 1633 - } - }, - { - "doc_offset": { - "start": 5435, - "end": 5437 - }, - "page_num": 5, - "text": "C#", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1646, - "right": 1696 - } - }, - { - "doc_offset": { - "start": 5438, - "end": 5448 - }, - "page_num": 5, - "text": "versions).", - "position": { - "top": 1354, - "bottom": 1400, - "left": 1707, - "right": 1880 - } - }, - { - "doc_offset": { - "start": 5449, - "end": 5450 - }, - "page_num": 5, - "text": "8", - "position": { - "top": 1459, - "bottom": 1502, - "left": 212, - "right": 233 - } - }, - { - "doc_offset": { - "start": 5451, - "end": 5453 - }, - "page_num": 5, - "text": "As", - "position": { - "top": 1459, - "bottom": 1502, - "left": 246, - "right": 293 - } - }, - { - "doc_offset": { - "start": 5454, - "end": 5465 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1459, - "bottom": 1502, - "left": 306, - "right": 514 - } - }, - { - "doc_offset": { - "start": 5466, - "end": 5468 - }, - "page_num": 5, - "text": "do", - "position": { - "top": 1459, - "bottom": 1503, - "left": 527, - "right": 577 - } - }, - { - "doc_offset": { - "start": 5469, - "end": 5472 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1459, - "bottom": 1505, - "left": 590, - "right": 657 - } - }, - { - "doc_offset": { - "start": 5473, - "end": 5477 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1459, - "bottom": 1505, - "left": 667, - "right": 757 - } - }, - { - "doc_offset": { - "start": 5478, - "end": 5479 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1459, - "bottom": 1505, - "left": 773, - "right": 796 - } - }, - { - "doc_offset": { - "start": 5480, - "end": 5495 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1459, - "bottom": 1505, - "left": 812, - "right": 1121 - } - }, - { - "doc_offset": { - "start": 5496, - "end": 5502 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1459, - "bottom": 1506, - "left": 1137, - "right": 1262 - } - }, - { - "doc_offset": { - "start": 5503, - "end": 5514 - }, - "page_num": 5, - "text": "identifier,", - "position": { - "top": 1459, - "bottom": 1506, - "left": 1275, - "right": 1449 - } - }, - { - "doc_offset": { - "start": 5515, - "end": 5524 - }, - "page_num": 5, - "text": "predicted", - "position": { - "top": 1459, - "bottom": 1506, - "left": 1458, - "right": 1633 - } - }, - { - "doc_offset": { - "start": 5525, - "end": 5531 - }, - "page_num": 5, - "text": "values", - "position": { - "top": 1459, - "bottom": 1506, - "left": 1648, - "right": 1767 - } - }, - { - "doc_offset": { - "start": 5532, - "end": 5535 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1459, - "bottom": 1505, - "left": 1783, - "right": 1852 - } - }, - { - "doc_offset": { - "start": 5536, - "end": 5544 - }, - "page_num": 5, - "text": "reviewed", - "position": { - "top": 1459, - "bottom": 1505, - "left": 1868, - "right": 2029 - } - }, - { - "doc_offset": { - "start": 5545, - "end": 5551 - }, - "page_num": 5, - "text": "values", - "position": { - "top": 1459, - "bottom": 1503, - "left": 2048, - "right": 2167 - } - }, - { - "doc_offset": { - "start": 5552, - "end": 5556 - }, - "page_num": 5, - "text": "must", - "position": { - "top": 1458, - "bottom": 1503, - "left": 2180, - "right": 2279 - } - }, - { - "doc_offset": { - "start": 5557, - "end": 5559 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1458, - "bottom": 1502, - "left": 2289, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5560, - "end": 5567 - }, - "page_num": 5, - "text": "matched", - "position": { - "top": 1506, - "bottom": 1551, - "left": 240, - "right": 398 - } - }, - { - "doc_offset": { - "start": 5568, - "end": 5570 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 1506, - "bottom": 1551, - "left": 422, - "right": 474 - } - }, - { - "doc_offset": { - "start": 5571, - "end": 5581 - }, - "page_num": 5, - "text": "similarity", - "position": { - "top": 1506, - "bottom": 1551, - "left": 495, - "right": 657 - } - }, - { - "doc_offset": { - "start": 5582, - "end": 5588 - }, - "page_num": 5, - "text": "within", - "position": { - "top": 1506, - "bottom": 1551, - "left": 679, - "right": 787 - } - }, - { - "doc_offset": { - "start": 5589, - "end": 5592 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1506, - "bottom": 1551, - "left": 810, - "right": 871 - } - }, - { - "doc_offset": { - "start": 5593, - "end": 5605 - }, - "page_num": 5, - "text": "integration.", - "position": { - "top": 1506, - "bottom": 1551, - "left": 892, - "right": 1110 - } - }, - { - "doc_offset": { - "start": 5606, - "end": 5608 - }, - "page_num": 5, - "text": "An", - "position": { - "top": 1506, - "bottom": 1551, - "left": 1127, - "right": 1173 - } - }, - { - "doc_offset": { - "start": 5609, - "end": 5616 - }, - "page_num": 5, - "text": "example", - "position": { - "top": 1506, - "bottom": 1551, - "left": 1200, - "right": 1356 - } - }, - { - "doc_offset": { - "start": 5617, - "end": 5619 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 1505, - "bottom": 1551, - "left": 1381, - "right": 1425 - } - }, - { - "doc_offset": { - "start": 5620, - "end": 5625 - }, - "page_num": 5, - "text": "doing", - "position": { - "top": 1505, - "bottom": 1551, - "left": 1441, - "right": 1542 - } - }, - { - "doc_offset": { - "start": 5626, - "end": 5628 - }, - "page_num": 5, - "text": "so", - "position": { - "top": 1505, - "bottom": 1552, - "left": 1570, - "right": 1613 - } - }, - { - "doc_offset": { - "start": 5629, - "end": 5631 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1505, - "bottom": 1552, - "left": 1633, - "right": 1673 - } - }, - { - "doc_offset": { - "start": 5632, - "end": 5641 - }, - "page_num": 5, - "text": "available", - "position": { - "top": 1505, - "bottom": 1552, - "left": 1693, - "right": 1853 - } - }, - { - "doc_offset": { - "start": 5642, - "end": 5644 - }, - "page_num": 5, - "text": "in", - "position": { - "top": 1505, - "bottom": 1552, - "left": 1873, - "right": 1908 - } - }, - { - "doc_offset": { - "start": 5645, - "end": 5648 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1505, - "bottom": 1552, - "left": 1931, - "right": 1995 - } - }, - { - "doc_offset": { - "start": 5649, - "end": 5665 - }, - "page_num": 5, - "text": "Indico-developed", - "position": { - "top": 1505, - "bottom": 1552, - "left": 2015, - "right": 2335 - } - }, - { - "doc_offset": { - "start": 5666, - "end": 5677 - }, - "page_num": 5, - "text": "groundtruth", - "position": { - "top": 1555, - "bottom": 1601, - "left": 242, - "right": 462 - } - }, - { - "doc_offset": { - "start": 5678, - "end": 5686 - }, - "page_num": 5, - "text": "program.", - "position": { - "top": 1556, - "bottom": 1601, - "left": 472, - "right": 640 - } - }, - { - "doc_offset": { - "start": 5687, - "end": 5696 - }, - "page_num": 5, - "text": "Scheduled", - "position": { - "top": 1651, - "bottom": 1695, - "left": 212, - "right": 429 - } - }, - { - "doc_offset": { - "start": 5697, - "end": 5704 - }, - "page_num": 5, - "text": "Process", - "position": { - "top": 1650, - "bottom": 1698, - "left": 442, - "right": 617 - } - }, - { - "doc_offset": { - "start": 5705, - "end": 5710 - }, - "page_num": 5, - "text": "Logic", - "position": { - "top": 1650, - "bottom": 1700, - "left": 626, - "right": 742 - } - }, - { - "doc_offset": { - "start": 5711, - "end": 5715 - }, - "page_num": 5, - "text": "This", - "position": { - "top": 1754, - "bottom": 1804, - "left": 212, - "right": 292 - } - }, - { - "doc_offset": { - "start": 5716, - "end": 5718 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1754, - "bottom": 1804, - "left": 306, - "right": 348 - } - }, - { - "doc_offset": { - "start": 5719, - "end": 5720 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1754, - "bottom": 1804, - "left": 365, - "right": 389 - } - }, - { - "doc_offset": { - "start": 5721, - "end": 5732 - }, - "page_num": 5, - "text": "heavyweight", - "position": { - "top": 1754, - "bottom": 1804, - "left": 403, - "right": 660 - } - }, - { - "doc_offset": { - "start": 5733, - "end": 5738 - }, - "page_num": 5, - "text": "query", - "position": { - "top": 1754, - "bottom": 1804, - "left": 674, - "right": 787 - } - }, - { - "doc_offset": { - "start": 5739, - "end": 5743 - }, - "page_num": 5, - "text": "tied", - "position": { - "top": 1754, - "bottom": 1804, - "left": 802, - "right": 876 - } - }, - { - "doc_offset": { - "start": 5744, - "end": 5746 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 1754, - "bottom": 1804, - "left": 896, - "right": 938 - } - }, - { - "doc_offset": { - "start": 5747, - "end": 5759 - }, - "page_num": 5, - "text": "submissions.", - "position": { - "top": 1755, - "bottom": 1804, - "left": 958, - "right": 1224 - } - }, - { - "doc_offset": { - "start": 5760, - "end": 5767 - }, - "page_num": 5, - "text": "Because", - "position": { - "top": 1755, - "bottom": 1804, - "left": 1234, - "right": 1408 - } - }, - { - "doc_offset": { - "start": 5768, - "end": 5779 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1755, - "bottom": 1804, - "left": 1423, - "right": 1648 - } - }, - { - "doc_offset": { - "start": 5780, - "end": 5784 - }, - "page_num": 5, - "text": "have", - "position": { - "top": 1755, - "bottom": 1804, - "left": 1661, - "right": 1760 - } - }, - { - "doc_offset": { - "start": 5785, - "end": 5787 - }, - "page_num": 5, - "text": "no", - "position": { - "top": 1755, - "bottom": 1804, - "left": 1776, - "right": 1827 - } - }, - { - "doc_offset": { - "start": 5788, - "end": 5803 - }, - "page_num": 5, - "text": "system-assigned", - "position": { - "top": 1755, - "bottom": 1804, - "left": 1850, - "right": 2184 - } - }, - { - "doc_offset": { - "start": 5804, - "end": 5810 - }, - "page_num": 5, - "text": "unique", - "position": { - "top": 1755, - "bottom": 1806, - "left": 2203, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 5811, - "end": 5822 - }, - "page_num": 5, - "text": "identifier,", - "position": { - "top": 1817, - "bottom": 1864, - "left": 210, - "right": 391 - } - }, - { - "doc_offset": { - "start": 5823, - "end": 5826 - }, - "page_num": 5, - "text": "and", - "position": { - "top": 1817, - "bottom": 1864, - "left": 401, - "right": 475 - } - }, - { - "doc_offset": { - "start": 5827, - "end": 5830 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1817, - "bottom": 1866, - "left": 488, - "right": 557 - } - }, - { - "doc_offset": { - "start": 5831, - "end": 5841 - }, - "page_num": 5, - "text": "identifier", - "position": { - "top": 1817, - "bottom": 1866, - "left": 567, - "right": 746 - } - }, - { - "doc_offset": { - "start": 5842, - "end": 5850 - }, - "page_num": 5, - "text": "assigned", - "position": { - "top": 1816, - "bottom": 1866, - "left": 756, - "right": 931 - } - }, - { - "doc_offset": { - "start": 5851, - "end": 5853 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 1816, - "bottom": 1866, - "left": 948, - "right": 999 - } - }, - { - "doc_offset": { - "start": 5854, - "end": 5857 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1816, - "bottom": 1866, - "left": 1009, - "right": 1077 - } - }, - { - "doc_offset": { - "start": 5858, - "end": 5869 - }, - "page_num": 5, - "text": "integration", - "position": { - "top": 1816, - "bottom": 1866, - "left": 1087, - "right": 1299 - } - }, - { - "doc_offset": { - "start": 5870, - "end": 5872 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1816, - "bottom": 1867, - "left": 1312, - "right": 1350 - } - }, - { - "doc_offset": { - "start": 5873, - "end": 5876 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 1816, - "bottom": 1867, - "left": 1360, - "right": 1435 - } - }, - { - "doc_offset": { - "start": 5877, - "end": 5884 - }, - "page_num": 5, - "text": "stable,", - "position": { - "top": 1816, - "bottom": 1867, - "left": 1445, - "right": 1578 - } - }, - { - "doc_offset": { - "start": 5885, - "end": 5896 - }, - "page_num": 5, - "text": "predictions", - "position": { - "top": 1816, - "bottom": 1867, - "left": 1588, - "right": 1813 - } - }, - { - "doc_offset": { - "start": 5897, - "end": 5901 - }, - "page_num": 5, - "text": "must", - "position": { - "top": 1817, - "bottom": 1867, - "left": 1823, - "right": 1926 - } - }, - { - "doc_offset": { - "start": 5902, - "end": 5904 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1817, - "bottom": 1867, - "left": 1936, - "right": 1992 - } - }, - { - "doc_offset": { - "start": 5905, - "end": 5911 - }, - "page_num": 5, - "text": "pulled", - "position": { - "top": 1817, - "bottom": 1867, - "left": 2005, - "right": 2125 - } - }, - { - "doc_offset": { - "start": 5912, - "end": 5916 - }, - "page_num": 5, - "text": "only", - "position": { - "top": 1817, - "bottom": 1867, - "left": 2143, - "right": 2226 - } - }, - { - "doc_offset": { - "start": 5917, - "end": 5921 - }, - "page_num": 5, - "text": "once", - "position": { - "top": 1817, - "bottom": 1866, - "left": 2240, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 5922, - "end": 5925 - }, - "page_num": 5, - "text": "per", - "position": { - "top": 1880, - "bottom": 1926, - "left": 210, - "right": 276 - } - }, - { - "doc_offset": { - "start": 5926, - "end": 5937 - }, - "page_num": 5, - "text": "submission.", - "position": { - "top": 1879, - "bottom": 1926, - "left": 287, - "right": 527 - } - }, - { - "doc_offset": { - "start": 5938, - "end": 5942 - }, - "page_num": 5, - "text": "This", - "position": { - "top": 1879, - "bottom": 1926, - "left": 538, - "right": 617 - } - }, - { - "doc_offset": { - "start": 5943, - "end": 5949 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 1879, - "bottom": 1926, - "left": 628, - "right": 757 - } - }, - { - "doc_offset": { - "start": 5950, - "end": 5955 - }, - "page_num": 5, - "text": "occur", - "position": { - "top": 1879, - "bottom": 1926, - "left": 775, - "right": 889 - } - }, - { - "doc_offset": { - "start": 5956, - "end": 5958 - }, - "page_num": 5, - "text": "at", - "position": { - "top": 1879, - "bottom": 1926, - "left": 899, - "right": 936 - } - }, - { - "doc_offset": { - "start": 5959, - "end": 5962 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1879, - "bottom": 1926, - "left": 946, - "right": 1011 - } - }, - { - "doc_offset": { - "start": 5963, - "end": 5971 - }, - "page_num": 5, - "text": "terminal", - "position": { - "top": 1879, - "bottom": 1926, - "left": 1021, - "right": 1183 - } - }, - { - "doc_offset": { - "start": 5972, - "end": 5977 - }, - "page_num": 5, - "text": "state", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1193, - "right": 1289 - } - }, - { - "doc_offset": { - "start": 5978, - "end": 5980 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1303, - "right": 1342 - } - }, - { - "doc_offset": { - "start": 5981, - "end": 5984 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1352, - "right": 1418 - } - }, - { - "doc_offset": { - "start": 5985, - "end": 5995 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1431, - "right": 1648 - } - }, - { - "doc_offset": { - "start": 5996, - "end": 6000 - }, - "page_num": 5, - "text": "just", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1661, - "right": 1736 - } - }, - { - "doc_offset": { - "start": 6001, - "end": 6007 - }, - "page_num": 5, - "text": "before", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1746, - "right": 1873 - } - }, - { - "doc_offset": { - "start": 6008, - "end": 6012 - }, - "page_num": 5, - "text": "it's", - "position": { - "top": 1877, - "bottom": 1926, - "left": 1883, - "right": 1949 - } - }, - { - "doc_offset": { - "start": 6013, - "end": 6020 - }, - "page_num": 5, - "text": "omitted", - "position": { - "top": 1879, - "bottom": 1926, - "left": 1958, - "right": 2105 - } - }, - { - "doc_offset": { - "start": 6021, - "end": 6025 - }, - "page_num": 5, - "text": "from", - "position": { - "top": 1879, - "bottom": 1926, - "left": 2118, - "right": 2196 - } - }, - { - "doc_offset": { - "start": 6026, - "end": 6032 - }, - "page_num": 5, - "text": "future", - "position": { - "top": 1879, - "bottom": 1926, - "left": 2220, - "right": 2336 - } - }, - { - "doc_offset": { - "start": 6033, - "end": 6044 - }, - "page_num": 5, - "text": "processing:", - "position": { - "top": 1942, - "bottom": 1988, - "left": 210, - "right": 441 - } - }, - { - "doc_offset": { - "start": 6045, - "end": 6049 - }, - "page_num": 5, - "text": "i.e.", - "position": { - "top": 1940, - "bottom": 1988, - "left": 451, - "right": 522 - } - }, - { - "doc_offset": { - "start": 6050, - "end": 6054 - }, - "page_num": 5, - "text": "when", - "position": { - "top": 1940, - "bottom": 1988, - "left": 532, - "right": 636 - } - }, - { - "doc_offset": { - "start": 6055, - "end": 6058 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 1939, - "bottom": 1986, - "left": 656, - "right": 717 - } - }, - { - "doc_offset": { - "start": 6059, - "end": 6069 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1939, - "bottom": 1986, - "left": 737, - "right": 956 - } - }, - { - "doc_offset": { - "start": 6070, - "end": 6072 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1939, - "bottom": 1986, - "left": 975, - "right": 1014 - } - }, - { - "doc_offset": { - "start": 6073, - "end": 6079 - }, - "page_num": 5, - "text": "marked", - "position": { - "top": 1939, - "bottom": 1986, - "left": 1027, - "right": 1177 - } - }, - { - "doc_offset": { - "start": 6080, - "end": 6082 - }, - "page_num": 5, - "text": "as", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1196, - "right": 1243 - } - }, - { - "doc_offset": { - "start": 6083, - "end": 6093 - }, - "page_num": 5, - "text": "retrieved.", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1259, - "right": 1454 - } - }, - { - "doc_offset": { - "start": 6094, - "end": 6098 - }, - "page_num": 5, - "text": "Once", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1464, - "right": 1567 - } - }, - { - "doc_offset": { - "start": 6099, - "end": 6100 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1585, - "right": 1611 - } - }, - { - "doc_offset": { - "start": 6101, - "end": 6111 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1630, - "right": 1849 - } - }, - { - "doc_offset": { - "start": 6112, - "end": 6114 - }, - "page_num": 5, - "text": "is", - "position": { - "top": 1937, - "bottom": 1986, - "left": 1866, - "right": 1903 - } - }, - { - "doc_offset": { - "start": 6115, - "end": 6121 - }, - "page_num": 5, - "text": "marked", - "position": { - "top": 1939, - "bottom": 1986, - "left": 1919, - "right": 2067 - } - }, - { - "doc_offset": { - "start": 6122, - "end": 6124 - }, - "page_num": 5, - "text": "as", - "position": { - "top": 1939, - "bottom": 1986, - "left": 2090, - "right": 2135 - } - }, - { - "doc_offset": { - "start": 6125, - "end": 6135 - }, - "page_num": 5, - "text": "retrieved,", - "position": { - "top": 1939, - "bottom": 1988, - "left": 2148, - "right": 2335 - } - }, - { - "doc_offset": { - "start": 6136, - "end": 6141 - }, - "page_num": 5, - "text": "there", - "position": { - "top": 1999, - "bottom": 2048, - "left": 207, - "right": 309 - } - }, - { - "doc_offset": { - "start": 6142, - "end": 6148 - }, - "page_num": 5, - "text": "should", - "position": { - "top": 2000, - "bottom": 2048, - "left": 325, - "right": 454 - } - }, - { - "doc_offset": { - "start": 6149, - "end": 6151 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 2000, - "bottom": 2048, - "left": 469, - "right": 522 - } - }, - { - "doc_offset": { - "start": 6152, - "end": 6154 - }, - "page_num": 5, - "text": "no", - "position": { - "top": 2000, - "bottom": 2048, - "left": 535, - "right": 584 - } - }, - { - "doc_offset": { - "start": 6155, - "end": 6162 - }, - "page_num": 5, - "text": "further", - "position": { - "top": 2000, - "bottom": 2048, - "left": 600, - "right": 736 - } - }, - { - "doc_offset": { - "start": 6163, - "end": 6170 - }, - "page_num": 5, - "text": "updates", - "position": { - "top": 2002, - "bottom": 2048, - "left": 746, - "right": 909 - } - }, - { - "doc_offset": { - "start": 6171, - "end": 6173 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2002, - "bottom": 2048, - "left": 919, - "right": 959 - } - }, - { - "doc_offset": { - "start": 6174, - "end": 6177 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2002, - "bottom": 2049, - "left": 975, - "right": 1040 - } - }, - { - "doc_offset": { - "start": 6178, - "end": 6188 - }, - "page_num": 5, - "text": "submission", - "position": { - "top": 2002, - "bottom": 2049, - "left": 1055, - "right": 1275 - } - }, - { - "doc_offset": { - "start": 6189, - "end": 6198 - }, - "page_num": 5, - "text": "resetting", - "position": { - "top": 2002, - "bottom": 2048, - "left": 1290, - "right": 1461 - } - }, - { - "doc_offset": { - "start": 6199, - "end": 6202 - }, - "page_num": 5, - "text": "its", - "position": { - "top": 2002, - "bottom": 2048, - "left": 1474, - "right": 1525 - } - }, - { - "doc_offset": { - "start": 6203, - "end": 6212 - }, - "page_num": 5, - "text": "updatedAt", - "position": { - "top": 2002, - "bottom": 2048, - "left": 1554, - "right": 1757 - } - }, - { - "doc_offset": { - "start": 6213, - "end": 6223 - }, - "page_num": 5, - "text": "attribute,", - "position": { - "top": 2000, - "bottom": 2048, - "left": 1786, - "right": 1965 - } - }, - { - "doc_offset": { - "start": 6224, - "end": 6233 - }, - "page_num": 5, - "text": "therefore", - "position": { - "top": 2000, - "bottom": 2048, - "left": 1975, - "right": 2154 - } - }, - { - "doc_offset": { - "start": 6234, - "end": 6236 - }, - "page_num": 5, - "text": "it", - "position": { - "top": 1999, - "bottom": 2046, - "left": 2164, - "right": 2197 - } - }, - { - "doc_offset": { - "start": 6237, - "end": 6241 - }, - "page_num": 5, - "text": "will", - "position": { - "top": 1999, - "bottom": 2046, - "left": 2207, - "right": 2274 - } - }, - { - "doc_offset": { - "start": 6242, - "end": 6244 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 1999, - "bottom": 2046, - "left": 2284, - "right": 2337 - } - }, - { - "doc_offset": { - "start": 6245, - "end": 6252 - }, - "page_num": 5, - "text": "omitted", - "position": { - "top": 2062, - "bottom": 2106, - "left": 210, - "right": 356 - } - }, - { - "doc_offset": { - "start": 6253, - "end": 6257 - }, - "page_num": 5, - "text": "from", - "position": { - "top": 2062, - "bottom": 2108, - "left": 369, - "right": 445 - } - }, - { - "doc_offset": { - "start": 6258, - "end": 6261 - }, - "page_num": 5, - "text": "all", - "position": { - "top": 2062, - "bottom": 2108, - "left": 472, - "right": 515 - } - }, - { - "doc_offset": { - "start": 6262, - "end": 6268 - }, - "page_num": 5, - "text": "future", - "position": { - "top": 2062, - "bottom": 2108, - "left": 525, - "right": 641 - } - }, - { - "doc_offset": { - "start": 6269, - "end": 6273 - }, - "page_num": 5, - "text": "runs", - "position": { - "top": 2062, - "bottom": 2108, - "left": 650, - "right": 742 - } - }, - { - "doc_offset": { - "start": 6274, - "end": 6276 - }, - "page_num": 5, - "text": "of", - "position": { - "top": 2062, - "bottom": 2109, - "left": 750, - "right": 790 - } - }, - { - "doc_offset": { - "start": 6277, - "end": 6280 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2062, - "bottom": 2109, - "left": 800, - "right": 860 - } - }, - { - "doc_offset": { - "start": 6281, - "end": 6293 - }, - "page_num": 5, - "text": "integration.", - "position": { - "top": 2062, - "bottom": 2109, - "left": 871, - "right": 1094 - } - }, - { - "doc_offset": { - "start": 6294, - "end": 6298 - }, - "page_num": 5, - "text": "Data", - "position": { - "top": 2168, - "bottom": 2212, - "left": 212, - "right": 309 - } - }, - { - "doc_offset": { - "start": 6299, - "end": 6313 - }, - "page_num": 5, - "text": "Reconciliation", - "position": { - "top": 2168, - "bottom": 2212, - "left": 320, - "right": 613 - } - }, - { - "doc_offset": { - "start": 6314, - "end": 6317 - }, - "page_num": 5, - "text": "The", - "position": { - "top": 2273, - "bottom": 2320, - "left": 213, - "right": 283 - } - }, - { - "doc_offset": { - "start": 6318, - "end": 6324 - }, - "page_num": 5, - "text": "output", - "position": { - "top": 2273, - "bottom": 2321, - "left": 296, - "right": 426 - } - }, - { - "doc_offset": { - "start": 6325, - "end": 6329 - }, - "page_num": 5, - "text": "does", - "position": { - "top": 2273, - "bottom": 2321, - "left": 438, - "right": 534 - } - }, - { - "doc_offset": { - "start": 6330, - "end": 6333 - }, - "page_num": 5, - "text": "not", - "position": { - "top": 2271, - "bottom": 2321, - "left": 544, - "right": 611 - } - }, - { - "doc_offset": { - "start": 6334, - "end": 6341 - }, - "page_num": 5, - "text": "include", - "position": { - "top": 2271, - "bottom": 2321, - "left": 621, - "right": 769 - } - }, - { - "doc_offset": { - "start": 6342, - "end": 6343 - }, - "page_num": 5, - "text": "a", - "position": { - "top": 2271, - "bottom": 2323, - "left": 782, - "right": 805 - } - }, - { - "doc_offset": { - "start": 6344, - "end": 6351 - }, - "page_num": 5, - "text": "primary", - "position": { - "top": 2271, - "bottom": 2323, - "left": 816, - "right": 966 - } - }, - { - "doc_offset": { - "start": 6352, - "end": 6355 - }, - "page_num": 5, - "text": "key", - "position": { - "top": 2271, - "bottom": 2323, - "left": 977, - "right": 1050 - } - }, - { - "doc_offset": { - "start": 6356, - "end": 6362 - }, - "page_num": 5, - "text": "needed", - "position": { - "top": 2271, - "bottom": 2323, - "left": 1060, - "right": 1210 - } - }, - { - "doc_offset": { - "start": 6363, - "end": 6365 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2270, - "bottom": 2323, - "left": 1221, - "right": 1264 - } - }, - { - "doc_offset": { - "start": 6366, - "end": 6372 - }, - "page_num": 5, - "text": "update", - "position": { - "top": 2270, - "bottom": 2323, - "left": 1277, - "right": 1418 - } - }, - { - "doc_offset": { - "start": 6373, - "end": 6381 - }, - "page_num": 5, - "text": "existing", - "position": { - "top": 2270, - "bottom": 2323, - "left": 1428, - "right": 1578 - } - }, - { - "doc_offset": { - "start": 6382, - "end": 6387 - }, - "page_num": 5, - "text": "rows.", - "position": { - "top": 2270, - "bottom": 2323, - "left": 1590, - "right": 1703 - } - }, - { - "doc_offset": { - "start": 6388, - "end": 6390 - }, - "page_num": 5, - "text": "As", - "position": { - "top": 2270, - "bottom": 2323, - "left": 1713, - "right": 1770 - } - }, - { - "doc_offset": { - "start": 6391, - "end": 6395 - }, - "page_num": 5, - "text": "such", - "position": { - "top": 2271, - "bottom": 2323, - "left": 1780, - "right": 1873 - } - }, - { - "doc_offset": { - "start": 6396, - "end": 6398 - }, - "page_num": 5, - "text": "it", - "position": { - "top": 2271, - "bottom": 2323, - "left": 1883, - "right": 1913 - } - }, - { - "doc_offset": { - "start": 6399, - "end": 6403 - }, - "page_num": 5, - "text": "will", - "position": { - "top": 2271, - "bottom": 2323, - "left": 1923, - "right": 1991 - } - }, - { - "doc_offset": { - "start": 6404, - "end": 6408 - }, - "page_num": 5, - "text": "only", - "position": { - "top": 2271, - "bottom": 2323, - "left": 2001, - "right": 2085 - } - }, - { - "doc_offset": { - "start": 6409, - "end": 6416 - }, - "page_num": 5, - "text": "contain", - "position": { - "top": 2271, - "bottom": 2321, - "left": 2095, - "right": 2241 - } - }, - { - "doc_offset": { - "start": 6417, - "end": 6420 - }, - "page_num": 5, - "text": "new", - "position": { - "top": 2271, - "bottom": 2321, - "left": 2252, - "right": 2329 - } - }, - { - "doc_offset": { - "start": 6421, - "end": 6425 - }, - "page_num": 5, - "text": "rows", - "position": { - "top": 2334, - "bottom": 2379, - "left": 209, - "right": 305 - } - }, - { - "doc_offset": { - "start": 6426, - "end": 6428 - }, - "page_num": 5, - "text": "to", - "position": { - "top": 2334, - "bottom": 2380, - "left": 315, - "right": 355 - } - }, - { - "doc_offset": { - "start": 6429, - "end": 6431 - }, - "page_num": 5, - "text": "be", - "position": { - "top": 2333, - "bottom": 2380, - "left": 365, - "right": 415 - } - }, - { - "doc_offset": { - "start": 6432, - "end": 6440 - }, - "page_num": 5, - "text": "inserted", - "position": { - "top": 2333, - "bottom": 2380, - "left": 425, - "right": 583 - } - }, - { - "doc_offset": { - "start": 6441, - "end": 6445 - }, - "page_num": 5, - "text": "into", - "position": { - "top": 2331, - "bottom": 2380, - "left": 593, - "right": 671 - } - }, - { - "doc_offset": { - "start": 6446, - "end": 6449 - }, - "page_num": 5, - "text": "the", - "position": { - "top": 2331, - "bottom": 2380, - "left": 681, - "right": 743 - } - }, - { - "doc_offset": { - "start": 6450, - "end": 6457 - }, - "page_num": 5, - "text": "Metrics", - "position": { - "top": 2331, - "bottom": 2380, - "left": 753, - "right": 905 - } - }, - { - "doc_offset": { - "start": 6458, - "end": 6467 - }, - "page_num": 5, - "text": "database.", - "position": { - "top": 2331, - "bottom": 2381, - "left": 915, - "right": 1111 - } - }, - { - "doc_offset": { - "start": 6468, - "end": 6477 - }, - "page_num": 5, - "text": "formatted", - "position": { - "top": 2694, - "bottom": 2727, - "left": 1922, - "right": 2045 - } - }, - { - "doc_offset": { - "start": 6478, - "end": 6480 - }, - "page_num": 5, - "text": "by", - "position": { - "top": 2694, - "bottom": 2727, - "left": 2052, - "right": 2082 - } - }, - { - "doc_offset": { - "start": 6481, - "end": 6489 - }, - "page_num": 5, - "text": "Markdeep", - "position": { - "top": 2694, - "bottom": 2725, - "left": 2090, - "right": 2216 - } - }, - { - "doc_offset": { - "start": 6490, - "end": 6494 - }, - "page_num": 5, - "text": "1.17", - "position": { - "top": 2694, - "bottom": 2725, - "left": 2227, - "right": 2283 - } - } -] \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/101157/tables.json b/tests/data/etloutput/4289/107458/101157/tables.json deleted file mode 100644 index 54c6679..0000000 --- a/tests/data/etloutput/4289/107458/101157/tables.json +++ /dev/null @@ -1,3302 +0,0 @@ -[ - [ - { - "page_num": 0, - "position": { - "top": 1651, - "bottom": 1949, - "left": 212, - "right": 2332 - }, - "num_rows": 3, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 1651, - "bottom": 1763, - "left": 212, - "right": 644 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 955, - "end": 961 - } - ], - "page_offsets": [ - { - "start": 955, - "end": 961 - } - ] - }, - { - "position": { - "top": 1651, - "bottom": 1763, - "left": 644, - "right": 1325 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 962, - "end": 966 - } - ], - "page_offsets": [ - { - "start": 962, - "end": 966 - } - ] - }, - { - "position": { - "top": 1651, - "bottom": 1763, - "left": 1325, - "right": 2332 - }, - "text": "GraphQL Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 967, - "end": 981 - } - ], - "page_offsets": [ - { - "start": 967, - "end": 981 - } - ] - }, - { - "position": { - "top": 1763, - "bottom": 1857, - "left": 212, - "right": 644 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 982, - "end": 984 - } - ], - "page_offsets": [ - { - "start": 982, - "end": 984 - } - ] - }, - { - "position": { - "top": 1763, - "bottom": 1855, - "left": 644, - "right": 1325 - }, - "text": "int", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 985, - "end": 988 - } - ], - "page_offsets": [ - { - "start": 985, - "end": 988 - } - ] - }, - { - "position": { - "top": 1763, - "bottom": 1855, - "left": 1325, - "right": 2332 - }, - "text": "workflow.id", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 989, - "end": 1000 - } - ], - "page_offsets": [ - { - "start": 989, - "end": 1000 - } - ] - }, - { - "position": { - "top": 1857, - "bottom": 1949, - "left": 212, - "right": 644 - }, - "text": "name", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1001, - "end": 1005 - } - ], - "page_offsets": [ - { - "start": 1001, - "end": 1005 - } - ] - }, - { - "position": { - "top": 1857, - "bottom": 1949, - "left": 644, - "right": 1325 - }, - "text": "str", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1006, - "end": 1009 - } - ], - "page_offsets": [ - { - "start": 1006, - "end": 1009 - } - ] - }, - { - "position": { - "top": 1855, - "bottom": 1947, - "left": 1325, - "right": 2332 - }, - "text": "workflow. name", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1010, - "end": 1024 - } - ], - "page_offsets": [ - { - "start": 1010, - "end": 1024 - } - ] - } - ], - "doc_offsets": [ - { - "start": 955, - "end": 1024 - } - ], - "page_offsets": [ - { - "start": 955, - "end": 1024 - } - ], - "table_id": 0, - "table_offset": { - "row": 0, - "column": 0 - } - } - ], - [ - { - "page_num": 1, - "position": { - "top": 170, - "bottom": 562, - "left": 213, - "right": 2335 - }, - "num_rows": 4, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 170, - "bottom": 286, - "left": 213, - "right": 689 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1371, - "end": 1377 - } - ], - "page_offsets": [ - { - "start": 10, - "end": 16 - } - ] - }, - { - "position": { - "top": 170, - "bottom": 284, - "left": 689, - "right": 1249 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1378, - "end": 1382 - } - ], - "page_offsets": [ - { - "start": 17, - "end": 21 - } - ] - }, - { - "position": { - "top": 170, - "bottom": 284, - "left": 1249, - "right": 2335 - }, - "text": "GraphQL Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1383, - "end": 1397 - } - ], - "page_offsets": [ - { - "start": 22, - "end": 36 - } - ] - }, - { - "position": { - "top": 286, - "bottom": 381, - "left": 213, - "right": 689 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1398, - "end": 1400 - } - ], - "page_offsets": [ - { - "start": 37, - "end": 39 - } - ] - }, - { - "position": { - "top": 286, - "bottom": 378, - "left": 689, - "right": 1249 - }, - "text": "int", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1401, - "end": 1404 - } - ], - "page_offsets": [ - { - "start": 40, - "end": 43 - } - ] - }, - { - "position": { - "top": 284, - "bottom": 378, - "left": 1251, - "right": 2335 - }, - "text": "modelGroup. id", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1405, - "end": 1419 - } - ], - "page_offsets": [ - { - "start": 44, - "end": 58 - } - ] - }, - { - "position": { - "top": 381, - "bottom": 470, - "left": 213, - "right": 689 - }, - "text": "name", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1420, - "end": 1424 - } - ], - "page_offsets": [ - { - "start": 59, - "end": 63 - } - ] - }, - { - "position": { - "top": 381, - "bottom": 470, - "left": 689, - "right": 1251 - }, - "text": "str", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1425, - "end": 1428 - } - ], - "page_offsets": [ - { - "start": 64, - "end": 67 - } - ] - }, - { - "position": { - "top": 378, - "bottom": 470, - "left": 1251, - "right": 2335 - }, - "text": "model Group. name", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1429, - "end": 1446 - } - ], - "page_offsets": [ - { - "start": 68, - "end": 85 - } - ] - }, - { - "position": { - "top": 470, - "bottom": 562, - "left": 213, - "right": 689 - }, - "text": "workflow_id", - "rows": [ - 3 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1447, - "end": 1458 - } - ], - "page_offsets": [ - { - "start": 86, - "end": 97 - } - ] - }, - { - "position": { - "top": 470, - "bottom": 562, - "left": 691, - "right": 1251 - }, - "text": "int", - "rows": [ - 3 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1459, - "end": 1462 - } - ], - "page_offsets": [ - { - "start": 98, - "end": 101 - } - ] - }, - { - "position": { - "top": 470, - "bottom": 562, - "left": 1251, - "right": 2335 - }, - "text": "model Group. workflowId", - "rows": [ - 3 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1463, - "end": 1486 - } - ], - "page_offsets": [ - { - "start": 102, - "end": 125 - } - ] - } - ], - "doc_offsets": [ - { - "start": 1371, - "end": 1486 - } - ], - "page_offsets": [ - { - "start": 10, - "end": 125 - } - ], - "table_id": 1, - "table_offset": { - "row": 0, - "column": 0 - } - } - ], - [ - { - "page_num": 2, - "position": { - "top": 253, - "bottom": 1653, - "left": 209, - "right": 2334 - }, - "num_rows": 14, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 253, - "bottom": 366, - "left": 211, - "right": 807 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1861, - "end": 1867 - } - ], - "page_offsets": [ - { - "start": 15, - "end": 21 - } - ] - }, - { - "position": { - "top": 253, - "bottom": 366, - "left": 807, - "right": 1308 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1868, - "end": 1872 - } - ], - "page_offsets": [ - { - "start": 22, - "end": 26 - } - ] - }, - { - "position": { - "top": 253, - "bottom": 364, - "left": 1308, - "right": 2334 - }, - "text": "GraphQL Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 1873, - "end": 1887 - } - ], - "page_offsets": [ - { - "start": 27, - "end": 41 - } - ] - }, - { - "position": { - "top": 366, - "bottom": 460, - "left": 211, - "right": 807 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1888, - "end": 1890 - } - ], - "page_offsets": [ - { - "start": 42, - "end": 44 - } - ] - }, - { - "position": { - "top": 366, - "bottom": 460, - "left": 807, - "right": 1308 - }, - "text": "int", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1891, - "end": 1894 - } - ], - "page_offsets": [ - { - "start": 45, - "end": 48 - } - ] - }, - { - "position": { - "top": 366, - "bottom": 460, - "left": 1308, - "right": 2334 - }, - "text": "submission.id", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1895, - "end": 1908 - } - ], - "page_offsets": [ - { - "start": 49, - "end": 62 - } - ] - }, - { - "position": { - "top": 462, - "bottom": 561, - "left": 211, - "right": 807 - }, - "text": "created_at", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1909, - "end": 1919 - } - ], - "page_offsets": [ - { - "start": 63, - "end": 73 - } - ] - }, - { - "position": { - "top": 460, - "bottom": 558, - "left": 807, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1920, - "end": 1928 - } - ], - "page_offsets": [ - { - "start": 74, - "end": 82 - } - ] - }, - { - "position": { - "top": 460, - "bottom": 558, - "left": 1308, - "right": 2334 - }, - "text": "submission. createdAt", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1929, - "end": 1950 - } - ], - "page_offsets": [ - { - "start": 83, - "end": 104 - } - ] - }, - { - "position": { - "top": 561, - "bottom": 663, - "left": 211, - "right": 807 - }, - "text": "processed_at", - "rows": [ - 3 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1951, - "end": 1963 - } - ], - "page_offsets": [ - { - "start": 105, - "end": 117 - } - ] - }, - { - "position": { - "top": 561, - "bottom": 663, - "left": 807, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 3 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1964, - "end": 1972 - } - ], - "page_offsets": [ - { - "start": 118, - "end": 126 - } - ] - }, - { - "position": { - "top": 561, - "bottom": 663, - "left": 1308, - "right": 2334 - }, - "text": "submission.review. completedAt", - "rows": [ - 3 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 1973, - "end": 2003 - } - ], - "page_offsets": [ - { - "start": 127, - "end": 157 - } - ] - }, - { - "position": { - "top": 663, - "bottom": 768, - "left": 211, - "right": 807 - }, - "text": "reviewer_id", - "rows": [ - 4 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2004, - "end": 2015 - } - ], - "page_offsets": [ - { - "start": 158, - "end": 169 - } - ] - }, - { - "position": { - "top": 663, - "bottom": 768, - "left": 807, - "right": 1308 - }, - "text": "int", - "rows": [ - 4 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2016, - "end": 2019 - } - ], - "page_offsets": [ - { - "start": 170, - "end": 173 - } - ] - }, - { - "position": { - "top": 663, - "bottom": 768, - "left": 1308, - "right": 2334 - }, - "text": "submission. review. createdBy 2", - "rows": [ - 4 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2020, - "end": 2051 - } - ], - "page_offsets": [ - { - "start": 174, - "end": 205 - } - ] - }, - { - "position": { - "top": 768, - "bottom": 866, - "left": 211, - "right": 807 - }, - "text": "review_started_at", - "rows": [ - 5 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2052, - "end": 2069 - } - ], - "page_offsets": [ - { - "start": 206, - "end": 223 - } - ] - }, - { - "position": { - "top": 768, - "bottom": 866, - "left": 807, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 5 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2070, - "end": 2078 - } - ], - "page_offsets": [ - { - "start": 224, - "end": 232 - } - ] - }, - { - "position": { - "top": 768, - "bottom": 866, - "left": 1308, - "right": 2334 - }, - "text": "submission.review. startedAt 2", - "rows": [ - 5 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2079, - "end": 2109 - } - ], - "page_offsets": [ - { - "start": 233, - "end": 263 - } - ] - }, - { - "position": { - "top": 866, - "bottom": 971, - "left": 211, - "right": 807 - }, - "text": "review_completed_at", - "rows": [ - 6 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2110, - "end": 2129 - } - ], - "page_offsets": [ - { - "start": 264, - "end": 283 - } - ] - }, - { - "position": { - "top": 866, - "bottom": 971, - "left": 810, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 6 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2130, - "end": 2138 - } - ], - "page_offsets": [ - { - "start": 284, - "end": 292 - } - ] - }, - { - "position": { - "top": 866, - "bottom": 971, - "left": 1308, - "right": 2334 - }, - "text": "submission.review. completedAt 2", - "rows": [ - 6 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2139, - "end": 2171 - } - ], - "page_offsets": [ - { - "start": 293, - "end": 325 - } - ] - }, - { - "position": { - "top": 971, - "bottom": 1074, - "left": 211, - "right": 810 - }, - "text": "rejected", - "rows": [ - 7 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2172, - "end": 2180 - } - ], - "page_offsets": [ - { - "start": 326, - "end": 334 - } - ] - }, - { - "position": { - "top": 971, - "bottom": 1076, - "left": 810, - "right": 1308 - }, - "text": "bool", - "rows": [ - 7 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2181, - "end": 2185 - } - ], - "page_offsets": [ - { - "start": 335, - "end": 339 - } - ] - }, - { - "position": { - "top": 971, - "bottom": 1076, - "left": 1308, - "right": 2334 - }, - "text": "submission. review. rejected 2", - "rows": [ - 7 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2186, - "end": 2216 - } - ], - "page_offsets": [ - { - "start": 340, - "end": 370 - } - ] - }, - { - "position": { - "top": 1076, - "bottom": 1172, - "left": 211, - "right": 810 - }, - "text": "rejection_reason", - "rows": [ - 8 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2217, - "end": 2233 - } - ], - "page_offsets": [ - { - "start": 371, - "end": 387 - } - ] - }, - { - "position": { - "top": 1076, - "bottom": 1172, - "left": 810, - "right": 1308 - }, - "text": "str", - "rows": [ - 8 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2234, - "end": 2237 - } - ], - "page_offsets": [ - { - "start": 388, - "end": 391 - } - ] - }, - { - "position": { - "top": 1076, - "bottom": 1174, - "left": 1308, - "right": 2334 - }, - "text": "submission.review. notes 2", - "rows": [ - 8 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2238, - "end": 2264 - } - ], - "page_offsets": [ - { - "start": 392, - "end": 418 - } - ] - }, - { - "position": { - "top": 1172, - "bottom": 1268, - "left": 211, - "right": 810 - }, - "text": "completed_at", - "rows": [ - 9 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2265, - "end": 2277 - } - ], - "page_offsets": [ - { - "start": 419, - "end": 431 - } - ] - }, - { - "position": { - "top": 1174, - "bottom": 1268, - "left": 810, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 9 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2278, - "end": 2286 - } - ], - "page_offsets": [ - { - "start": 432, - "end": 440 - } - ] - }, - { - "position": { - "top": 1174, - "bottom": 1268, - "left": 1308, - "right": 2334 - }, - "text": "submission. completedAt", - "rows": [ - 9 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2287, - "end": 2310 - } - ], - "page_offsets": [ - { - "start": 441, - "end": 464 - } - ] - }, - { - "position": { - "top": 1268, - "bottom": 1371, - "left": 211, - "right": 810 - }, - "text": "retrieved_at", - "rows": [ - 10 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2311, - "end": 2323 - } - ], - "page_offsets": [ - { - "start": 465, - "end": 477 - } - ] - }, - { - "position": { - "top": 1268, - "bottom": 1371, - "left": 810, - "right": 1308 - }, - "text": "datetime", - "rows": [ - 10 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2324, - "end": 2332 - } - ], - "page_offsets": [ - { - "start": 478, - "end": 486 - } - ] - }, - { - "position": { - "top": 1270, - "bottom": 1373, - "left": 1308, - "right": 2334 - }, - "text": "submission. updatedAt 3", - "rows": [ - 10 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2333, - "end": 2356 - } - ], - "page_offsets": [ - { - "start": 487, - "end": 510 - } - ] - }, - { - "position": { - "top": 1371, - "bottom": 1471, - "left": 209, - "right": 810 - }, - "text": "failed", - "rows": [ - 11 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2357, - "end": 2363 - } - ], - "page_offsets": [ - { - "start": 511, - "end": 517 - } - ] - }, - { - "position": { - "top": 1373, - "bottom": 1471, - "left": 810, - "right": 1308 - }, - "text": "bool", - "rows": [ - 11 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2364, - "end": 2368 - } - ], - "page_offsets": [ - { - "start": 518, - "end": 522 - } - ] - }, - { - "position": { - "top": 1373, - "bottom": 1471, - "left": 1308, - "right": 2334 - }, - "text": "submission.status 4", - "rows": [ - 11 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2369, - "end": 2388 - } - ], - "page_offsets": [ - { - "start": 523, - "end": 542 - } - ] - }, - { - "position": { - "top": 1471, - "bottom": 1561, - "left": 209, - "right": 810 - }, - "text": "status", - "rows": [ - 12 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2389, - "end": 2395 - } - ], - "page_offsets": [ - { - "start": 543, - "end": 549 - } - ] - }, - { - "position": { - "top": 1471, - "bottom": 1559, - "left": 810, - "right": 1308 - }, - "text": "enum", - "rows": [ - 12 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2396, - "end": 2400 - } - ], - "page_offsets": [ - { - "start": 550, - "end": 554 - } - ] - }, - { - "position": { - "top": 1473, - "bottom": 1559, - "left": 1308, - "right": 2334 - }, - "text": "submission.status", - "rows": [ - 12 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2401, - "end": 2418 - } - ], - "page_offsets": [ - { - "start": 555, - "end": 572 - } - ] - }, - { - "position": { - "top": 1561, - "bottom": 1653, - "left": 209, - "right": 810 - }, - "text": "workflow_id", - "rows": [ - 13 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2419, - "end": 2430 - } - ], - "page_offsets": [ - { - "start": 573, - "end": 584 - } - ] - }, - { - "position": { - "top": 1561, - "bottom": 1653, - "left": 810, - "right": 1308 - }, - "text": "int", - "rows": [ - 13 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2431, - "end": 2434 - } - ], - "page_offsets": [ - { - "start": 585, - "end": 588 - } - ] - }, - { - "position": { - "top": 1561, - "bottom": 1653, - "left": 1308, - "right": 2334 - }, - "text": "submission.workflowId", - "rows": [ - 13 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 2435, - "end": 2456 - } - ], - "page_offsets": [ - { - "start": 589, - "end": 610 - } - ] - } - ], - "doc_offsets": [ - { - "start": 1861, - "end": 2456 - } - ], - "page_offsets": [ - { - "start": 15, - "end": 610 - } - ], - "table_id": 2, - "table_offset": { - "row": 0, - "column": 0 - } - } - ], - [ - { - "page_num": 3, - "position": { - "top": 2426, - "bottom": 2818, - "left": 211, - "right": 2337 - }, - "num_rows": 4, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 2428, - "bottom": 2542, - "left": 211, - "right": 693 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 3862, - "end": 3868 - } - ], - "page_offsets": [ - { - "start": 720, - "end": 726 - } - ] - }, - { - "position": { - "top": 2428, - "bottom": 2540, - "left": 693, - "right": 1156 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 3869, - "end": 3873 - } - ], - "page_offsets": [ - { - "start": 727, - "end": 731 - } - ] - }, - { - "position": { - "top": 2426, - "bottom": 2540, - "left": 1156, - "right": 2337 - }, - "text": "GraphQL Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 3874, - "end": 3888 - } - ], - "page_offsets": [ - { - "start": 732, - "end": 746 - } - ] - }, - { - "position": { - "top": 2542, - "bottom": 2632, - "left": 211, - "right": 693 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3889, - "end": 3891 - } - ], - "page_offsets": [ - { - "start": 747, - "end": 749 - } - ] - }, - { - "position": { - "top": 2542, - "bottom": 2632, - "left": 693, - "right": 1156 - }, - "text": "int", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3892, - "end": 3895 - } - ], - "page_offsets": [ - { - "start": 750, - "end": 753 - } - ] - }, - { - "position": { - "top": 2540, - "bottom": 2632, - "left": 1156, - "right": 2337 - }, - "text": "submission. inputFile.id", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3896, - "end": 3920 - } - ], - "page_offsets": [ - { - "start": 754, - "end": 778 - } - ] - }, - { - "position": { - "top": 2634, - "bottom": 2726, - "left": 211, - "right": 693 - }, - "text": "name", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3921, - "end": 3925 - } - ], - "page_offsets": [ - { - "start": 779, - "end": 783 - } - ] - }, - { - "position": { - "top": 2632, - "bottom": 2724, - "left": 693, - "right": 1156 - }, - "text": "str", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3926, - "end": 3929 - } - ], - "page_offsets": [ - { - "start": 784, - "end": 787 - } - ] - }, - { - "position": { - "top": 2632, - "bottom": 2724, - "left": 1156, - "right": 2337 - }, - "text": "submission. inputFile.filename", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3930, - "end": 3960 - } - ], - "page_offsets": [ - { - "start": 788, - "end": 818 - } - ] - }, - { - "position": { - "top": 2726, - "bottom": 2816, - "left": 211, - "right": 693 - }, - "text": "submission_id", - "rows": [ - 3 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3961, - "end": 3974 - } - ], - "page_offsets": [ - { - "start": 819, - "end": 832 - } - ] - }, - { - "position": { - "top": 2726, - "bottom": 2818, - "left": 695, - "right": 1156 - }, - "text": "int", - "rows": [ - 3 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3975, - "end": 3978 - } - ], - "page_offsets": [ - { - "start": 833, - "end": 836 - } - ] - }, - { - "position": { - "top": 2724, - "bottom": 2816, - "left": 1156, - "right": 2337 - }, - "text": "submission.id", - "rows": [ - 3 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 3979, - "end": 3992 - } - ], - "page_offsets": [ - { - "start": 837, - "end": 850 - } - ] - } - ], - "doc_offsets": [ - { - "start": 3862, - "end": 3992 - } - ], - "page_offsets": [ - { - "start": 720, - "end": 850 - } - ], - "table_id": 3, - "table_offset": { - "row": 0, - "column": 0 - } - } - ], - [ - { - "page_num": 4, - "position": { - "top": 172, - "bottom": 655, - "left": 210, - "right": 2335 - }, - "num_rows": 5, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 174, - "bottom": 288, - "left": 212, - "right": 606 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4199, - "end": 4205 - } - ], - "page_offsets": [ - { - "start": 13, - "end": 19 - } - ] - }, - { - "position": { - "top": 172, - "bottom": 288, - "left": 606, - "right": 1190 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4206, - "end": 4210 - } - ], - "page_offsets": [ - { - "start": 20, - "end": 24 - } - ] - }, - { - "position": { - "top": 172, - "bottom": 283, - "left": 1190, - "right": 2333 - }, - "text": "GraphQL Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4211, - "end": 4225 - } - ], - "page_offsets": [ - { - "start": 25, - "end": 39 - } - ] - }, - { - "position": { - "top": 288, - "bottom": 379, - "left": 210, - "right": 606 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4226, - "end": 4228 - } - ], - "page_offsets": [ - { - "start": 40, - "end": 42 - } - ] - }, - { - "position": { - "top": 288, - "bottom": 379, - "left": 606, - "right": 1190 - }, - "text": "int", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4229, - "end": 4232 - } - ], - "page_offsets": [ - { - "start": 43, - "end": 46 - } - ] - }, - { - "position": { - "top": 288, - "bottom": 375, - "left": 1190, - "right": 2333 - }, - "text": "userSnapshot.id", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4233, - "end": 4248 - } - ], - "page_offsets": [ - { - "start": 47, - "end": 62 - } - ] - }, - { - "position": { - "top": 382, - "bottom": 471, - "left": 210, - "right": 606 - }, - "text": "name", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4249, - "end": 4253 - } - ], - "page_offsets": [ - { - "start": 63, - "end": 67 - } - ] - }, - { - "position": { - "top": 379, - "bottom": 471, - "left": 606, - "right": 1190 - }, - "text": "str", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4254, - "end": 4257 - } - ], - "page_offsets": [ - { - "start": 68, - "end": 71 - } - ] - }, - { - "position": { - "top": 379, - "bottom": 471, - "left": 1190, - "right": 2335 - }, - "text": "userSnapshot . name", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4258, - "end": 4277 - } - ], - "page_offsets": [ - { - "start": 72, - "end": 91 - } - ] - }, - { - "position": { - "top": 474, - "bottom": 565, - "left": 210, - "right": 606 - }, - "text": "email", - "rows": [ - 3 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4278, - "end": 4283 - } - ], - "page_offsets": [ - { - "start": 92, - "end": 97 - } - ] - }, - { - "position": { - "top": 471, - "bottom": 565, - "left": 606, - "right": 1190 - }, - "text": "str", - "rows": [ - 3 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4284, - "end": 4287 - } - ], - "page_offsets": [ - { - "start": 98, - "end": 101 - } - ] - }, - { - "position": { - "top": 471, - "bottom": 565, - "left": 1190, - "right": 2335 - }, - "text": "userSnapshot. email", - "rows": [ - 3 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4288, - "end": 4307 - } - ], - "page_offsets": [ - { - "start": 102, - "end": 121 - } - ] - }, - { - "position": { - "top": 565, - "bottom": 655, - "left": 210, - "right": 606 - }, - "text": "enabled", - "rows": [ - 4 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4308, - "end": 4315 - } - ], - "page_offsets": [ - { - "start": 122, - "end": 129 - } - ] - }, - { - "position": { - "top": 565, - "bottom": 655, - "left": 606, - "right": 1190 - }, - "text": "bool", - "rows": [ - 4 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4316, - "end": 4320 - } - ], - "page_offsets": [ - { - "start": 130, - "end": 134 - } - ] - }, - { - "position": { - "top": 565, - "bottom": 655, - "left": 1190, - "right": 2335 - }, - "text": "userSnapshot . enabled", - "rows": [ - 4 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4321, - "end": 4343 - } - ], - "page_offsets": [ - { - "start": 135, - "end": 157 - } - ] - } - ], - "doc_offsets": [ - { - "start": 4199, - "end": 4343 - } - ], - "page_offsets": [ - { - "start": 13, - "end": 157 - } - ], - "table_id": 4, - "table_offset": { - "row": 0, - "column": 0 - } - } - ], - [ - { - "page_num": 5, - "position": { - "top": 256, - "bottom": 990, - "left": 209, - "right": 2332 - }, - "num_rows": 7, - "num_columns": 3, - "cells": [ - { - "position": { - "top": 256, - "bottom": 366, - "left": 211, - "right": 808 - }, - "text": "Column", - "rows": [ - 0 - ], - "columns": [ - 0 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4745, - "end": 4751 - } - ], - "page_offsets": [ - { - "start": 15, - "end": 21 - } - ] - }, - { - "position": { - "top": 256, - "bottom": 371, - "left": 808, - "right": 1325 - }, - "text": "Type", - "rows": [ - 0 - ], - "columns": [ - 1 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4752, - "end": 4756 - } - ], - "page_offsets": [ - { - "start": 22, - "end": 26 - } - ] - }, - { - "position": { - "top": 256, - "bottom": 371, - "left": 1325, - "right": 2330 - }, - "text": "Result File Source", - "rows": [ - 0 - ], - "columns": [ - 2 - ], - "cell_type": "header", - "doc_offsets": [ - { - "start": 4757, - "end": 4775 - } - ], - "page_offsets": [ - { - "start": 27, - "end": 45 - } - ] - }, - { - "position": { - "top": 371, - "bottom": 480, - "left": 211, - "right": 808 - }, - "text": "id", - "rows": [ - 1 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4776, - "end": 4778 - } - ], - "page_offsets": [ - { - "start": 46, - "end": 48 - } - ] - }, - { - "position": { - "top": 371, - "bottom": 480, - "left": 808, - "right": 1325 - }, - "text": "uuid", - "rows": [ - 1 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4779, - "end": 4783 - } - ], - "page_offsets": [ - { - "start": 49, - "end": 53 - } - ] - }, - { - "position": { - "top": 371, - "bottom": 480, - "left": 1325, - "right": 2330 - }, - "text": "Generated by integration5", - "rows": [ - 1 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4784, - "end": 4809 - } - ], - "page_offsets": [ - { - "start": 54, - "end": 79 - } - ] - }, - { - "position": { - "top": 480, - "bottom": 584, - "left": 211, - "right": 808 - }, - "text": "label", - "rows": [ - 2 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4810, - "end": 4815 - } - ], - "page_offsets": [ - { - "start": 80, - "end": 85 - } - ] - }, - { - "position": { - "top": 480, - "bottom": 584, - "left": 810, - "right": 1325 - }, - "text": "str", - "rows": [ - 2 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4816, - "end": 4819 - } - ], - "page_offsets": [ - { - "start": 86, - "end": 89 - } - ] - }, - { - "position": { - "top": 483, - "bottom": 584, - "left": 1325, - "right": 2330 - }, - "text": "Prediction. Label 6,7", - "rows": [ - 2 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4820, - "end": 4841 - } - ], - "page_offsets": [ - { - "start": 90, - "end": 111 - } - ] - }, - { - "position": { - "top": 584, - "bottom": 687, - "left": 211, - "right": 810 - }, - "text": "predicted_value", - "rows": [ - 3 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4842, - "end": 4857 - } - ], - "page_offsets": [ - { - "start": 112, - "end": 127 - } - ] - }, - { - "position": { - "top": 584, - "bottom": 687, - "left": 810, - "right": 1325 - }, - "text": "str", - "rows": [ - 3 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4858, - "end": 4861 - } - ], - "page_offsets": [ - { - "start": 128, - "end": 131 - } - ] - }, - { - "position": { - "top": 586, - "bottom": 689, - "left": 1325, - "right": 2330 - }, - "text": "Prediction. Text 8,7", - "rows": [ - 3 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4862, - "end": 4882 - } - ], - "page_offsets": [ - { - "start": 132, - "end": 152 - } - ] - }, - { - "position": { - "top": 689, - "bottom": 790, - "left": 211, - "right": 810 - }, - "text": "reviewed_value", - "rows": [ - 4 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4883, - "end": 4897 - } - ], - "page_offsets": [ - { - "start": 153, - "end": 167 - } - ] - }, - { - "position": { - "top": 689, - "bottom": 790, - "left": 810, - "right": 1325 - }, - "text": "str", - "rows": [ - 4 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4898, - "end": 4901 - } - ], - "page_offsets": [ - { - "start": 168, - "end": 171 - } - ] - }, - { - "position": { - "top": 689, - "bottom": 790, - "left": 1325, - "right": 2330 - }, - "text": "Prediction. Text 8,7", - "rows": [ - 4 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4902, - "end": 4922 - } - ], - "page_offsets": [ - { - "start": 172, - "end": 192 - } - ] - }, - { - "position": { - "top": 790, - "bottom": 893, - "left": 211, - "right": 810 - }, - "text": "submission_file_id", - "rows": [ - 5 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4923, - "end": 4941 - } - ], - "page_offsets": [ - { - "start": 193, - "end": 211 - } - ] - }, - { - "position": { - "top": 790, - "bottom": 893, - "left": 810, - "right": 1325 - }, - "text": "int", - "rows": [ - 5 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4942, - "end": 4945 - } - ], - "page_offsets": [ - { - "start": 212, - "end": 215 - } - ] - }, - { - "position": { - "top": 792, - "bottom": 893, - "left": 1325, - "right": 2330 - }, - "text": "Prediction. Document. Id 7", - "rows": [ - 5 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4946, - "end": 4972 - } - ], - "page_offsets": [ - { - "start": 216, - "end": 242 - } - ] - }, - { - "position": { - "top": 893, - "bottom": 990, - "left": 209, - "right": 810 - }, - "text": "model_id", - "rows": [ - 6 - ], - "columns": [ - 0 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4973, - "end": 4981 - } - ], - "page_offsets": [ - { - "start": 243, - "end": 251 - } - ] - }, - { - "position": { - "top": 893, - "bottom": 990, - "left": 812, - "right": 1325 - }, - "text": "int", - "rows": [ - 6 - ], - "columns": [ - 1 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4982, - "end": 4985 - } - ], - "page_offsets": [ - { - "start": 252, - "end": 255 - } - ] - }, - { - "position": { - "top": 895, - "bottom": 990, - "left": 1325, - "right": 2332 - }, - "text": "Prediction. Model. Id 7", - "rows": [ - 6 - ], - "columns": [ - 2 - ], - "cell_type": "content", - "doc_offsets": [ - { - "start": 4986, - "end": 5009 - } - ], - "page_offsets": [ - { - "start": 256, - "end": 279 - } - ] - } - ], - "doc_offsets": [ - { - "start": 4745, - "end": 5009 - } - ], - "page_offsets": [ - { - "start": 15, - "end": 279 - } - ], - "table_id": 5, - "table_offset": { - "row": 0, - "column": 0 - } - } - ] -] \ No newline at end of file diff --git a/tests/data/etloutput/4289/107458/submission_107458_result.json b/tests/data/etloutput/4289/107458/submission_107458_result.json deleted file mode 100644 index aacaf34..0000000 --- a/tests/data/etloutput/4289/107458/submission_107458_result.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "file_version": 3, - "submission_id": 107458, - "modelgroup_metadata": { - "4631": { - "id": 4631, - "task_type": "form_extraction", - "name": "Standard Document v3", - "selected_model": { - "id": 8229, - "model_type": "form_extraction" - } - } - }, - "submission_results": [ - { - "submissionfile_id": 101157, - "etl_output": "indico-file:///storage/submission/4289/107458/101157/etl_output.json", - "input_filename": "data_model.pdf", - "input_filepath": "indico-file:///storage/submission/4289/107458/101157.pdf", - "input_filesize": 130938, - "model_results": { - "ORIGINAL": { - "4631": [] - } - }, - "component_results": { - "ORIGINAL": {} - }, - "rejected": { - "models": { - "4631": [] - }, - "components": {} - } - } - ], - "reviews": {} -} \ No newline at end of file diff --git a/tests/data/etloutput/4723/111922/110237/etl_output.json b/tests/data/etloutput/4723/111922/110237/etl_output.json new file mode 100644 index 0000000..31add2e --- /dev/null +++ b/tests/data/etloutput/4723/111922/110237/etl_output.json @@ -0,0 +1 @@ +{"pages":[{"image":"indico-file:///storage/submission/4723/111922/110237/original_page_0.png","thumbnail":"indico-file:///storage/submission/4723/111922/110237/original_thumbnail_0.png","size":{"width":2550,"height":3300},"dpi":{"dpix":300,"dpiy":300},"filename":"invoice_purchase_order.pdf","doc_offset":{"start":0,"end":760},"page_num":0,"text":"indico-file:///storage/submission/4723/111922/110237/page_0_text.txt","characters":"indico-file:///storage/submission/4723/111922/110237/page_0_chars.json","tokens":"indico-file:///storage/submission/4723/111922/110237/page_0_tokens.json","blocks":"indico-file:///storage/submission/4723/111922/110237/page_0_blocks.json","page_info":"indico-file:///storage/submission/4723/111922/110237/page_info_0.json"},{"image":"indico-file:///storage/submission/4723/111922/110237/original_page_1.png","thumbnail":"indico-file:///storage/submission/4723/111922/110237/original_thumbnail_1.png","size":{"width":2550,"height":3300},"dpi":{"dpix":300,"dpiy":300},"filename":"invoice_purchase_order.pdf","doc_offset":{"start":761,"end":2090},"page_num":1,"text":"indico-file:///storage/submission/4723/111922/110237/page_1_text.txt","characters":"indico-file:///storage/submission/4723/111922/110237/page_1_chars.json","tokens":"indico-file:///storage/submission/4723/111922/110237/page_1_tokens.json","blocks":"indico-file:///storage/submission/4723/111922/110237/page_1_blocks.json","page_info":"indico-file:///storage/submission/4723/111922/110237/page_info_1.json"}],"num_pages":2,"full_text":"indico-file:///storage/submission/4723/111922/110237/full_text.txt","email_metadata":{}} \ No newline at end of file diff --git a/tests/data/etloutput/4723/111922/110237/page_0_text.txt b/tests/data/etloutput/4723/111922/110237/page_0_text.txt new file mode 100644 index 0000000..befa647 --- /dev/null +++ b/tests/data/etloutput/4723/111922/110237/page_0_text.txt @@ -0,0 +1,60 @@ +HubSpot, Inc. +2 First Street, +Boston, +MA 02141 Tax +ID: 11-2665791 +indico data solutions, INC +Credit Card Receipt +579266 +Date +06/21/2016 +Bill To: +186 SOUTH STREET +SUITE 400 +Boston MA 02111 +US +Ship To: +186 SOUTH STREET +SUITE 400 +Boston MA 02111 +US +Portal ID +Currency +392757 +8 +USD +Item +Billing Frequency +Start Date +End Date +Quantity +Line Total +HubSpot Enterprise +Included Contacts +Enterprise Contacts - Per 1000 +Monthly +Monthly +Monthly +06/21/2016 +06/21/2016 +06/21/2016 +07/20/2016 +1 +$1,200.00 +07/20/2016 +10 +$0.00 +07/20/2016 +5 +$25.00 +Subtotal +$1,225.00 +Total Tax +$76.56 +Total +$1,301.56 +Please contact your Account Manager for any questions related to your contract. For any other general invoicing inquiries, please send +an email to bill @hubspot. +net +1 / 1 +HubSpot \ No newline at end of file diff --git a/tests/data/etloutput/4723/111922/110237/page_0_tokens.json b/tests/data/etloutput/4723/111922/110237/page_0_tokens.json new file mode 100644 index 0000000..6d34cfd --- /dev/null +++ b/tests/data/etloutput/4723/111922/110237/page_0_tokens.json @@ -0,0 +1 @@ +[{"page_offset":{"start":0,"end":8},"doc_offset":{"start":0,"end":8},"block_offset":{"start":0,"end":8},"page_num":0,"text":"HubSpot,","position":{"top":430,"bottom":462,"left":902,"right":1035,"bbTop":430,"bbBot":462,"bbLeft":902,"bbRight":1035},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":9,"end":13},"doc_offset":{"start":9,"end":13},"block_offset":{"start":9,"end":13},"page_num":0,"text":"Inc.","position":{"top":431,"bottom":455,"left":1051,"right":1098,"bbTop":431,"bbBot":455,"bbLeft":1051,"bbRight":1098},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":14,"end":15},"doc_offset":{"start":14,"end":15},"block_offset":{"start":14,"end":15},"page_num":0,"text":"2","position":{"top":471,"bottom":495,"left":901,"right":917,"bbTop":471,"bbBot":495,"bbLeft":901,"bbRight":917},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":16,"end":21},"doc_offset":{"start":16,"end":21},"block_offset":{"start":16,"end":21},"page_num":0,"text":"First","position":{"top":471,"bottom":495,"left":930,"right":991,"bbTop":471,"bbBot":495,"bbLeft":930,"bbRight":991},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":22,"end":29},"doc_offset":{"start":22,"end":29},"block_offset":{"start":22,"end":29},"page_num":0,"text":"Street,","position":{"top":470,"bottom":500,"left":1003,"right":1097,"bbTop":470,"bbBot":500,"bbLeft":1003,"bbRight":1097},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":30,"end":37},"doc_offset":{"start":30,"end":37},"block_offset":{"start":30,"end":37},"page_num":0,"text":"Boston,","position":{"top":508,"bottom":541,"left":896,"right":1012,"bbTop":508,"bbBot":541,"bbLeft":896,"bbRight":1012},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":38,"end":40},"doc_offset":{"start":38,"end":40},"block_offset":{"start":0,"end":2},"page_num":0,"text":"MA","position":{"top":511,"bottom":535,"left":1024,"right":1071,"bbTop":511,"bbBot":535,"bbLeft":1024,"bbRight":1071},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":41,"end":46},"doc_offset":{"start":41,"end":46},"block_offset":{"start":3,"end":8},"page_num":0,"text":"02141","position":{"top":511,"bottom":535,"left":1082,"right":1167,"bbTop":511,"bbBot":535,"bbLeft":1082,"bbRight":1167},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":47,"end":50},"doc_offset":{"start":47,"end":50},"block_offset":{"start":9,"end":12},"page_num":0,"text":"Tax","position":{"top":511,"bottom":535,"left":1184,"right":1234,"bbTop":511,"bbBot":535,"bbLeft":1184,"bbRight":1234},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":51,"end":54},"doc_offset":{"start":51,"end":54},"block_offset":{"start":0,"end":3},"page_num":0,"text":"ID:","position":{"top":551,"bottom":575,"left":903,"right":940,"bbTop":551,"bbBot":575,"bbLeft":903,"bbRight":940},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":55,"end":65},"doc_offset":{"start":55,"end":65},"block_offset":{"start":4,"end":14},"page_num":0,"text":"11-2665791","position":{"top":551,"bottom":575,"left":953,"right":1121,"bbTop":551,"bbBot":575,"bbLeft":953,"bbRight":1121},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":66,"end":72},"doc_offset":{"start":66,"end":72},"block_offset":{"start":0,"end":6},"page_num":0,"text":"indico","position":{"top":673,"bottom":710,"left":173,"right":315,"bbTop":673,"bbBot":710,"bbLeft":173,"bbRight":315},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":73,"end":77},"doc_offset":{"start":73,"end":77},"block_offset":{"start":7,"end":11},"page_num":0,"text":"data","position":{"top":674,"bottom":710,"left":332,"right":432,"bbTop":674,"bbBot":710,"bbLeft":332,"bbRight":432},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":78,"end":88},"doc_offset":{"start":78,"end":88},"block_offset":{"start":12,"end":22},"page_num":0,"text":"solutions,","position":{"top":673,"bottom":718,"left":449,"right":680,"bbTop":673,"bbBot":718,"bbLeft":449,"bbRight":680},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":89,"end":92},"doc_offset":{"start":89,"end":92},"block_offset":{"start":23,"end":26},"page_num":0,"text":"INC","position":{"top":673,"bottom":710,"left":699,"right":780,"bbTop":673,"bbBot":710,"bbLeft":699,"bbRight":780},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":93,"end":99},"doc_offset":{"start":93,"end":99},"block_offset":{"start":0,"end":6},"page_num":0,"text":"Credit","position":{"top":673,"bottom":710,"left":1399,"right":1540,"bbTop":673,"bbBot":710,"bbLeft":1399,"bbRight":1540},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":100,"end":104},"doc_offset":{"start":100,"end":104},"block_offset":{"start":7,"end":11},"page_num":0,"text":"Card","position":{"top":673,"bottom":710,"left":1557,"right":1665,"bbTop":673,"bbBot":710,"bbLeft":1557,"bbRight":1665},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":105,"end":112},"doc_offset":{"start":105,"end":112},"block_offset":{"start":12,"end":19},"page_num":0,"text":"Receipt","position":{"top":673,"bottom":720,"left":1686,"right":1861,"bbTop":673,"bbBot":720,"bbLeft":1686,"bbRight":1861},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":113,"end":119},"doc_offset":{"start":113,"end":119},"block_offset":{"start":0,"end":6},"page_num":0,"text":"579266","position":{"top":674,"bottom":711,"left":2012,"right":2175,"bbTop":674,"bbBot":711,"bbLeft":2012,"bbRight":2175},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":120,"end":124},"doc_offset":{"start":120,"end":124},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Date","position":{"top":738,"bottom":766,"left":1400,"right":1477,"bbTop":738,"bbBot":766,"bbLeft":1400,"bbRight":1477},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":125,"end":135},"doc_offset":{"start":125,"end":135},"block_offset":{"start":0,"end":10},"page_num":0,"text":"06/21/2016","position":{"top":752,"bottom":779,"left":1807,"right":1992,"bbTop":752,"bbBot":779,"bbLeft":1807,"bbRight":1992},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":136,"end":140},"doc_offset":{"start":136,"end":140},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Bill","position":{"top":830,"bottom":857,"left":172,"right":225,"bbTop":830,"bbBot":857,"bbLeft":172,"bbRight":225},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":141,"end":144},"doc_offset":{"start":141,"end":144},"block_offset":{"start":5,"end":8},"page_num":0,"text":"To:","position":{"top":830,"bottom":858,"left":235,"right":287,"bbTop":830,"bbBot":858,"bbLeft":235,"bbRight":287},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":145,"end":148},"doc_offset":{"start":145,"end":148},"block_offset":{"start":0,"end":3},"page_num":0,"text":"186","position":{"top":883,"bottom":910,"left":173,"right":231,"bbTop":883,"bbBot":910,"bbLeft":173,"bbRight":231},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":149,"end":154},"doc_offset":{"start":149,"end":154},"block_offset":{"start":4,"end":9},"page_num":0,"text":"SOUTH","position":{"top":881,"bottom":910,"left":244,"right":371,"bbTop":881,"bbBot":910,"bbLeft":244,"bbRight":371},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":155,"end":161},"doc_offset":{"start":155,"end":161},"block_offset":{"start":10,"end":16},"page_num":0,"text":"STREET","position":{"top":881,"bottom":910,"left":386,"right":532,"bbTop":881,"bbBot":910,"bbLeft":386,"bbRight":532},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":162,"end":167},"doc_offset":{"start":162,"end":167},"block_offset":{"start":17,"end":22},"page_num":0,"text":"SUITE","position":{"top":926,"bottom":955,"left":171,"right":278,"bbTop":926,"bbBot":955,"bbLeft":171,"bbRight":278},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":168,"end":171},"doc_offset":{"start":168,"end":171},"block_offset":{"start":23,"end":26},"page_num":0,"text":"400","position":{"top":928,"bottom":955,"left":291,"right":351,"bbTop":928,"bbBot":955,"bbLeft":291,"bbRight":351},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":172,"end":178},"doc_offset":{"start":172,"end":178},"block_offset":{"start":27,"end":33},"page_num":0,"text":"Boston","position":{"top":972,"bottom":1000,"left":172,"right":284,"bbTop":972,"bbBot":1000,"bbLeft":172,"bbRight":284},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":179,"end":181},"doc_offset":{"start":179,"end":181},"block_offset":{"start":34,"end":36},"page_num":0,"text":"MA","position":{"top":972,"bottom":999,"left":299,"right":352,"bbTop":972,"bbBot":999,"bbLeft":299,"bbRight":352},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":182,"end":187},"doc_offset":{"start":182,"end":187},"block_offset":{"start":37,"end":42},"page_num":0,"text":"02111","position":{"top":973,"bottom":1000,"left":365,"right":460,"bbTop":973,"bbBot":1000,"bbLeft":365,"bbRight":460},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":188,"end":190},"doc_offset":{"start":188,"end":190},"block_offset":{"start":43,"end":45},"page_num":0,"text":"US","position":{"top":1016,"bottom":1045,"left":173,"right":220,"bbTop":1016,"bbBot":1045,"bbLeft":173,"bbRight":220},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":191,"end":195},"doc_offset":{"start":191,"end":195},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Ship","position":{"top":829,"bottom":865,"left":785,"right":863,"bbTop":829,"bbBot":865,"bbLeft":785,"bbRight":863},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":196,"end":199},"doc_offset":{"start":196,"end":199},"block_offset":{"start":5,"end":8},"page_num":0,"text":"To:","position":{"top":830,"bottom":858,"left":872,"right":924,"bbTop":830,"bbBot":858,"bbLeft":872,"bbRight":924},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":200,"end":203},"doc_offset":{"start":200,"end":203},"block_offset":{"start":9,"end":12},"page_num":0,"text":"186","position":{"top":883,"bottom":910,"left":787,"right":844,"bbTop":883,"bbBot":910,"bbLeft":787,"bbRight":844},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":204,"end":209},"doc_offset":{"start":204,"end":209},"block_offset":{"start":13,"end":18},"page_num":0,"text":"SOUTH","position":{"top":881,"bottom":910,"left":858,"right":985,"bbTop":881,"bbBot":910,"bbLeft":858,"bbRight":985},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":210,"end":216},"doc_offset":{"start":210,"end":216},"block_offset":{"start":19,"end":25},"page_num":0,"text":"STREET","position":{"top":881,"bottom":910,"left":1000,"right":1145,"bbTop":881,"bbBot":910,"bbLeft":1000,"bbRight":1145},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":217,"end":222},"doc_offset":{"start":217,"end":222},"block_offset":{"start":26,"end":31},"page_num":0,"text":"SUITE","position":{"top":926,"bottom":955,"left":785,"right":892,"bbTop":926,"bbBot":955,"bbLeft":785,"bbRight":892},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":223,"end":226},"doc_offset":{"start":223,"end":226},"block_offset":{"start":32,"end":35},"page_num":0,"text":"400","position":{"top":928,"bottom":955,"left":905,"right":965,"bbTop":928,"bbBot":955,"bbLeft":905,"bbRight":965},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":227,"end":233},"doc_offset":{"start":227,"end":233},"block_offset":{"start":36,"end":42},"page_num":0,"text":"Boston","position":{"top":972,"bottom":1000,"left":786,"right":897,"bbTop":972,"bbBot":1000,"bbLeft":786,"bbRight":897},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":234,"end":236},"doc_offset":{"start":234,"end":236},"block_offset":{"start":43,"end":45},"page_num":0,"text":"MA","position":{"top":972,"bottom":999,"left":913,"right":966,"bbTop":972,"bbBot":999,"bbLeft":913,"bbRight":966},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":237,"end":242},"doc_offset":{"start":237,"end":242},"block_offset":{"start":46,"end":51},"page_num":0,"text":"02111","position":{"top":973,"bottom":1000,"left":978,"right":1074,"bbTop":973,"bbBot":1000,"bbLeft":978,"bbRight":1074},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":243,"end":245},"doc_offset":{"start":243,"end":245},"block_offset":{"start":52,"end":54},"page_num":0,"text":"US","position":{"top":1016,"bottom":1045,"left":786,"right":833,"bbTop":1016,"bbBot":1045,"bbLeft":786,"bbRight":833},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":246,"end":252},"doc_offset":{"start":246,"end":252},"block_offset":{"start":0,"end":6},"page_num":0,"text":"Portal","position":{"top":810,"bottom":838,"left":1400,"right":1500,"bbTop":810,"bbBot":838,"bbLeft":1400,"bbRight":1500},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":253,"end":255},"doc_offset":{"start":253,"end":255},"block_offset":{"start":7,"end":9},"page_num":0,"text":"ID","position":{"top":810,"bottom":837,"left":1515,"right":1549,"bbTop":810,"bbBot":837,"bbLeft":1515,"bbRight":1549},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":256,"end":264},"doc_offset":{"start":256,"end":264},"block_offset":{"start":0,"end":8},"page_num":0,"text":"Currency","position":{"top":881,"bottom":917,"left":1398,"right":1560,"bbTop":881,"bbBot":917,"bbLeft":1398,"bbRight":1560},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":265,"end":271},"doc_offset":{"start":265,"end":271},"block_offset":{"start":0,"end":6},"page_num":0,"text":"392757","position":{"top":817,"bottom":857,"left":1806,"right":1925,"bbTop":817,"bbBot":857,"bbLeft":1806,"bbRight":1925},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":272,"end":273},"doc_offset":{"start":272,"end":273},"block_offset":{"start":0,"end":1},"page_num":0,"text":"8","position":{"top":824,"bottom":851,"left":1932,"right":1950,"bbTop":824,"bbBot":851,"bbLeft":1932,"bbRight":1950},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":274,"end":277},"doc_offset":{"start":274,"end":277},"block_offset":{"start":0,"end":3},"page_num":0,"text":"USD","position":{"top":895,"bottom":923,"left":1809,"right":1883,"bbTop":895,"bbBot":923,"bbLeft":1809,"bbRight":1883},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":278,"end":282},"doc_offset":{"start":278,"end":282},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Item","position":{"top":1141,"bottom":1166,"left":178,"right":243,"bbTop":1141,"bbBot":1166,"bbLeft":178,"bbRight":243},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":283,"end":290},"doc_offset":{"start":283,"end":290},"block_offset":{"start":0,"end":7},"page_num":0,"text":"Billing","position":{"top":1141,"bottom":1173,"left":1013,"right":1110,"bbTop":1141,"bbBot":1173,"bbLeft":1013,"bbRight":1110},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":291,"end":300},"doc_offset":{"start":291,"end":300},"block_offset":{"start":8,"end":17},"page_num":0,"text":"Frequency","position":{"top":1141,"bottom":1172,"left":1124,"right":1289,"bbTop":1141,"bbBot":1172,"bbLeft":1124,"bbRight":1289},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":301,"end":306},"doc_offset":{"start":301,"end":306},"block_offset":{"start":0,"end":5},"page_num":0,"text":"Start","position":{"top":1141,"bottom":1166,"left":1446,"right":1520,"bbTop":1141,"bbBot":1166,"bbLeft":1446,"bbRight":1520},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":307,"end":311},"doc_offset":{"start":307,"end":311},"block_offset":{"start":6,"end":10},"page_num":0,"text":"Date","position":{"top":1141,"bottom":1166,"left":1533,"right":1602,"bbTop":1141,"bbBot":1166,"bbLeft":1533,"bbRight":1602},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":312,"end":315},"doc_offset":{"start":312,"end":315},"block_offset":{"start":0,"end":3},"page_num":0,"text":"End","position":{"top":1141,"bottom":1166,"left":1703,"right":1761,"bbTop":1141,"bbBot":1166,"bbLeft":1703,"bbRight":1761},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":316,"end":320},"doc_offset":{"start":316,"end":320},"block_offset":{"start":4,"end":8},"page_num":0,"text":"Date","position":{"top":1141,"bottom":1166,"left":1775,"right":1844,"bbTop":1141,"bbBot":1166,"bbLeft":1775,"bbRight":1844},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":321,"end":329},"doc_offset":{"start":321,"end":329},"block_offset":{"start":0,"end":8},"page_num":0,"text":"Quantity","position":{"top":1141,"bottom":1172,"left":1956,"right":2089,"bbTop":1141,"bbBot":1172,"bbLeft":1956,"bbRight":2089},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":330,"end":334},"doc_offset":{"start":330,"end":334},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Line","position":{"top":1141,"bottom":1166,"left":2198,"right":2263,"bbTop":1141,"bbBot":1166,"bbLeft":2198,"bbRight":2263},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":335,"end":340},"doc_offset":{"start":335,"end":340},"block_offset":{"start":5,"end":10},"page_num":0,"text":"Total","position":{"top":1141,"bottom":1166,"left":2271,"right":2345,"bbTop":1141,"bbBot":1166,"bbLeft":2271,"bbRight":2345},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":341,"end":348},"doc_offset":{"start":341,"end":348},"block_offset":{"start":0,"end":7},"page_num":0,"text":"HubSpot","position":{"top":1237,"bottom":1273,"left":176,"right":318,"bbTop":1237,"bbBot":1273,"bbLeft":176,"bbRight":318},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":349,"end":359},"doc_offset":{"start":349,"end":359},"block_offset":{"start":8,"end":18},"page_num":0,"text":"Enterprise","position":{"top":1238,"bottom":1273,"left":332,"right":500,"bbTop":1238,"bbBot":1273,"bbLeft":332,"bbRight":500},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":360,"end":368},"doc_offset":{"start":360,"end":368},"block_offset":{"start":0,"end":8},"page_num":0,"text":"Included","position":{"top":1321,"bottom":1349,"left":177,"right":312,"bbTop":1321,"bbBot":1349,"bbLeft":177,"bbRight":312},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":369,"end":377},"doc_offset":{"start":369,"end":377},"block_offset":{"start":9,"end":17},"page_num":0,"text":"Contacts","position":{"top":1320,"bottom":1349,"left":327,"right":472,"bbTop":1320,"bbBot":1349,"bbLeft":327,"bbRight":472},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":378,"end":388},"doc_offset":{"start":378,"end":388},"block_offset":{"start":0,"end":10},"page_num":0,"text":"Enterprise","position":{"top":1404,"bottom":1439,"left":176,"right":344,"bbTop":1404,"bbBot":1439,"bbLeft":176,"bbRight":344},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":389,"end":397},"doc_offset":{"start":389,"end":397},"block_offset":{"start":11,"end":19},"page_num":0,"text":"Contacts","position":{"top":1404,"bottom":1432,"left":357,"right":502,"bbTop":1404,"bbBot":1432,"bbLeft":357,"bbRight":502},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":398,"end":399},"doc_offset":{"start":398,"end":399},"block_offset":{"start":20,"end":21},"page_num":0,"text":"-","position":{"top":1419,"bottom":1422,"left":516,"right":525,"bbTop":1419,"bbBot":1422,"bbLeft":516,"bbRight":525},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":400,"end":403},"doc_offset":{"start":400,"end":403},"block_offset":{"start":22,"end":25},"page_num":0,"text":"Per","position":{"top":1404,"bottom":1432,"left":540,"right":593,"bbTop":1404,"bbBot":1432,"bbLeft":540,"bbRight":593},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":404,"end":408},"doc_offset":{"start":404,"end":408},"block_offset":{"start":26,"end":30},"page_num":0,"text":"1000","position":{"top":1405,"bottom":1432,"left":608,"right":686,"bbTop":1405,"bbBot":1432,"bbLeft":608,"bbRight":686},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":409,"end":416},"doc_offset":{"start":409,"end":416},"block_offset":{"start":0,"end":7},"page_num":0,"text":"Monthly","position":{"top":1238,"bottom":1273,"left":1087,"right":1215,"bbTop":1238,"bbBot":1273,"bbLeft":1087,"bbRight":1215},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":417,"end":424},"doc_offset":{"start":417,"end":424},"block_offset":{"start":0,"end":7},"page_num":0,"text":"Monthly","position":{"top":1321,"bottom":1356,"left":1087,"right":1215,"bbTop":1321,"bbBot":1356,"bbLeft":1087,"bbRight":1215},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":425,"end":432},"doc_offset":{"start":425,"end":432},"block_offset":{"start":0,"end":7},"page_num":0,"text":"Monthly","position":{"top":1404,"bottom":1439,"left":1087,"right":1215,"bbTop":1404,"bbBot":1439,"bbLeft":1087,"bbRight":1215},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":433,"end":443},"doc_offset":{"start":433,"end":443},"block_offset":{"start":0,"end":10},"page_num":0,"text":"06/21/2016","position":{"top":1238,"bottom":1266,"left":1431,"right":1616,"bbTop":1238,"bbBot":1266,"bbLeft":1431,"bbRight":1616},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":444,"end":454},"doc_offset":{"start":444,"end":454},"block_offset":{"start":0,"end":10},"page_num":0,"text":"06/21/2016","position":{"top":1321,"bottom":1349,"left":1431,"right":1616,"bbTop":1321,"bbBot":1349,"bbLeft":1431,"bbRight":1616},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":455,"end":465},"doc_offset":{"start":455,"end":465},"block_offset":{"start":0,"end":10},"page_num":0,"text":"06/21/2016","position":{"top":1404,"bottom":1432,"left":1431,"right":1616,"bbTop":1404,"bbBot":1432,"bbLeft":1431,"bbRight":1616},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":466,"end":476},"doc_offset":{"start":466,"end":476},"block_offset":{"start":0,"end":10},"page_num":0,"text":"07/20/2016","position":{"top":1238,"bottom":1266,"left":1680,"right":1865,"bbTop":1238,"bbBot":1266,"bbLeft":1680,"bbRight":1865},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":477,"end":478},"doc_offset":{"start":477,"end":478},"block_offset":{"start":0,"end":1},"page_num":0,"text":"1","position":{"top":1239,"bottom":1265,"left":2015,"right":2025,"bbTop":1239,"bbBot":1265,"bbLeft":2015,"bbRight":2025},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":479,"end":488},"doc_offset":{"start":479,"end":488},"block_offset":{"start":0,"end":9},"page_num":0,"text":"$1,200.00","position":{"top":1236,"bottom":1270,"left":2189,"right":2353,"bbTop":1236,"bbBot":1270,"bbLeft":2189,"bbRight":2353},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":489,"end":499},"doc_offset":{"start":489,"end":499},"block_offset":{"start":0,"end":10},"page_num":0,"text":"07/20/2016","position":{"top":1321,"bottom":1349,"left":1680,"right":1865,"bbTop":1321,"bbBot":1349,"bbLeft":1680,"bbRight":1865},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":500,"end":502},"doc_offset":{"start":500,"end":502},"block_offset":{"start":0,"end":2},"page_num":0,"text":"10","position":{"top":1322,"bottom":1349,"left":2005,"right":2041,"bbTop":1322,"bbBot":1349,"bbLeft":2005,"bbRight":2041},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":503,"end":508},"doc_offset":{"start":503,"end":508},"block_offset":{"start":0,"end":5},"page_num":0,"text":"$0.00","position":{"top":1319,"bottom":1352,"left":2226,"right":2317,"bbTop":1319,"bbBot":1352,"bbLeft":2226,"bbRight":2317},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":509,"end":519},"doc_offset":{"start":509,"end":519},"block_offset":{"start":0,"end":10},"page_num":0,"text":"07/20/2016","position":{"top":1404,"bottom":1432,"left":1680,"right":1865,"bbTop":1404,"bbBot":1432,"bbLeft":1680,"bbRight":1865},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":520,"end":521},"doc_offset":{"start":520,"end":521},"block_offset":{"start":0,"end":1},"page_num":0,"text":"5","position":{"top":1405,"bottom":1432,"left":2013,"right":2031,"bbTop":1405,"bbBot":1432,"bbLeft":2013,"bbRight":2031},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":522,"end":528},"doc_offset":{"start":522,"end":528},"block_offset":{"start":0,"end":6},"page_num":0,"text":"$25.00","position":{"top":1402,"bottom":1435,"left":2215,"right":2327,"bbTop":1402,"bbBot":1435,"bbLeft":2215,"bbRight":2327},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":529,"end":537},"doc_offset":{"start":529,"end":537},"block_offset":{"start":0,"end":8},"page_num":0,"text":"Subtotal","position":{"top":1518,"bottom":1546,"left":1856,"right":2001,"bbTop":1518,"bbBot":1546,"bbLeft":1856,"bbRight":2001},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":538,"end":547},"doc_offset":{"start":538,"end":547},"block_offset":{"start":0,"end":9},"page_num":0,"text":"$1,225.00","position":{"top":1516,"bottom":1551,"left":2213,"right":2378,"bbTop":1516,"bbBot":1551,"bbLeft":2213,"bbRight":2378},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":548,"end":553},"doc_offset":{"start":548,"end":553},"block_offset":{"start":0,"end":5},"page_num":0,"text":"Total","position":{"top":1590,"bottom":1618,"left":1839,"right":1923,"bbTop":1590,"bbBot":1618,"bbLeft":1839,"bbRight":1923},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":554,"end":557},"doc_offset":{"start":554,"end":557},"block_offset":{"start":6,"end":9},"page_num":0,"text":"Tax","position":{"top":1590,"bottom":1618,"left":1933,"right":1993,"bbTop":1590,"bbBot":1618,"bbLeft":1933,"bbRight":1993},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":558,"end":564},"doc_offset":{"start":558,"end":564},"block_offset":{"start":0,"end":6},"page_num":0,"text":"$76.56","position":{"top":1588,"bottom":1622,"left":2266,"right":2378,"bbTop":1588,"bbBot":1622,"bbLeft":2266,"bbRight":2378},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":565,"end":570},"doc_offset":{"start":565,"end":570},"block_offset":{"start":0,"end":5},"page_num":0,"text":"Total","position":{"top":1662,"bottom":1690,"left":1918,"right":2001,"bbTop":1662,"bbBot":1690,"bbLeft":1918,"bbRight":2001},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":571,"end":580},"doc_offset":{"start":571,"end":580},"block_offset":{"start":0,"end":9},"page_num":0,"text":"$1,301.56","position":{"top":1660,"bottom":1695,"left":2213,"right":2378,"bbTop":1660,"bbBot":1695,"bbLeft":2213,"bbRight":2378},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":581,"end":587},"doc_offset":{"start":581,"end":587},"block_offset":{"start":0,"end":6},"page_num":0,"text":"Please","position":{"top":1778,"bottom":1806,"left":165,"right":275,"bbTop":1778,"bbBot":1806,"bbLeft":165,"bbRight":275},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":588,"end":595},"doc_offset":{"start":588,"end":595},"block_offset":{"start":7,"end":14},"page_num":0,"text":"contact","position":{"top":1780,"bottom":1806,"left":288,"right":407,"bbTop":1780,"bbBot":1806,"bbLeft":288,"bbRight":407},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":596,"end":600},"doc_offset":{"start":596,"end":600},"block_offset":{"start":15,"end":19},"page_num":0,"text":"your","position":{"top":1785,"bottom":1813,"left":419,"right":491,"bbTop":1785,"bbBot":1813,"bbLeft":419,"bbRight":491},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":601,"end":608},"doc_offset":{"start":601,"end":608},"block_offset":{"start":20,"end":27},"page_num":0,"text":"Account","position":{"top":1778,"bottom":1806,"left":502,"right":636,"bbTop":1778,"bbBot":1806,"bbLeft":502,"bbRight":636},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":609,"end":616},"doc_offset":{"start":609,"end":616},"block_offset":{"start":28,"end":35},"page_num":0,"text":"Manager","position":{"top":1778,"bottom":1813,"left":650,"right":795,"bbTop":1778,"bbBot":1813,"bbLeft":650,"bbRight":795},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":617,"end":620},"doc_offset":{"start":617,"end":620},"block_offset":{"start":36,"end":39},"page_num":0,"text":"for","position":{"top":1778,"bottom":1806,"left":807,"right":849,"bbTop":1778,"bbBot":1806,"bbLeft":807,"bbRight":849},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":621,"end":624},"doc_offset":{"start":621,"end":624},"block_offset":{"start":40,"end":43},"page_num":0,"text":"any","position":{"top":1785,"bottom":1813,"left":862,"right":920,"bbTop":1785,"bbBot":1813,"bbLeft":862,"bbRight":920},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":625,"end":634},"doc_offset":{"start":625,"end":634},"block_offset":{"start":44,"end":53},"page_num":0,"text":"questions","position":{"top":1778,"bottom":1813,"left":932,"right":1090,"bbTop":1778,"bbBot":1813,"bbLeft":932,"bbRight":1090},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":635,"end":642},"doc_offset":{"start":635,"end":642},"block_offset":{"start":54,"end":61},"page_num":0,"text":"related","position":{"top":1778,"bottom":1806,"left":1105,"right":1214,"bbTop":1778,"bbBot":1806,"bbLeft":1105,"bbRight":1214},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":643,"end":645},"doc_offset":{"start":643,"end":645},"block_offset":{"start":62,"end":64},"page_num":0,"text":"to","position":{"top":1780,"bottom":1806,"left":1228,"right":1257,"bbTop":1780,"bbBot":1806,"bbLeft":1228,"bbRight":1257},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":646,"end":650},"doc_offset":{"start":646,"end":650},"block_offset":{"start":65,"end":69},"page_num":0,"text":"your","position":{"top":1785,"bottom":1813,"left":1269,"right":1341,"bbTop":1785,"bbBot":1813,"bbLeft":1269,"bbRight":1341},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":651,"end":660},"doc_offset":{"start":651,"end":660},"block_offset":{"start":70,"end":79},"page_num":0,"text":"contract.","position":{"top":1780,"bottom":1806,"left":1353,"right":1493,"bbTop":1780,"bbBot":1806,"bbLeft":1353,"bbRight":1493},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":661,"end":664},"doc_offset":{"start":661,"end":664},"block_offset":{"start":80,"end":83},"page_num":0,"text":"For","position":{"top":1778,"bottom":1806,"left":1507,"right":1560,"bbTop":1778,"bbBot":1806,"bbLeft":1507,"bbRight":1560},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":665,"end":668},"doc_offset":{"start":665,"end":668},"block_offset":{"start":84,"end":87},"page_num":0,"text":"any","position":{"top":1785,"bottom":1813,"left":1570,"right":1629,"bbTop":1785,"bbBot":1813,"bbLeft":1570,"bbRight":1629},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":669,"end":674},"doc_offset":{"start":669,"end":674},"block_offset":{"start":88,"end":93},"page_num":0,"text":"other","position":{"top":1778,"bottom":1806,"left":1638,"right":1722,"bbTop":1778,"bbBot":1806,"bbLeft":1638,"bbRight":1722},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":675,"end":682},"doc_offset":{"start":675,"end":682},"block_offset":{"start":94,"end":101},"page_num":0,"text":"general","position":{"top":1778,"bottom":1813,"left":1732,"right":1853,"bbTop":1778,"bbBot":1813,"bbLeft":1732,"bbRight":1853},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":683,"end":692},"doc_offset":{"start":683,"end":692},"block_offset":{"start":102,"end":111},"page_num":0,"text":"invoicing","position":{"top":1778,"bottom":1813,"left":1867,"right":2007,"bbTop":1778,"bbBot":1813,"bbLeft":1867,"bbRight":2007},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":693,"end":703},"doc_offset":{"start":693,"end":703},"block_offset":{"start":112,"end":122},"page_num":0,"text":"inquiries,","position":{"top":1778,"bottom":1813,"left":2021,"right":2165,"bbTop":1778,"bbBot":1813,"bbLeft":2021,"bbRight":2165},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":704,"end":710},"doc_offset":{"start":704,"end":710},"block_offset":{"start":123,"end":129},"page_num":0,"text":"please","position":{"top":1778,"bottom":1813,"left":2179,"right":2285,"bbTop":1778,"bbBot":1813,"bbLeft":2179,"bbRight":2285},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":711,"end":715},"doc_offset":{"start":711,"end":715},"block_offset":{"start":130,"end":134},"page_num":0,"text":"send","position":{"top":1778,"bottom":1806,"left":2296,"right":2374,"bbTop":1778,"bbBot":1806,"bbLeft":2296,"bbRight":2374},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":716,"end":718},"doc_offset":{"start":716,"end":718},"block_offset":{"start":135,"end":137},"page_num":0,"text":"an","position":{"top":1830,"bottom":1851,"left":164,"right":201,"bbTop":1830,"bbBot":1851,"bbLeft":164,"bbRight":201},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":719,"end":724},"doc_offset":{"start":719,"end":724},"block_offset":{"start":138,"end":143},"page_num":0,"text":"email","position":{"top":1823,"bottom":1851,"left":215,"right":301,"bbTop":1823,"bbBot":1851,"bbLeft":215,"bbRight":301},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":725,"end":727},"doc_offset":{"start":725,"end":727},"block_offset":{"start":144,"end":146},"page_num":0,"text":"to","position":{"top":1825,"bottom":1851,"left":315,"right":344,"bbTop":1825,"bbBot":1851,"bbLeft":315,"bbRight":344},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":728,"end":732},"doc_offset":{"start":728,"end":732},"block_offset":{"start":147,"end":151},"page_num":0,"text":"bill","position":{"top":1823,"bottom":1851,"left":358,"right":399,"bbTop":1823,"bbBot":1851,"bbLeft":358,"bbRight":399},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":733,"end":742},"doc_offset":{"start":733,"end":742},"block_offset":{"start":152,"end":161},"page_num":0,"text":"@hubspot.","position":{"top":1822,"bottom":1858,"left":425,"right":599,"bbTop":1822,"bbBot":1858,"bbLeft":425,"bbRight":599},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":743,"end":746},"doc_offset":{"start":743,"end":746},"block_offset":{"start":162,"end":165},"page_num":0,"text":"net","position":{"top":1821,"bottom":1854,"left":597,"right":660,"bbTop":1821,"bbBot":1854,"bbLeft":597,"bbRight":660},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":747,"end":748},"doc_offset":{"start":747,"end":748},"block_offset":{"start":0,"end":1},"page_num":0,"text":"1","position":{"top":3040,"bottom":3060,"left":2271,"right":2279,"bbTop":3040,"bbBot":3060,"bbLeft":2271,"bbRight":2279},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":749,"end":750},"doc_offset":{"start":749,"end":750},"block_offset":{"start":2,"end":3},"page_num":0,"text":"/","position":{"top":3032,"bottom":3060,"left":2296,"right":2308,"bbTop":3032,"bbBot":3060,"bbLeft":2296,"bbRight":2308},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":751,"end":752},"doc_offset":{"start":751,"end":752},"block_offset":{"start":4,"end":5},"page_num":0,"text":"1","position":{"top":3040,"bottom":3060,"left":2321,"right":2328,"bbTop":3040,"bbBot":3060,"bbLeft":2321,"bbRight":2328},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":753,"end":760},"doc_offset":{"start":753,"end":760},"block_offset":{"start":0,"end":7},"page_num":0,"text":"HubSpot","position":{"top":192,"bottom":295,"left":906,"right":1314,"bbTop":192,"bbBot":295,"bbLeft":906,"bbRight":1314},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}}] \ No newline at end of file diff --git a/tests/data/etloutput/4723/111922/110237/page_1_text.txt b/tests/data/etloutput/4723/111922/110237/page_1_text.txt new file mode 100644 index 0000000..e0bd0f1 --- /dev/null +++ b/tests/data/etloutput/4723/111922/110237/page_1_text.txt @@ -0,0 +1,62 @@ +295 Centerpoint Blvd * PO Box 491 +Pittston, PA 18640-0491 +Phone: 1-800-GO-BENCO (1-800-462-3626) +Fax: 570-602-4919 +www.benco.com +Purchase Order +P/O # +29111525 +LOCATION +DATE +PAGE +010 +06/16/21 +1 OF 1 +000046 +CAULK +38 W CLARK AVE +MILFORD, DE 19963 +800-532-2855 +SHIP TO +7 +BENCO SCHOOL KITS +L +295 CENTERPOINT BLVD +PITTSTON, PA 18640 +P/O DATE +06/16/21 +SHIP VIA +TRUCK +BUYER +Michelle Amos +86847 +CONTACT +DENTSPLY CAULK(110900) +VENDOR FAX NUMBER +1800-788-4110 +F.O.B. +PAYMENT TERMS +NET 30 DAYS +QUANTITY +PRODUCT / DESCRIPTION +COST +U/M +EXTENSION +60 605220 +JELTRATE DUSTLESS FAST +12.00 +EA +720.00 +60 608015 +JELTRATE SCOOP / MEASURE SET +3.05 +ST +183.00 +TOTAL +903.00 +The seller agrees, in connection with the performance of work under this order, not to discriminate against any employee or applicant for employment +because of any race, sex, religion, color, national origin, disability or status as a disabled veteran or veteran of the Vietnam era. Unless exempted, +Section 202, paragraphs 1 through 7 of Executive Order 11246, as amended, and the affirmative action clauses as set forth in 41 C.F.R. 60-741.4 (for +contracts of $2,500 or more) and 41 C.F.R. 60-250.4 (for contracts of $10,000 or more) and 41 C.F.R. 61-250.10 (requiring the annual reporting of +Vietnam era and special disabled veterans) are incorporated herein by reference. +Benco \ No newline at end of file diff --git a/tests/data/etloutput/4723/111922/110237/page_1_tokens.json b/tests/data/etloutput/4723/111922/110237/page_1_tokens.json new file mode 100644 index 0000000..fd8389b --- /dev/null +++ b/tests/data/etloutput/4723/111922/110237/page_1_tokens.json @@ -0,0 +1 @@ +[{"page_offset":{"start":0,"end":3},"doc_offset":{"start":761,"end":764},"block_offset":{"start":0,"end":3},"page_num":1,"text":"295","position":{"top":27,"bottom":47,"left":439,"right":483,"bbTop":27,"bbBot":47,"bbLeft":439,"bbRight":483},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":4,"end":15},"doc_offset":{"start":765,"end":776},"block_offset":{"start":4,"end":15},"page_num":1,"text":"Centerpoint","position":{"top":27,"bottom":53,"left":492,"right":634,"bbTop":27,"bbBot":53,"bbLeft":492,"bbRight":634},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":16,"end":20},"doc_offset":{"start":777,"end":781},"block_offset":{"start":16,"end":20},"page_num":1,"text":"Blvd","position":{"top":27,"bottom":47,"left":639,"right":696,"bbTop":27,"bbBot":47,"bbLeft":639,"bbRight":696},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":21,"end":22},"doc_offset":{"start":782,"end":783},"block_offset":{"start":21,"end":22},"page_num":1,"text":"*","position":{"top":27,"bottom":38,"left":706,"right":717,"bbTop":27,"bbBot":38,"bbLeft":706,"bbRight":717},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":23,"end":25},"doc_offset":{"start":784,"end":786},"block_offset":{"start":23,"end":25},"page_num":1,"text":"PO","position":{"top":27,"bottom":47,"left":723,"right":763,"bbTop":27,"bbBot":47,"bbLeft":723,"bbRight":763},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":26,"end":29},"doc_offset":{"start":787,"end":790},"block_offset":{"start":26,"end":29},"page_num":1,"text":"Box","position":{"top":27,"bottom":47,"left":770,"right":819,"bbTop":27,"bbBot":47,"bbLeft":770,"bbRight":819},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":30,"end":33},"doc_offset":{"start":791,"end":794},"block_offset":{"start":30,"end":33},"page_num":1,"text":"491","position":{"top":27,"bottom":47,"left":827,"right":868,"bbTop":27,"bbBot":47,"bbLeft":827,"bbRight":868},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":34,"end":43},"doc_offset":{"start":795,"end":804},"block_offset":{"start":34,"end":43},"page_num":1,"text":"Pittston,","position":{"top":62,"bottom":86,"left":438,"right":537,"bbTop":62,"bbBot":86,"bbLeft":438,"bbRight":537},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":44,"end":46},"doc_offset":{"start":805,"end":807},"block_offset":{"start":44,"end":46},"page_num":1,"text":"PA","position":{"top":62,"bottom":81,"left":545,"right":581,"bbTop":62,"bbBot":81,"bbLeft":545,"bbRight":581},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":47,"end":57},"doc_offset":{"start":808,"end":818},"block_offset":{"start":47,"end":57},"page_num":1,"text":"18640-0491","position":{"top":62,"bottom":82,"left":591,"right":730,"bbTop":62,"bbBot":82,"bbLeft":591,"bbRight":730},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":58,"end":64},"doc_offset":{"start":819,"end":825},"block_offset":{"start":58,"end":64},"page_num":1,"text":"Phone:","position":{"top":97,"bottom":117,"left":438,"right":525,"bbTop":97,"bbBot":117,"bbLeft":438,"bbRight":525},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":65,"end":79},"doc_offset":{"start":826,"end":840},"block_offset":{"start":65,"end":79},"page_num":1,"text":"1-800-GO-BENCO","position":{"top":97,"bottom":117,"left":534,"right":764,"bbTop":97,"bbBot":117,"bbLeft":534,"bbRight":764},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":80,"end":96},"doc_offset":{"start":841,"end":857},"block_offset":{"start":80,"end":96},"page_num":1,"text":"(1-800-462-3626)","position":{"top":97,"bottom":122,"left":773,"right":978,"bbTop":97,"bbBot":122,"bbLeft":773,"bbRight":978},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":97,"end":101},"doc_offset":{"start":858,"end":862},"block_offset":{"start":97,"end":101},"page_num":1,"text":"Fax:","position":{"top":132,"bottom":152,"left":439,"right":496,"bbTop":132,"bbBot":152,"bbLeft":439,"bbRight":496},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":102,"end":114},"doc_offset":{"start":863,"end":875},"block_offset":{"start":102,"end":114},"page_num":1,"text":"570-602-4919","position":{"top":132,"bottom":152,"left":506,"right":670,"bbTop":132,"bbBot":152,"bbLeft":506,"bbRight":670},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":115,"end":128},"doc_offset":{"start":876,"end":889},"block_offset":{"start":115,"end":128},"page_num":1,"text":"www.benco.com","position":{"top":167,"bottom":187,"left":440,"right":632,"bbTop":167,"bbBot":187,"bbLeft":440,"bbRight":632},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":129,"end":137},"doc_offset":{"start":890,"end":898},"block_offset":{"start":0,"end":8},"page_num":1,"text":"Purchase","position":{"top":247,"bottom":295,"left":890,"right":1183,"bbTop":247,"bbBot":295,"bbLeft":890,"bbRight":1183},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":138,"end":143},"doc_offset":{"start":899,"end":904},"block_offset":{"start":9,"end":14},"page_num":1,"text":"Order","position":{"top":246,"bottom":295,"left":1207,"right":1386,"bbTop":246,"bbBot":295,"bbLeft":1207,"bbRight":1386},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":144,"end":147},"doc_offset":{"start":905,"end":908},"block_offset":{"start":0,"end":3},"page_num":1,"text":"P/O","position":{"top":25,"bottom":59,"left":1621,"right":1695,"bbTop":25,"bbBot":59,"bbLeft":1621,"bbRight":1695},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":148,"end":149},"doc_offset":{"start":909,"end":910},"block_offset":{"start":4,"end":5},"page_num":1,"text":"#","position":{"top":25,"bottom":59,"left":1710,"right":1734,"bbTop":25,"bbBot":59,"bbLeft":1710,"bbRight":1734},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":150,"end":158},"doc_offset":{"start":911,"end":919},"block_offset":{"start":0,"end":8},"page_num":1,"text":"29111525","position":{"top":26,"bottom":56,"left":1854,"right":2037,"bbTop":26,"bbBot":56,"bbLeft":1854,"bbRight":2037},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":159,"end":167},"doc_offset":{"start":920,"end":928},"block_offset":{"start":0,"end":8},"page_num":1,"text":"LOCATION","position":{"top":87,"bottom":118,"left":1621,"right":1832,"bbTop":87,"bbBot":118,"bbLeft":1621,"bbRight":1832},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":168,"end":172},"doc_offset":{"start":929,"end":933},"block_offset":{"start":0,"end":4},"page_num":1,"text":"DATE","position":{"top":147,"bottom":177,"left":1621,"right":1729,"bbTop":147,"bbBot":177,"bbLeft":1621,"bbRight":1729},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":173,"end":177},"doc_offset":{"start":934,"end":938},"block_offset":{"start":0,"end":4},"page_num":1,"text":"PAGE","position":{"top":205,"bottom":236,"left":1621,"right":1734,"bbTop":205,"bbBot":236,"bbLeft":1621,"bbRight":1734},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":178,"end":181},"doc_offset":{"start":939,"end":942},"block_offset":{"start":0,"end":3},"page_num":1,"text":"010","position":{"top":88,"bottom":118,"left":1863,"right":1929,"bbTop":88,"bbBot":118,"bbLeft":1863,"bbRight":1929},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":182,"end":190},"doc_offset":{"start":943,"end":951},"block_offset":{"start":0,"end":8},"page_num":1,"text":"06/16/21","position":{"top":147,"bottom":177,"left":1863,"right":2016,"bbTop":147,"bbBot":177,"bbLeft":1863,"bbRight":2016},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":191,"end":192},"doc_offset":{"start":952,"end":953},"block_offset":{"start":0,"end":1},"page_num":1,"text":"1","position":{"top":206,"bottom":236,"left":1863,"right":1874,"bbTop":206,"bbBot":236,"bbLeft":1863,"bbRight":1874},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":193,"end":195},"doc_offset":{"start":954,"end":956},"block_offset":{"start":2,"end":4},"page_num":1,"text":"OF","position":{"top":206,"bottom":237,"left":1895,"right":1949,"bbTop":206,"bbBot":237,"bbLeft":1895,"bbRight":1949},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":196,"end":197},"doc_offset":{"start":957,"end":958},"block_offset":{"start":5,"end":6},"page_num":1,"text":"1","position":{"top":206,"bottom":236,"left":1967,"right":1978,"bbTop":206,"bbBot":236,"bbLeft":1967,"bbRight":1978},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":198,"end":204},"doc_offset":{"start":959,"end":965},"block_offset":{"start":0,"end":6},"page_num":1,"text":"000046","position":{"top":397,"bottom":427,"left":363,"right":498,"bbTop":397,"bbBot":427,"bbLeft":363,"bbRight":498},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":205,"end":210},"doc_offset":{"start":966,"end":971},"block_offset":{"start":7,"end":12},"page_num":1,"text":"CAULK","position":{"top":447,"bottom":477,"left":363,"right":500,"bbTop":447,"bbBot":477,"bbLeft":363,"bbRight":500},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":211,"end":213},"doc_offset":{"start":972,"end":974},"block_offset":{"start":13,"end":15},"page_num":1,"text":"38","position":{"top":497,"bottom":527,"left":363,"right":406,"bbTop":497,"bbBot":527,"bbLeft":363,"bbRight":406},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":214,"end":215},"doc_offset":{"start":975,"end":976},"block_offset":{"start":16,"end":17},"page_num":1,"text":"W","position":{"top":497,"bottom":527,"left":420,"right":458,"bbTop":497,"bbBot":527,"bbLeft":420,"bbRight":458},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":216,"end":221},"doc_offset":{"start":977,"end":982},"block_offset":{"start":18,"end":23},"page_num":1,"text":"CLARK","position":{"top":497,"bottom":527,"left":472,"right":609,"bbTop":497,"bbBot":527,"bbLeft":472,"bbRight":609},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":222,"end":225},"doc_offset":{"start":983,"end":986},"block_offset":{"start":24,"end":27},"page_num":1,"text":"AVE","position":{"top":497,"bottom":527,"left":621,"right":702,"bbTop":497,"bbBot":527,"bbLeft":621,"bbRight":702},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":226,"end":234},"doc_offset":{"start":987,"end":995},"block_offset":{"start":28,"end":36},"page_num":1,"text":"MILFORD,","position":{"top":547,"bottom":583,"left":364,"right":557,"bbTop":547,"bbBot":583,"bbLeft":364,"bbRight":557},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":235,"end":237},"doc_offset":{"start":996,"end":998},"block_offset":{"start":37,"end":39},"page_num":1,"text":"DE","position":{"top":547,"bottom":577,"left":575,"right":628,"bbTop":547,"bbBot":577,"bbLeft":575,"bbRight":628},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":238,"end":243},"doc_offset":{"start":999,"end":1004},"block_offset":{"start":40,"end":45},"page_num":1,"text":"19963","position":{"top":547,"bottom":577,"left":658,"right":767,"bbTop":547,"bbBot":577,"bbLeft":658,"bbRight":767},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":244,"end":256},"doc_offset":{"start":1005,"end":1017},"block_offset":{"start":46,"end":58},"page_num":1,"text":"800-532-2855","position":{"top":597,"bottom":627,"left":363,"right":619,"bbTop":597,"bbBot":627,"bbLeft":363,"bbRight":619},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":257,"end":261},"doc_offset":{"start":1018,"end":1022},"block_offset":{"start":0,"end":4},"page_num":1,"text":"SHIP","position":{"top":341,"bottom":366,"left":1560,"right":1635,"bbTop":341,"bbBot":366,"bbLeft":1560,"bbRight":1635},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":262,"end":264},"doc_offset":{"start":1023,"end":1025},"block_offset":{"start":5,"end":7},"page_num":1,"text":"TO","position":{"top":341,"bottom":366,"left":1646,"right":1691,"bbTop":341,"bbBot":366,"bbLeft":1646,"bbRight":1691},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":265,"end":266},"doc_offset":{"start":1026,"end":1027},"block_offset":{"start":0,"end":1},"page_num":1,"text":"7","position":{"top":375,"bottom":435,"left":1112,"right":1142,"bbTop":375,"bbBot":435,"bbLeft":1112,"bbRight":1142},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":267,"end":272},"doc_offset":{"start":1028,"end":1033},"block_offset":{"start":0,"end":5},"page_num":1,"text":"BENCO","position":{"top":397,"bottom":428,"left":1569,"right":1714,"bbTop":397,"bbBot":428,"bbLeft":1569,"bbRight":1714},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":273,"end":279},"doc_offset":{"start":1034,"end":1040},"block_offset":{"start":6,"end":12},"page_num":1,"text":"SCHOOL","position":{"top":397,"bottom":428,"left":1729,"right":1905,"bbTop":397,"bbBot":428,"bbLeft":1729,"bbRight":1905},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":280,"end":284},"doc_offset":{"start":1041,"end":1045},"block_offset":{"start":13,"end":17},"page_num":1,"text":"KITS","position":{"top":397,"bottom":428,"left":1921,"right":2010,"bbTop":397,"bbBot":428,"bbLeft":1921,"bbRight":2010},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":285,"end":286},"doc_offset":{"start":1046,"end":1047},"block_offset":{"start":0,"end":1},"page_num":1,"text":"L","position":{"top":378,"bottom":445,"left":2354,"right":2393,"bbTop":378,"bbBot":445,"bbLeft":2354,"bbRight":2393},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":287,"end":290},"doc_offset":{"start":1048,"end":1051},"block_offset":{"start":0,"end":3},"page_num":1,"text":"295","position":{"top":447,"bottom":478,"left":1567,"right":1634,"bbTop":447,"bbBot":478,"bbLeft":1567,"bbRight":1634},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":291,"end":302},"doc_offset":{"start":1052,"end":1063},"block_offset":{"start":4,"end":15},"page_num":1,"text":"CENTERPOINT","position":{"top":447,"bottom":478,"left":1649,"right":1944,"bbTop":447,"bbBot":478,"bbLeft":1649,"bbRight":1944},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":303,"end":307},"doc_offset":{"start":1064,"end":1068},"block_offset":{"start":16,"end":20},"page_num":1,"text":"BLVD","position":{"top":447,"bottom":477,"left":1960,"right":2068,"bbTop":447,"bbBot":477,"bbLeft":1960,"bbRight":2068},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":308,"end":317},"doc_offset":{"start":1069,"end":1078},"block_offset":{"start":21,"end":30},"page_num":1,"text":"PITTSTON,","position":{"top":497,"bottom":534,"left":1569,"right":1780,"bbTop":497,"bbBot":534,"bbLeft":1569,"bbRight":1780},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":318,"end":320},"doc_offset":{"start":1079,"end":1081},"block_offset":{"start":31,"end":33},"page_num":1,"text":"PA","position":{"top":497,"bottom":527,"left":1798,"right":1852,"bbTop":497,"bbBot":527,"bbLeft":1798,"bbRight":1852},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":321,"end":326},"doc_offset":{"start":1082,"end":1087},"block_offset":{"start":34,"end":39},"page_num":1,"text":"18640","position":{"top":497,"bottom":528,"left":1879,"right":1990,"bbTop":497,"bbBot":528,"bbLeft":1879,"bbRight":1990},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":327,"end":330},"doc_offset":{"start":1088,"end":1091},"block_offset":{"start":0,"end":3},"page_num":1,"text":"P/O","position":{"top":743,"bottom":768,"left":132,"right":186,"bbTop":743,"bbBot":768,"bbLeft":132,"bbRight":186},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":331,"end":335},"doc_offset":{"start":1092,"end":1096},"block_offset":{"start":4,"end":8},"page_num":1,"text":"DATE","position":{"top":743,"bottom":767,"left":199,"right":285,"bbTop":743,"bbBot":767,"bbLeft":199,"bbRight":285},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":336,"end":344},"doc_offset":{"start":1097,"end":1105},"block_offset":{"start":9,"end":17},"page_num":1,"text":"06/16/21","position":{"top":784,"bottom":815,"left":132,"right":285,"bbTop":784,"bbBot":815,"bbLeft":132,"bbRight":285},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":345,"end":349},"doc_offset":{"start":1106,"end":1110},"block_offset":{"start":0,"end":4},"page_num":1,"text":"SHIP","position":{"top":837,"bottom":862,"left":131,"right":206,"bbTop":837,"bbBot":862,"bbLeft":131,"bbRight":206},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":350,"end":353},"doc_offset":{"start":1111,"end":1114},"block_offset":{"start":5,"end":8},"page_num":1,"text":"VIA","position":{"top":838,"bottom":862,"left":216,"right":272,"bbTop":838,"bbBot":862,"bbLeft":216,"bbRight":272},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":354,"end":359},"doc_offset":{"start":1115,"end":1120},"block_offset":{"start":0,"end":5},"page_num":1,"text":"TRUCK","position":{"top":884,"bottom":915,"left":131,"right":273,"bbTop":884,"bbBot":915,"bbLeft":131,"bbRight":273},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":360,"end":365},"doc_offset":{"start":1121,"end":1126},"block_offset":{"start":0,"end":5},"page_num":1,"text":"BUYER","position":{"top":743,"bottom":768,"left":368,"right":482,"bbTop":743,"bbBot":768,"bbLeft":368,"bbRight":482},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":366,"end":374},"doc_offset":{"start":1127,"end":1135},"block_offset":{"start":6,"end":14},"page_num":1,"text":"Michelle","position":{"top":785,"bottom":812,"left":374,"right":507,"bbTop":785,"bbBot":812,"bbLeft":374,"bbRight":507},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":375,"end":379},"doc_offset":{"start":1136,"end":1140},"block_offset":{"start":15,"end":19},"page_num":1,"text":"Amos","position":{"top":785,"bottom":812,"left":519,"right":614,"bbTop":785,"bbBot":812,"bbLeft":519,"bbRight":614},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":380,"end":385},"doc_offset":{"start":1141,"end":1146},"block_offset":{"start":0,"end":5},"page_num":1,"text":"86847","position":{"top":745,"bottom":773,"left":753,"right":854,"bbTop":745,"bbBot":773,"bbLeft":753,"bbRight":854},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":386,"end":393},"doc_offset":{"start":1147,"end":1154},"block_offset":{"start":0,"end":7},"page_num":1,"text":"CONTACT","position":{"top":743,"bottom":768,"left":887,"right":1048,"bbTop":743,"bbBot":768,"bbLeft":887,"bbRight":1048},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":394,"end":402},"doc_offset":{"start":1155,"end":1163},"block_offset":{"start":0,"end":8},"page_num":1,"text":"DENTSPLY","position":{"top":781,"bottom":812,"left":889,"right":1106,"bbTop":781,"bbBot":812,"bbLeft":889,"bbRight":1106},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":403,"end":416},"doc_offset":{"start":1164,"end":1177},"block_offset":{"start":9,"end":22},"page_num":1,"text":"CAULK(110900)","position":{"top":781,"bottom":820,"left":1120,"right":1422,"bbTop":781,"bbBot":820,"bbLeft":1120,"bbRight":1422},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":417,"end":423},"doc_offset":{"start":1178,"end":1184},"block_offset":{"start":0,"end":6},"page_num":1,"text":"VENDOR","position":{"top":837,"bottom":862,"left":885,"right":1028,"bbTop":837,"bbBot":862,"bbLeft":885,"bbRight":1028},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":424,"end":427},"doc_offset":{"start":1185,"end":1188},"block_offset":{"start":7,"end":10},"page_num":1,"text":"FAX","position":{"top":838,"bottom":862,"left":1040,"right":1104,"bbTop":838,"bbBot":862,"bbLeft":1040,"bbRight":1104},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":428,"end":434},"doc_offset":{"start":1189,"end":1195},"block_offset":{"start":11,"end":17},"page_num":1,"text":"NUMBER","position":{"top":838,"bottom":862,"left":1116,"right":1259,"bbTop":838,"bbBot":862,"bbLeft":1116,"bbRight":1259},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":435,"end":448},"doc_offset":{"start":1196,"end":1209},"block_offset":{"start":0,"end":13},"page_num":1,"text":"1800-788-4110","position":{"top":894,"bottom":924,"left":888,"right":1164,"bbTop":894,"bbBot":924,"bbLeft":888,"bbRight":1164},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":449,"end":455},"doc_offset":{"start":1210,"end":1216},"block_offset":{"start":0,"end":6},"page_num":1,"text":"F.O.B.","position":{"top":743,"bottom":768,"left":1632,"right":1725,"bbTop":743,"bbBot":768,"bbLeft":1632,"bbRight":1725},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":456,"end":463},"doc_offset":{"start":1217,"end":1224},"block_offset":{"start":0,"end":7},"page_num":1,"text":"PAYMENT","position":{"top":838,"bottom":862,"left":1632,"right":1792,"bbTop":838,"bbBot":862,"bbLeft":1632,"bbRight":1792},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":464,"end":469},"doc_offset":{"start":1225,"end":1230},"block_offset":{"start":8,"end":13},"page_num":1,"text":"TERMS","position":{"top":837,"bottom":862,"left":1802,"right":1917,"bbTop":837,"bbBot":862,"bbLeft":1802,"bbRight":1917},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":470,"end":473},"doc_offset":{"start":1231,"end":1234},"block_offset":{"start":0,"end":3},"page_num":1,"text":"NET","position":{"top":894,"bottom":924,"left":1630,"right":1709,"bbTop":894,"bbBot":924,"bbLeft":1630,"bbRight":1709},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":474,"end":476},"doc_offset":{"start":1235,"end":1237},"block_offset":{"start":4,"end":6},"page_num":1,"text":"30","position":{"top":894,"bottom":924,"left":1724,"right":1766,"bbTop":894,"bbBot":924,"bbLeft":1724,"bbRight":1766},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":477,"end":481},"doc_offset":{"start":1238,"end":1242},"block_offset":{"start":7,"end":11},"page_num":1,"text":"DAYS","position":{"top":894,"bottom":924,"left":1783,"right":1891,"bbTop":894,"bbBot":924,"bbLeft":1783,"bbRight":1891},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":482,"end":490},"doc_offset":{"start":1243,"end":1251},"block_offset":{"start":0,"end":8},"page_num":1,"text":"QUANTITY","position":{"top":967,"bottom":994,"left":143,"right":312,"bbTop":967,"bbBot":994,"bbLeft":143,"bbRight":312},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":491,"end":498},"doc_offset":{"start":1252,"end":1259},"block_offset":{"start":0,"end":7},"page_num":1,"text":"PRODUCT","position":{"top":967,"bottom":992,"left":368,"right":530,"bbTop":967,"bbBot":992,"bbLeft":368,"bbRight":530},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":499,"end":500},"doc_offset":{"start":1260,"end":1261},"block_offset":{"start":8,"end":9},"page_num":1,"text":"/","position":{"top":967,"bottom":992,"left":540,"right":549,"bbTop":967,"bbBot":992,"bbLeft":540,"bbRight":549},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":501,"end":512},"doc_offset":{"start":1262,"end":1273},"block_offset":{"start":10,"end":21},"page_num":1,"text":"DESCRIPTION","position":{"top":967,"bottom":992,"left":561,"right":783,"bbTop":967,"bbBot":992,"bbLeft":561,"bbRight":783},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":513,"end":517},"doc_offset":{"start":1274,"end":1278},"block_offset":{"start":0,"end":4},"page_num":1,"text":"COST","position":{"top":967,"bottom":992,"left":1632,"right":1722,"bbTop":967,"bbBot":992,"bbLeft":1632,"bbRight":1722},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":518,"end":521},"doc_offset":{"start":1279,"end":1282},"block_offset":{"start":0,"end":3},"page_num":1,"text":"U/M","position":{"top":967,"bottom":992,"left":1885,"right":1941,"bbTop":967,"bbBot":992,"bbLeft":1885,"bbRight":1941},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":522,"end":531},"doc_offset":{"start":1283,"end":1292},"block_offset":{"start":0,"end":9},"page_num":1,"text":"EXTENSION","position":{"top":967,"bottom":992,"left":2136,"right":2324,"bbTop":967,"bbBot":992,"bbLeft":2136,"bbRight":2324},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":532,"end":534},"doc_offset":{"start":1293,"end":1295},"block_offset":{"start":0,"end":2},"page_num":1,"text":"60","position":{"top":1053,"bottom":1084,"left":289,"right":331,"bbTop":1053,"bbBot":1084,"bbLeft":289,"bbRight":331},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":535,"end":541},"doc_offset":{"start":1296,"end":1302},"block_offset":{"start":3,"end":9},"page_num":1,"text":"605220","position":{"top":1054,"bottom":1084,"left":364,"right":499,"bbTop":1054,"bbBot":1084,"bbLeft":364,"bbRight":499},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":542,"end":550},"doc_offset":{"start":1303,"end":1311},"block_offset":{"start":0,"end":8},"page_num":1,"text":"JELTRATE","position":{"top":1104,"bottom":1134,"left":401,"right":606,"bbTop":1104,"bbBot":1134,"bbLeft":401,"bbRight":606},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":551,"end":559},"doc_offset":{"start":1312,"end":1320},"block_offset":{"start":9,"end":17},"page_num":1,"text":"DUSTLESS","position":{"top":1103,"bottom":1134,"left":623,"right":838,"bbTop":1103,"bbBot":1134,"bbLeft":623,"bbRight":838},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":560,"end":564},"doc_offset":{"start":1321,"end":1325},"block_offset":{"start":18,"end":22},"page_num":1,"text":"FAST","position":{"top":1103,"bottom":1134,"left":855,"right":957,"bbTop":1103,"bbBot":1134,"bbLeft":855,"bbRight":957},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":565,"end":570},"doc_offset":{"start":1326,"end":1331},"block_offset":{"start":0,"end":5},"page_num":1,"text":"12.00","position":{"top":1055,"bottom":1085,"left":1702,"right":1800,"bbTop":1055,"bbBot":1085,"bbLeft":1702,"bbRight":1800},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":571,"end":573},"doc_offset":{"start":1332,"end":1334},"block_offset":{"start":0,"end":2},"page_num":1,"text":"EA","position":{"top":1054,"bottom":1084,"left":1895,"right":1947,"bbTop":1054,"bbBot":1084,"bbLeft":1895,"bbRight":1947},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":574,"end":580},"doc_offset":{"start":1335,"end":1341},"block_offset":{"start":0,"end":6},"page_num":1,"text":"720.00","position":{"top":1053,"bottom":1084,"left":2285,"right":2409,"bbTop":1053,"bbBot":1084,"bbLeft":2285,"bbRight":2409},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":581,"end":583},"doc_offset":{"start":1342,"end":1344},"block_offset":{"start":0,"end":2},"page_num":1,"text":"60","position":{"top":1201,"bottom":1231,"left":289,"right":331,"bbTop":1201,"bbBot":1231,"bbLeft":289,"bbRight":331},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":584,"end":590},"doc_offset":{"start":1345,"end":1351},"block_offset":{"start":3,"end":9},"page_num":1,"text":"608015","position":{"top":1201,"bottom":1232,"left":364,"right":500,"bbTop":1201,"bbBot":1232,"bbLeft":364,"bbRight":500},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":591,"end":599},"doc_offset":{"start":1352,"end":1360},"block_offset":{"start":0,"end":8},"page_num":1,"text":"JELTRATE","position":{"top":1251,"bottom":1282,"left":401,"right":606,"bbTop":1251,"bbBot":1282,"bbLeft":401,"bbRight":606},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":600,"end":605},"doc_offset":{"start":1361,"end":1366},"block_offset":{"start":9,"end":14},"page_num":1,"text":"SCOOP","position":{"top":1251,"bottom":1282,"left":622,"right":769,"bbTop":1251,"bbBot":1282,"bbLeft":622,"bbRight":769},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":606,"end":607},"doc_offset":{"start":1367,"end":1368},"block_offset":{"start":15,"end":16},"page_num":1,"text":"/","position":{"top":1251,"bottom":1282,"left":782,"right":794,"bbTop":1251,"bbBot":1282,"bbLeft":782,"bbRight":794},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":608,"end":615},"doc_offset":{"start":1369,"end":1376},"block_offset":{"start":17,"end":24},"page_num":1,"text":"MEASURE","position":{"top":1251,"bottom":1282,"left":808,"right":1009,"bbTop":1251,"bbBot":1282,"bbLeft":808,"bbRight":1009},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":616,"end":619},"doc_offset":{"start":1377,"end":1380},"block_offset":{"start":25,"end":28},"page_num":1,"text":"SET","position":{"top":1251,"bottom":1282,"left":1025,"right":1103,"bbTop":1251,"bbBot":1282,"bbLeft":1025,"bbRight":1103},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":620,"end":624},"doc_offset":{"start":1381,"end":1385},"block_offset":{"start":0,"end":4},"page_num":1,"text":"3.05","position":{"top":1202,"bottom":1233,"left":1723,"right":1801,"bbTop":1202,"bbBot":1233,"bbLeft":1723,"bbRight":1801},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":625,"end":627},"doc_offset":{"start":1386,"end":1388},"block_offset":{"start":0,"end":2},"page_num":1,"text":"ST","position":{"top":1201,"bottom":1231,"left":1893,"right":1944,"bbTop":1201,"bbBot":1231,"bbLeft":1893,"bbRight":1944},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":628,"end":634},"doc_offset":{"start":1389,"end":1395},"block_offset":{"start":0,"end":6},"page_num":1,"text":"183.00","position":{"top":1201,"bottom":1231,"left":2288,"right":2409,"bbTop":1201,"bbBot":1231,"bbLeft":2288,"bbRight":2409},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":635,"end":640},"doc_offset":{"start":1396,"end":1401},"block_offset":{"start":0,"end":5},"page_num":1,"text":"TOTAL","position":{"top":2780,"bottom":2811,"left":1689,"right":1826,"bbTop":2780,"bbBot":2811,"bbLeft":1689,"bbRight":1826},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":641,"end":647},"doc_offset":{"start":1402,"end":1408},"block_offset":{"start":0,"end":6},"page_num":1,"text":"903.00","position":{"top":2783,"bottom":2813,"left":2154,"right":2278,"bbTop":2783,"bbBot":2813,"bbLeft":2154,"bbRight":2278},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":648,"end":651},"doc_offset":{"start":1409,"end":1412},"block_offset":{"start":0,"end":3},"page_num":1,"text":"The","position":{"top":2858,"bottom":2882,"left":118,"right":174,"bbTop":2858,"bbBot":2882,"bbLeft":118,"bbRight":174},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":652,"end":658},"doc_offset":{"start":1413,"end":1419},"block_offset":{"start":4,"end":10},"page_num":1,"text":"seller","position":{"top":2858,"bottom":2882,"left":185,"right":264,"bbTop":2858,"bbBot":2882,"bbLeft":185,"bbRight":264},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":659,"end":666},"doc_offset":{"start":1420,"end":1427},"block_offset":{"start":11,"end":18},"page_num":1,"text":"agrees,","position":{"top":2864,"bottom":2888,"left":274,"right":381,"bbTop":2864,"bbBot":2888,"bbLeft":274,"bbRight":381},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":667,"end":669},"doc_offset":{"start":1428,"end":1430},"block_offset":{"start":19,"end":21},"page_num":1,"text":"in","position":{"top":2858,"bottom":2881,"left":396,"right":417,"bbTop":2858,"bbBot":2881,"bbLeft":396,"bbRight":417},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":670,"end":680},"doc_offset":{"start":1431,"end":1441},"block_offset":{"start":22,"end":32},"page_num":1,"text":"connection","position":{"top":2858,"bottom":2882,"left":430,"right":588,"bbTop":2858,"bbBot":2882,"bbLeft":430,"bbRight":588},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":681,"end":685},"doc_offset":{"start":1442,"end":1446},"block_offset":{"start":33,"end":37},"page_num":1,"text":"with","position":{"top":2858,"bottom":2882,"left":599,"right":656,"bbTop":2858,"bbBot":2882,"bbLeft":599,"bbRight":656},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":686,"end":689},"doc_offset":{"start":1447,"end":1450},"block_offset":{"start":38,"end":41},"page_num":1,"text":"the","position":{"top":2858,"bottom":2882,"left":668,"right":713,"bbTop":2858,"bbBot":2882,"bbLeft":668,"bbRight":713},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":690,"end":701},"doc_offset":{"start":1451,"end":1462},"block_offset":{"start":42,"end":53},"page_num":1,"text":"performance","position":{"top":2857,"bottom":2888,"left":726,"right":909,"bbTop":2857,"bbBot":2888,"bbLeft":726,"bbRight":909},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":702,"end":704},"doc_offset":{"start":1463,"end":1465},"block_offset":{"start":54,"end":56},"page_num":1,"text":"of","position":{"top":2857,"bottom":2882,"left":921,"right":949,"bbTop":2857,"bbBot":2882,"bbLeft":921,"bbRight":949},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":705,"end":709},"doc_offset":{"start":1466,"end":1470},"block_offset":{"start":57,"end":61},"page_num":1,"text":"work","position":{"top":2858,"bottom":2882,"left":957,"right":1027,"bbTop":2858,"bbBot":2882,"bbLeft":957,"bbRight":1027},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":710,"end":715},"doc_offset":{"start":1471,"end":1476},"block_offset":{"start":62,"end":67},"page_num":1,"text":"under","position":{"top":2858,"bottom":2882,"left":1039,"right":1122,"bbTop":2858,"bbBot":2882,"bbLeft":1039,"bbRight":1122},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":716,"end":720},"doc_offset":{"start":1477,"end":1481},"block_offset":{"start":68,"end":72},"page_num":1,"text":"this","position":{"top":2858,"bottom":2882,"left":1132,"right":1182,"bbTop":2858,"bbBot":2882,"bbLeft":1132,"bbRight":1182},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":721,"end":727},"doc_offset":{"start":1482,"end":1488},"block_offset":{"start":73,"end":79},"page_num":1,"text":"order,","position":{"top":2858,"bottom":2886,"left":1193,"right":1276,"bbTop":2858,"bbBot":2886,"bbLeft":1193,"bbRight":1276},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":728,"end":731},"doc_offset":{"start":1489,"end":1492},"block_offset":{"start":80,"end":83},"page_num":1,"text":"not","position":{"top":2858,"bottom":2882,"left":1291,"right":1335,"bbTop":2858,"bbBot":2882,"bbLeft":1291,"bbRight":1335},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":732,"end":734},"doc_offset":{"start":1493,"end":1495},"block_offset":{"start":84,"end":86},"page_num":1,"text":"to","position":{"top":2858,"bottom":2882,"left":1345,"right":1371,"bbTop":2858,"bbBot":2882,"bbLeft":1345,"bbRight":1371},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":735,"end":747},"doc_offset":{"start":1496,"end":1508},"block_offset":{"start":87,"end":99},"page_num":1,"text":"discriminate","position":{"top":2858,"bottom":2882,"left":1382,"right":1558,"bbTop":2858,"bbBot":2882,"bbLeft":1382,"bbRight":1558},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":748,"end":755},"doc_offset":{"start":1509,"end":1516},"block_offset":{"start":100,"end":107},"page_num":1,"text":"against","position":{"top":2858,"bottom":2888,"left":1569,"right":1675,"bbTop":2858,"bbBot":2888,"bbLeft":1569,"bbRight":1675},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":756,"end":759},"doc_offset":{"start":1517,"end":1520},"block_offset":{"start":108,"end":111},"page_num":1,"text":"any","position":{"top":2864,"bottom":2888,"left":1686,"right":1738,"bbTop":2864,"bbBot":2888,"bbLeft":1686,"bbRight":1738},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":760,"end":768},"doc_offset":{"start":1521,"end":1529},"block_offset":{"start":112,"end":120},"page_num":1,"text":"employee","position":{"top":2858,"bottom":2888,"left":1749,"right":1891,"bbTop":2858,"bbBot":2888,"bbLeft":1749,"bbRight":1891},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":769,"end":771},"doc_offset":{"start":1530,"end":1532},"block_offset":{"start":121,"end":123},"page_num":1,"text":"or","position":{"top":2864,"bottom":2882,"left":1903,"right":1932,"bbTop":2864,"bbBot":2882,"bbLeft":1903,"bbRight":1932},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":772,"end":781},"doc_offset":{"start":1533,"end":1542},"block_offset":{"start":124,"end":133},"page_num":1,"text":"applicant","position":{"top":2858,"bottom":2888,"left":1942,"right":2074,"bbTop":2858,"bbBot":2888,"bbLeft":1942,"bbRight":2074},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":782,"end":785},"doc_offset":{"start":1543,"end":1546},"block_offset":{"start":134,"end":137},"page_num":1,"text":"for","position":{"top":2857,"bottom":2882,"left":2084,"right":2123,"bbTop":2857,"bbBot":2882,"bbLeft":2084,"bbRight":2123},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":786,"end":796},"doc_offset":{"start":1547,"end":1557},"block_offset":{"start":138,"end":148},"page_num":1,"text":"employment","position":{"top":2858,"bottom":2888,"left":2133,"right":2313,"bbTop":2858,"bbBot":2888,"bbLeft":2133,"bbRight":2313},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":797,"end":804},"doc_offset":{"start":1558,"end":1565},"block_offset":{"start":149,"end":156},"page_num":1,"text":"because","position":{"top":2902,"bottom":2926,"left":120,"right":242,"bbTop":2902,"bbBot":2926,"bbLeft":120,"bbRight":242},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":805,"end":807},"doc_offset":{"start":1566,"end":1568},"block_offset":{"start":157,"end":159},"page_num":1,"text":"of","position":{"top":2902,"bottom":2926,"left":254,"right":282,"bbTop":2902,"bbBot":2926,"bbLeft":254,"bbRight":282},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":808,"end":811},"doc_offset":{"start":1569,"end":1572},"block_offset":{"start":160,"end":163},"page_num":1,"text":"any","position":{"top":2908,"bottom":2933,"left":291,"right":343,"bbTop":2908,"bbBot":2933,"bbLeft":291,"bbRight":343},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":812,"end":817},"doc_offset":{"start":1573,"end":1578},"block_offset":{"start":164,"end":169},"page_num":1,"text":"race,","position":{"top":2908,"bottom":2931,"left":355,"right":424,"bbTop":2908,"bbBot":2931,"bbLeft":355,"bbRight":424},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":818,"end":822},"doc_offset":{"start":1579,"end":1583},"block_offset":{"start":170,"end":174},"page_num":1,"text":"sex,","position":{"top":2908,"bottom":2931,"left":437,"right":494,"bbTop":2908,"bbBot":2931,"bbLeft":437,"bbRight":494},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":823,"end":832},"doc_offset":{"start":1584,"end":1593},"block_offset":{"start":175,"end":184},"page_num":1,"text":"religion,","position":{"top":2902,"bottom":2933,"left":509,"right":620,"bbTop":2902,"bbBot":2933,"bbLeft":509,"bbRight":620},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":833,"end":839},"doc_offset":{"start":1594,"end":1600},"block_offset":{"start":185,"end":191},"page_num":1,"text":"color,","position":{"top":2902,"bottom":2931,"left":634,"right":711,"bbTop":2902,"bbBot":2931,"bbLeft":634,"bbRight":711},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":840,"end":848},"doc_offset":{"start":1601,"end":1609},"block_offset":{"start":192,"end":200},"page_num":1,"text":"national","position":{"top":2902,"bottom":2926,"left":726,"right":838,"bbTop":2902,"bbBot":2926,"bbLeft":726,"bbRight":838},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":849,"end":856},"doc_offset":{"start":1610,"end":1617},"block_offset":{"start":201,"end":208},"page_num":1,"text":"origin,","position":{"top":2902,"bottom":2933,"left":851,"right":937,"bbTop":2902,"bbBot":2933,"bbLeft":851,"bbRight":937},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":857,"end":867},"doc_offset":{"start":1618,"end":1628},"block_offset":{"start":209,"end":219},"page_num":1,"text":"disability","position":{"top":2902,"bottom":2933,"left":951,"right":1077,"bbTop":2902,"bbBot":2933,"bbLeft":951,"bbRight":1077},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":868,"end":870},"doc_offset":{"start":1629,"end":1631},"block_offset":{"start":220,"end":222},"page_num":1,"text":"or","position":{"top":2908,"bottom":2926,"left":1088,"right":1117,"bbTop":2908,"bbBot":2926,"bbLeft":1088,"bbRight":1117},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":871,"end":877},"doc_offset":{"start":1632,"end":1638},"block_offset":{"start":223,"end":229},"page_num":1,"text":"status","position":{"top":2903,"bottom":2926,"left":1126,"right":1213,"bbTop":2903,"bbBot":2926,"bbLeft":1126,"bbRight":1213},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":878,"end":880},"doc_offset":{"start":1639,"end":1641},"block_offset":{"start":230,"end":232},"page_num":1,"text":"as","position":{"top":2908,"bottom":2926,"left":1225,"right":1258,"bbTop":2908,"bbBot":2926,"bbLeft":1225,"bbRight":1258},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":881,"end":882},"doc_offset":{"start":1642,"end":1643},"block_offset":{"start":233,"end":234},"page_num":1,"text":"a","position":{"top":2908,"bottom":2926,"left":1269,"right":1285,"bbTop":2908,"bbBot":2926,"bbLeft":1269,"bbRight":1285},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":883,"end":891},"doc_offset":{"start":1644,"end":1652},"block_offset":{"start":235,"end":243},"page_num":1,"text":"disabled","position":{"top":2902,"bottom":2926,"left":1297,"right":1418,"bbTop":2902,"bbBot":2926,"bbLeft":1297,"bbRight":1418},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":892,"end":899},"doc_offset":{"start":1653,"end":1660},"block_offset":{"start":244,"end":251},"page_num":1,"text":"veteran","position":{"top":2903,"bottom":2926,"left":1430,"right":1538,"bbTop":2903,"bbBot":2926,"bbLeft":1430,"bbRight":1538},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":900,"end":902},"doc_offset":{"start":1661,"end":1663},"block_offset":{"start":252,"end":254},"page_num":1,"text":"or","position":{"top":2908,"bottom":2926,"left":1551,"right":1580,"bbTop":2908,"bbBot":2926,"bbLeft":1551,"bbRight":1580},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":903,"end":910},"doc_offset":{"start":1664,"end":1671},"block_offset":{"start":255,"end":262},"page_num":1,"text":"veteran","position":{"top":2903,"bottom":2926,"left":1589,"right":1698,"bbTop":2903,"bbBot":2926,"bbLeft":1589,"bbRight":1698},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":911,"end":913},"doc_offset":{"start":1672,"end":1674},"block_offset":{"start":263,"end":265},"page_num":1,"text":"of","position":{"top":2902,"bottom":2926,"left":1710,"right":1738,"bbTop":2902,"bbBot":2926,"bbLeft":1710,"bbRight":1738},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":914,"end":917},"doc_offset":{"start":1675,"end":1678},"block_offset":{"start":266,"end":269},"page_num":1,"text":"the","position":{"top":2902,"bottom":2926,"left":1747,"right":1791,"bbTop":2902,"bbBot":2926,"bbLeft":1747,"bbRight":1791},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":918,"end":925},"doc_offset":{"start":1679,"end":1686},"block_offset":{"start":270,"end":277},"page_num":1,"text":"Vietnam","position":{"top":2902,"bottom":2926,"left":1802,"right":1922,"bbTop":2902,"bbBot":2926,"bbLeft":1802,"bbRight":1922},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":926,"end":930},"doc_offset":{"start":1687,"end":1691},"block_offset":{"start":278,"end":282},"page_num":1,"text":"era.","position":{"top":2908,"bottom":2926,"left":1935,"right":1988,"bbTop":2908,"bbBot":2926,"bbLeft":1935,"bbRight":1988},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":931,"end":937},"doc_offset":{"start":1692,"end":1698},"block_offset":{"start":283,"end":289},"page_num":1,"text":"Unless","position":{"top":2902,"bottom":2926,"left":2003,"right":2101,"bbTop":2902,"bbBot":2926,"bbLeft":2003,"bbRight":2101},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":938,"end":947},"doc_offset":{"start":1699,"end":1708},"block_offset":{"start":290,"end":299},"page_num":1,"text":"exempted,","position":{"top":2902,"bottom":2933,"left":2112,"right":2264,"bbTop":2902,"bbBot":2933,"bbLeft":2112,"bbRight":2264},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":948,"end":955},"doc_offset":{"start":1709,"end":1716},"block_offset":{"start":300,"end":307},"page_num":1,"text":"Section","position":{"top":2946,"bottom":2971,"left":119,"right":226,"bbTop":2946,"bbBot":2971,"bbLeft":119,"bbRight":226},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":956,"end":960},"doc_offset":{"start":1717,"end":1721},"block_offset":{"start":308,"end":312},"page_num":1,"text":"202,","position":{"top":2947,"bottom":2975,"left":239,"right":300,"bbTop":2947,"bbBot":2975,"bbLeft":239,"bbRight":300},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":961,"end":971},"doc_offset":{"start":1722,"end":1732},"block_offset":{"start":313,"end":323},"page_num":1,"text":"paragraphs","position":{"top":2947,"bottom":2978,"left":314,"right":479,"bbTop":2947,"bbBot":2978,"bbLeft":314,"bbRight":479},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":972,"end":973},"doc_offset":{"start":1733,"end":1734},"block_offset":{"start":324,"end":325},"page_num":1,"text":"1","position":{"top":2947,"bottom":2971,"left":494,"right":502,"bbTop":2947,"bbBot":2971,"bbLeft":494,"bbRight":502},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":974,"end":981},"doc_offset":{"start":1735,"end":1742},"block_offset":{"start":326,"end":333},"page_num":1,"text":"through","position":{"top":2947,"bottom":2978,"left":518,"right":629,"bbTop":2947,"bbBot":2978,"bbLeft":518,"bbRight":629},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":982,"end":983},"doc_offset":{"start":1743,"end":1744},"block_offset":{"start":334,"end":335},"page_num":1,"text":"7","position":{"top":2947,"bottom":2971,"left":642,"right":657,"bbTop":2947,"bbBot":2971,"bbLeft":642,"bbRight":657},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":984,"end":986},"doc_offset":{"start":1745,"end":1747},"block_offset":{"start":336,"end":338},"page_num":1,"text":"of","position":{"top":2946,"bottom":2971,"left":669,"right":697,"bbTop":2946,"bbBot":2971,"bbLeft":669,"bbRight":697},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":987,"end":996},"doc_offset":{"start":1748,"end":1757},"block_offset":{"start":339,"end":348},"page_num":1,"text":"Executive","position":{"top":2947,"bottom":2971,"left":708,"right":848,"bbTop":2947,"bbBot":2971,"bbLeft":708,"bbRight":848},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":997,"end":1002},"doc_offset":{"start":1758,"end":1763},"block_offset":{"start":349,"end":354},"page_num":1,"text":"Order","position":{"top":2946,"bottom":2971,"left":860,"right":944,"bbTop":2946,"bbBot":2971,"bbLeft":860,"bbRight":944},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1003,"end":1009},"doc_offset":{"start":1764,"end":1770},"block_offset":{"start":355,"end":361},"page_num":1,"text":"11246,","position":{"top":2947,"bottom":2975,"left":957,"right":1052,"bbTop":2947,"bbBot":2975,"bbLeft":957,"bbRight":1052},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1010,"end":1012},"doc_offset":{"start":1771,"end":1773},"block_offset":{"start":362,"end":364},"page_num":1,"text":"as","position":{"top":2953,"bottom":2971,"left":1066,"right":1098,"bbTop":2953,"bbBot":2971,"bbLeft":1066,"bbRight":1098},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1013,"end":1021},"doc_offset":{"start":1774,"end":1782},"block_offset":{"start":365,"end":373},"page_num":1,"text":"amended,","position":{"top":2947,"bottom":2975,"left":1110,"right":1254,"bbTop":2947,"bbBot":2975,"bbLeft":1110,"bbRight":1254},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1022,"end":1025},"doc_offset":{"start":1783,"end":1786},"block_offset":{"start":374,"end":377},"page_num":1,"text":"and","position":{"top":2947,"bottom":2971,"left":1268,"right":1320,"bbTop":2947,"bbBot":2971,"bbLeft":1268,"bbRight":1320},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1026,"end":1029},"doc_offset":{"start":1787,"end":1790},"block_offset":{"start":378,"end":381},"page_num":1,"text":"the","position":{"top":2947,"bottom":2971,"left":1332,"right":1376,"bbTop":2947,"bbBot":2971,"bbLeft":1332,"bbRight":1376},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1030,"end":1041},"doc_offset":{"start":1791,"end":1802},"block_offset":{"start":382,"end":393},"page_num":1,"text":"affirmative","position":{"top":2946,"bottom":2971,"left":1388,"right":1539,"bbTop":2946,"bbBot":2971,"bbLeft":1388,"bbRight":1539},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1042,"end":1048},"doc_offset":{"start":1803,"end":1809},"block_offset":{"start":394,"end":400},"page_num":1,"text":"action","position":{"top":2947,"bottom":2971,"left":1551,"right":1637,"bbTop":2947,"bbBot":2971,"bbLeft":1551,"bbRight":1637},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1049,"end":1056},"doc_offset":{"start":1810,"end":1817},"block_offset":{"start":401,"end":408},"page_num":1,"text":"clauses","position":{"top":2947,"bottom":2971,"left":1649,"right":1760,"bbTop":2947,"bbBot":2971,"bbLeft":1649,"bbRight":1760},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1057,"end":1059},"doc_offset":{"start":1818,"end":1820},"block_offset":{"start":409,"end":411},"page_num":1,"text":"as","position":{"top":2953,"bottom":2971,"left":1772,"right":1804,"bbTop":2953,"bbBot":2971,"bbLeft":1772,"bbRight":1804},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1060,"end":1063},"doc_offset":{"start":1821,"end":1824},"block_offset":{"start":412,"end":415},"page_num":1,"text":"set","position":{"top":2947,"bottom":2971,"left":1816,"right":1859,"bbTop":2947,"bbBot":2971,"bbLeft":1816,"bbRight":1859},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1064,"end":1069},"doc_offset":{"start":1825,"end":1830},"block_offset":{"start":416,"end":421},"page_num":1,"text":"forth","position":{"top":2946,"bottom":2971,"left":1869,"right":1933,"bbTop":2946,"bbBot":2971,"bbLeft":1869,"bbRight":1933},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1070,"end":1072},"doc_offset":{"start":1831,"end":1833},"block_offset":{"start":422,"end":424},"page_num":1,"text":"in","position":{"top":2947,"bottom":2971,"left":1947,"right":1968,"bbTop":2947,"bbBot":2971,"bbLeft":1947,"bbRight":1968},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1073,"end":1075},"doc_offset":{"start":1834,"end":1836},"block_offset":{"start":425,"end":427},"page_num":1,"text":"41","position":{"top":2947,"bottom":2971,"left":1980,"right":2011,"bbTop":2947,"bbBot":2971,"bbLeft":1980,"bbRight":2011},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1076,"end":1082},"doc_offset":{"start":1837,"end":1843},"block_offset":{"start":428,"end":434},"page_num":1,"text":"C.F.R.","position":{"top":2946,"bottom":2971,"left":2028,"right":2119,"bbTop":2946,"bbBot":2971,"bbLeft":2028,"bbRight":2119},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1083,"end":1091},"doc_offset":{"start":1844,"end":1852},"block_offset":{"start":435,"end":443},"page_num":1,"text":"60-741.4","position":{"top":2947,"bottom":2971,"left":2133,"right":2262,"bbTop":2947,"bbBot":2971,"bbLeft":2133,"bbRight":2262},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1092,"end":1096},"doc_offset":{"start":1853,"end":1857},"block_offset":{"start":444,"end":448},"page_num":1,"text":"(for","position":{"top":2946,"bottom":2978,"left":2274,"right":2323,"bbTop":2946,"bbBot":2978,"bbLeft":2274,"bbRight":2323},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1097,"end":1106},"doc_offset":{"start":1858,"end":1867},"block_offset":{"start":449,"end":458},"page_num":1,"text":"contracts","position":{"top":2992,"bottom":3016,"left":119,"right":252,"bbTop":2992,"bbBot":3016,"bbLeft":119,"bbRight":252},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1107,"end":1109},"doc_offset":{"start":1868,"end":1870},"block_offset":{"start":459,"end":461},"page_num":1,"text":"of","position":{"top":2991,"bottom":3016,"left":263,"right":291,"bbTop":2991,"bbBot":3016,"bbLeft":263,"bbRight":291},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1110,"end":1116},"doc_offset":{"start":1871,"end":1877},"block_offset":{"start":462,"end":468},"page_num":1,"text":"$2,500","position":{"top":2989,"bottom":3020,"left":300,"right":400,"bbTop":2989,"bbBot":3020,"bbLeft":300,"bbRight":400},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1117,"end":1119},"doc_offset":{"start":1878,"end":1880},"block_offset":{"start":469,"end":471},"page_num":1,"text":"or","position":{"top":2998,"bottom":3016,"left":411,"right":440,"bbTop":2998,"bbBot":3016,"bbLeft":411,"bbRight":440},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1120,"end":1125},"doc_offset":{"start":1881,"end":1886},"block_offset":{"start":472,"end":477},"page_num":1,"text":"more)","position":{"top":2991,"bottom":3022,"left":451,"right":535,"bbTop":2991,"bbBot":3022,"bbLeft":451,"bbRight":535},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1126,"end":1129},"doc_offset":{"start":1887,"end":1890},"block_offset":{"start":478,"end":481},"page_num":1,"text":"and","position":{"top":2992,"bottom":3016,"left":547,"right":599,"bbTop":2992,"bbBot":3016,"bbLeft":547,"bbRight":599},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1130,"end":1132},"doc_offset":{"start":1891,"end":1893},"block_offset":{"start":482,"end":484},"page_num":1,"text":"41","position":{"top":2991,"bottom":3015,"left":611,"right":641,"bbTop":2991,"bbBot":3015,"bbLeft":611,"bbRight":641},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1133,"end":1139},"doc_offset":{"start":1894,"end":1900},"block_offset":{"start":485,"end":491},"page_num":1,"text":"C.F.R.","position":{"top":2991,"bottom":3016,"left":658,"right":750,"bbTop":2991,"bbBot":3016,"bbLeft":658,"bbRight":750},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1140,"end":1148},"doc_offset":{"start":1901,"end":1909},"block_offset":{"start":492,"end":500},"page_num":1,"text":"60-250.4","position":{"top":2991,"bottom":3016,"left":764,"right":892,"bbTop":2991,"bbBot":3016,"bbLeft":764,"bbRight":892},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1149,"end":1153},"doc_offset":{"start":1910,"end":1914},"block_offset":{"start":501,"end":505},"page_num":1,"text":"(for","position":{"top":2991,"bottom":3022,"left":905,"right":954,"bbTop":2991,"bbBot":3022,"bbLeft":905,"bbRight":954},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1154,"end":1163},"doc_offset":{"start":1915,"end":1924},"block_offset":{"start":506,"end":515},"page_num":1,"text":"contracts","position":{"top":2992,"bottom":3016,"left":964,"right":1096,"bbTop":2992,"bbBot":3016,"bbLeft":964,"bbRight":1096},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1164,"end":1166},"doc_offset":{"start":1925,"end":1927},"block_offset":{"start":516,"end":518},"page_num":1,"text":"of","position":{"top":2991,"bottom":3016,"left":1108,"right":1136,"bbTop":2991,"bbBot":3016,"bbLeft":1108,"bbRight":1136},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1167,"end":1174},"doc_offset":{"start":1928,"end":1935},"block_offset":{"start":519,"end":526},"page_num":1,"text":"$10,000","position":{"top":2989,"bottom":3020,"left":1145,"right":1263,"bbTop":2989,"bbBot":3020,"bbLeft":1145,"bbRight":1263},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1175,"end":1177},"doc_offset":{"start":1936,"end":1938},"block_offset":{"start":527,"end":529},"page_num":1,"text":"or","position":{"top":2998,"bottom":3016,"left":1275,"right":1304,"bbTop":2998,"bbBot":3016,"bbLeft":1275,"bbRight":1304},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1178,"end":1183},"doc_offset":{"start":1939,"end":1944},"block_offset":{"start":530,"end":535},"page_num":1,"text":"more)","position":{"top":2991,"bottom":3022,"left":1315,"right":1398,"bbTop":2991,"bbBot":3022,"bbLeft":1315,"bbRight":1398},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1184,"end":1187},"doc_offset":{"start":1945,"end":1948},"block_offset":{"start":536,"end":539},"page_num":1,"text":"and","position":{"top":2992,"bottom":3016,"left":1410,"right":1462,"bbTop":2992,"bbBot":3016,"bbLeft":1410,"bbRight":1462},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1188,"end":1190},"doc_offset":{"start":1949,"end":1951},"block_offset":{"start":540,"end":542},"page_num":1,"text":"41","position":{"top":2991,"bottom":3015,"left":1474,"right":1505,"bbTop":2991,"bbBot":3015,"bbLeft":1474,"bbRight":1505},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1191,"end":1197},"doc_offset":{"start":1952,"end":1958},"block_offset":{"start":543,"end":549},"page_num":1,"text":"C.F.R.","position":{"top":2991,"bottom":3016,"left":1522,"right":1614,"bbTop":2991,"bbBot":3016,"bbLeft":1522,"bbRight":1614},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1198,"end":1207},"doc_offset":{"start":1959,"end":1968},"block_offset":{"start":550,"end":559},"page_num":1,"text":"61-250.10","position":{"top":2991,"bottom":3016,"left":1627,"right":1774,"bbTop":2991,"bbBot":3016,"bbLeft":1627,"bbRight":1774},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1208,"end":1218},"doc_offset":{"start":1969,"end":1979},"block_offset":{"start":560,"end":570},"page_num":1,"text":"(requiring","position":{"top":2991,"bottom":3022,"left":1787,"right":1924,"bbTop":2991,"bbBot":3022,"bbLeft":1787,"bbRight":1924},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1219,"end":1222},"doc_offset":{"start":1980,"end":1983},"block_offset":{"start":571,"end":574},"page_num":1,"text":"the","position":{"top":2992,"bottom":3016,"left":1936,"right":1980,"bbTop":2992,"bbBot":3016,"bbLeft":1936,"bbRight":1980},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1223,"end":1229},"doc_offset":{"start":1984,"end":1990},"block_offset":{"start":575,"end":581},"page_num":1,"text":"annual","position":{"top":2992,"bottom":3016,"left":1992,"right":2088,"bbTop":2992,"bbBot":3016,"bbLeft":1992,"bbRight":2088},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1230,"end":1239},"doc_offset":{"start":1991,"end":2000},"block_offset":{"start":582,"end":591},"page_num":1,"text":"reporting","position":{"top":2992,"bottom":3022,"left":2102,"right":2229,"bbTop":2992,"bbBot":3022,"bbLeft":2102,"bbRight":2229},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1240,"end":1242},"doc_offset":{"start":2001,"end":2003},"block_offset":{"start":592,"end":594},"page_num":1,"text":"of","position":{"top":2991,"bottom":3016,"left":2242,"right":2270,"bbTop":2991,"bbBot":3016,"bbLeft":2242,"bbRight":2270},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1243,"end":1250},"doc_offset":{"start":2004,"end":2011},"block_offset":{"start":595,"end":602},"page_num":1,"text":"Vietnam","position":{"top":3036,"bottom":3061,"left":118,"right":238,"bbTop":3036,"bbBot":3061,"bbLeft":118,"bbRight":238},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1251,"end":1254},"doc_offset":{"start":2012,"end":2015},"block_offset":{"start":603,"end":606},"page_num":1,"text":"era","position":{"top":3042,"bottom":3061,"left":250,"right":296,"bbTop":3042,"bbBot":3061,"bbLeft":250,"bbRight":296},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1255,"end":1258},"doc_offset":{"start":2016,"end":2019},"block_offset":{"start":607,"end":610},"page_num":1,"text":"and","position":{"top":3036,"bottom":3061,"left":308,"right":360,"bbTop":3036,"bbBot":3061,"bbLeft":308,"bbRight":360},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1259,"end":1266},"doc_offset":{"start":2020,"end":2027},"block_offset":{"start":611,"end":618},"page_num":1,"text":"special","position":{"top":3036,"bottom":3067,"left":372,"right":473,"bbTop":3036,"bbBot":3067,"bbLeft":372,"bbRight":473},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1267,"end":1275},"doc_offset":{"start":2028,"end":2036},"block_offset":{"start":619,"end":627},"page_num":1,"text":"disabled","position":{"top":3036,"bottom":3061,"left":486,"right":606,"bbTop":3036,"bbBot":3061,"bbLeft":486,"bbRight":606},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1276,"end":1285},"doc_offset":{"start":2037,"end":2046},"block_offset":{"start":628,"end":637},"page_num":1,"text":"veterans)","position":{"top":3036,"bottom":3067,"left":618,"right":756,"bbTop":3036,"bbBot":3067,"bbLeft":618,"bbRight":756},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1286,"end":1289},"doc_offset":{"start":2047,"end":2050},"block_offset":{"start":638,"end":641},"page_num":1,"text":"are","position":{"top":3042,"bottom":3061,"left":767,"right":813,"bbTop":3042,"bbBot":3061,"bbLeft":767,"bbRight":813},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1290,"end":1302},"doc_offset":{"start":2051,"end":2063},"block_offset":{"start":642,"end":654},"page_num":1,"text":"incorporated","position":{"top":3036,"bottom":3067,"left":826,"right":1006,"bbTop":3036,"bbBot":3067,"bbLeft":826,"bbRight":1006},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1303,"end":1309},"doc_offset":{"start":2064,"end":2070},"block_offset":{"start":655,"end":661},"page_num":1,"text":"herein","position":{"top":3036,"bottom":3061,"left":1020,"right":1108,"bbTop":3036,"bbBot":3061,"bbLeft":1020,"bbRight":1108},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1310,"end":1312},"doc_offset":{"start":2071,"end":2073},"block_offset":{"start":662,"end":664},"page_num":1,"text":"by","position":{"top":3036,"bottom":3067,"left":1122,"right":1155,"bbTop":3036,"bbBot":3067,"bbLeft":1122,"bbRight":1155},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1313,"end":1323},"doc_offset":{"start":2074,"end":2084},"block_offset":{"start":665,"end":675},"page_num":1,"text":"reference.","position":{"top":3036,"bottom":3061,"left":1167,"right":1312,"bbTop":3036,"bbBot":3061,"bbLeft":1167,"bbRight":1312},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1324,"end":1329},"doc_offset":{"start":2085,"end":2090},"block_offset":{"start":0,"end":5},"page_num":1,"text":"Benco","position":{"top":46,"bottom":146,"left":49,"right":302,"bbTop":46,"bbBot":146,"bbLeft":49,"bbRight":302},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}}] \ No newline at end of file diff --git a/tests/data/etloutput/4724/111923/110238/etl_output.json b/tests/data/etloutput/4724/111923/110238/etl_output.json new file mode 100644 index 0000000..52f7af6 --- /dev/null +++ b/tests/data/etloutput/4724/111923/110238/etl_output.json @@ -0,0 +1 @@ +{"pages":[{"image":"indico-file:///storage/submission/4724/111923/110238/original_page_0.png","thumbnail":"indico-file:///storage/submission/4724/111923/110238/original_thumbnail_0.png","size":{"width":2550,"height":3300},"dpi":{"dpix":300,"dpiy":300},"filename":"invoice_purchase_order.pdf","doc_offset":{"start":0,"end":762},"page_num":0,"text":"indico-file:///storage/submission/4724/111923/110238/page_0_text.txt","characters":"indico-file:///storage/submission/4724/111923/110238/page_0_chars.json","tokens":"indico-file:///storage/submission/4724/111923/110238/page_0_tokens.json","blocks":"indico-file:///storage/submission/4724/111923/110238/page_0_blocks.json","page_info":"indico-file:///storage/submission/4724/111923/110238/page_info_0.json"},{"image":"indico-file:///storage/submission/4724/111923/110238/original_page_1.png","thumbnail":"indico-file:///storage/submission/4724/111923/110238/original_thumbnail_1.png","size":{"width":2550,"height":3300},"dpi":{"dpix":300,"dpiy":300},"filename":"invoice_purchase_order.pdf","doc_offset":{"start":763,"end":2092},"page_num":1,"text":"indico-file:///storage/submission/4724/111923/110238/page_1_text.txt","characters":"indico-file:///storage/submission/4724/111923/110238/page_1_chars.json","tokens":"indico-file:///storage/submission/4724/111923/110238/page_1_tokens.json","blocks":"indico-file:///storage/submission/4724/111923/110238/page_1_blocks.json","page_info":"indico-file:///storage/submission/4724/111923/110238/page_info_1.json"}],"num_pages":2,"full_text":"indico-file:///storage/submission/4724/111923/110238/full_text.txt","email_metadata":{}} \ No newline at end of file diff --git a/tests/data/etloutput/4724/111923/110238/page_0_text.txt b/tests/data/etloutput/4724/111923/110238/page_0_text.txt new file mode 100644 index 0000000..fbfc937 --- /dev/null +++ b/tests/data/etloutput/4724/111923/110238/page_0_text.txt @@ -0,0 +1,61 @@ +HubSpot, Inc. +2 First Street, +Boston, +MA 02141 Tax +ID: 11-2665791 +indico data solutions, INC +Credit Card Receipt +579266 +Date +06/21/2016 +Portal ID +8 +392757 +Currency +USD +Bill To: +186 SOUTH STREET +SUITE 400 +Boston MA 02111 +US +Ship To: +186 SOUTH STREET +SUITE 400 +Boston MA 02111 +US +Item +Billing Frequency +Start Date +End Date +Quantity +Line Total +HubSpot Enterprise +Included Contacts +Enterprise Contacts - Per 1000 +Monthly +06/21/2016 +Monthly +06/21/2016 +Monthly +06/21/2016 +07/20/2016 +1 +$1,200.00 +07/20/2016 +10 +$0.00 +07/20/2016 +5 +$25.00 +Subtotal +$1,225.00 +Total Tax +$76.56 +Total +$1,301.56 +Please contact your Account Manager for any questions related to your contract. For any other general invoicing inquiries, please send +an email to bill @hubspot. +S +net +HubSpot +1 / 1 \ No newline at end of file diff --git a/tests/data/etloutput/4724/111923/110238/page_0_tokens.json b/tests/data/etloutput/4724/111923/110238/page_0_tokens.json new file mode 100644 index 0000000..2232d04 --- /dev/null +++ b/tests/data/etloutput/4724/111923/110238/page_0_tokens.json @@ -0,0 +1 @@ +[{"page_offset":{"start":0,"end":8},"doc_offset":{"start":0,"end":8},"block_offset":{"start":0,"end":8},"page_num":0,"text":"HubSpot,","position":{"top":430,"bottom":462,"left":902,"right":1035,"bbTop":430,"bbBot":462,"bbLeft":902,"bbRight":1035},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":9,"end":13},"doc_offset":{"start":9,"end":13},"block_offset":{"start":9,"end":13},"page_num":0,"text":"Inc.","position":{"top":431,"bottom":455,"left":1051,"right":1098,"bbTop":431,"bbBot":455,"bbLeft":1051,"bbRight":1098},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":14,"end":15},"doc_offset":{"start":14,"end":15},"block_offset":{"start":14,"end":15},"page_num":0,"text":"2","position":{"top":471,"bottom":495,"left":901,"right":917,"bbTop":471,"bbBot":495,"bbLeft":901,"bbRight":917},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":16,"end":21},"doc_offset":{"start":16,"end":21},"block_offset":{"start":16,"end":21},"page_num":0,"text":"First","position":{"top":471,"bottom":495,"left":930,"right":991,"bbTop":471,"bbBot":495,"bbLeft":930,"bbRight":991},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":22,"end":29},"doc_offset":{"start":22,"end":29},"block_offset":{"start":22,"end":29},"page_num":0,"text":"Street,","position":{"top":470,"bottom":500,"left":1003,"right":1097,"bbTop":470,"bbBot":500,"bbLeft":1003,"bbRight":1097},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":30,"end":37},"doc_offset":{"start":30,"end":37},"block_offset":{"start":0,"end":7},"page_num":0,"text":"Boston,","position":{"top":498,"bottom":549,"left":895,"right":1012,"bbTop":498,"bbBot":549,"bbLeft":895,"bbRight":1012},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":38,"end":40},"doc_offset":{"start":38,"end":40},"block_offset":{"start":0,"end":2},"page_num":0,"text":"MA","position":{"top":511,"bottom":535,"left":1024,"right":1071,"bbTop":511,"bbBot":535,"bbLeft":1024,"bbRight":1071},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":41,"end":46},"doc_offset":{"start":41,"end":46},"block_offset":{"start":3,"end":8},"page_num":0,"text":"02141","position":{"top":511,"bottom":535,"left":1082,"right":1167,"bbTop":511,"bbBot":535,"bbLeft":1082,"bbRight":1167},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":47,"end":50},"doc_offset":{"start":47,"end":50},"block_offset":{"start":9,"end":12},"page_num":0,"text":"Tax","position":{"top":511,"bottom":535,"left":1184,"right":1234,"bbTop":511,"bbBot":535,"bbLeft":1184,"bbRight":1234},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":51,"end":54},"doc_offset":{"start":51,"end":54},"block_offset":{"start":0,"end":3},"page_num":0,"text":"ID:","position":{"top":551,"bottom":575,"left":903,"right":940,"bbTop":551,"bbBot":575,"bbLeft":903,"bbRight":940},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":55,"end":65},"doc_offset":{"start":55,"end":65},"block_offset":{"start":4,"end":14},"page_num":0,"text":"11-2665791","position":{"top":551,"bottom":575,"left":953,"right":1121,"bbTop":551,"bbBot":575,"bbLeft":953,"bbRight":1121},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":66,"end":72},"doc_offset":{"start":66,"end":72},"block_offset":{"start":0,"end":6},"page_num":0,"text":"indico","position":{"top":673,"bottom":710,"left":173,"right":315,"bbTop":673,"bbBot":710,"bbLeft":173,"bbRight":315},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":73,"end":77},"doc_offset":{"start":73,"end":77},"block_offset":{"start":7,"end":11},"page_num":0,"text":"data","position":{"top":674,"bottom":710,"left":332,"right":432,"bbTop":674,"bbBot":710,"bbLeft":332,"bbRight":432},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":78,"end":88},"doc_offset":{"start":78,"end":88},"block_offset":{"start":12,"end":22},"page_num":0,"text":"solutions,","position":{"top":673,"bottom":718,"left":449,"right":680,"bbTop":673,"bbBot":718,"bbLeft":449,"bbRight":680},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":89,"end":92},"doc_offset":{"start":89,"end":92},"block_offset":{"start":23,"end":26},"page_num":0,"text":"INC","position":{"top":673,"bottom":710,"left":699,"right":780,"bbTop":673,"bbBot":710,"bbLeft":699,"bbRight":780},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":93,"end":99},"doc_offset":{"start":93,"end":99},"block_offset":{"start":0,"end":6},"page_num":0,"text":"Credit","position":{"top":673,"bottom":710,"left":1399,"right":1540,"bbTop":673,"bbBot":710,"bbLeft":1399,"bbRight":1540},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":100,"end":104},"doc_offset":{"start":100,"end":104},"block_offset":{"start":7,"end":11},"page_num":0,"text":"Card","position":{"top":673,"bottom":710,"left":1557,"right":1665,"bbTop":673,"bbBot":710,"bbLeft":1557,"bbRight":1665},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":105,"end":112},"doc_offset":{"start":105,"end":112},"block_offset":{"start":12,"end":19},"page_num":0,"text":"Receipt","position":{"top":673,"bottom":720,"left":1686,"right":1861,"bbTop":673,"bbBot":720,"bbLeft":1686,"bbRight":1861},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":113,"end":119},"doc_offset":{"start":113,"end":119},"block_offset":{"start":0,"end":6},"page_num":0,"text":"579266","position":{"top":674,"bottom":711,"left":2012,"right":2175,"bbTop":674,"bbBot":711,"bbLeft":2012,"bbRight":2175},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":120,"end":124},"doc_offset":{"start":120,"end":124},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Date","position":{"top":738,"bottom":766,"left":1400,"right":1477,"bbTop":738,"bbBot":766,"bbLeft":1400,"bbRight":1477},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":125,"end":135},"doc_offset":{"start":125,"end":135},"block_offset":{"start":0,"end":10},"page_num":0,"text":"06/21/2016","position":{"top":752,"bottom":779,"left":1807,"right":1992,"bbTop":752,"bbBot":779,"bbLeft":1807,"bbRight":1992},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":136,"end":142},"doc_offset":{"start":136,"end":142},"block_offset":{"start":0,"end":6},"page_num":0,"text":"Portal","position":{"top":810,"bottom":838,"left":1400,"right":1500,"bbTop":810,"bbBot":838,"bbLeft":1400,"bbRight":1500},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":143,"end":145},"doc_offset":{"start":143,"end":145},"block_offset":{"start":7,"end":9},"page_num":0,"text":"ID","position":{"top":810,"bottom":837,"left":1515,"right":1549,"bbTop":810,"bbBot":837,"bbLeft":1515,"bbRight":1549},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":146,"end":147},"doc_offset":{"start":146,"end":147},"block_offset":{"start":0,"end":1},"page_num":0,"text":"8","position":{"top":824,"bottom":851,"left":1932,"right":1950,"bbTop":824,"bbBot":851,"bbLeft":1932,"bbRight":1950},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":148,"end":154},"doc_offset":{"start":148,"end":154},"block_offset":{"start":0,"end":6},"page_num":0,"text":"392757","position":{"top":819,"bottom":855,"left":1805,"right":1927,"bbTop":819,"bbBot":855,"bbLeft":1805,"bbRight":1927},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":155,"end":163},"doc_offset":{"start":155,"end":163},"block_offset":{"start":0,"end":8},"page_num":0,"text":"Currency","position":{"top":881,"bottom":917,"left":1398,"right":1560,"bbTop":881,"bbBot":917,"bbLeft":1398,"bbRight":1560},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":164,"end":167},"doc_offset":{"start":164,"end":167},"block_offset":{"start":0,"end":3},"page_num":0,"text":"USD","position":{"top":895,"bottom":923,"left":1809,"right":1883,"bbTop":895,"bbBot":923,"bbLeft":1809,"bbRight":1883},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":168,"end":172},"doc_offset":{"start":168,"end":172},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Bill","position":{"top":830,"bottom":857,"left":172,"right":225,"bbTop":830,"bbBot":857,"bbLeft":172,"bbRight":225},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":173,"end":176},"doc_offset":{"start":173,"end":176},"block_offset":{"start":5,"end":8},"page_num":0,"text":"To:","position":{"top":830,"bottom":858,"left":235,"right":287,"bbTop":830,"bbBot":858,"bbLeft":235,"bbRight":287},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":177,"end":180},"doc_offset":{"start":177,"end":180},"block_offset":{"start":0,"end":3},"page_num":0,"text":"186","position":{"top":883,"bottom":910,"left":173,"right":231,"bbTop":883,"bbBot":910,"bbLeft":173,"bbRight":231},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":181,"end":186},"doc_offset":{"start":181,"end":186},"block_offset":{"start":4,"end":9},"page_num":0,"text":"SOUTH","position":{"top":881,"bottom":910,"left":244,"right":371,"bbTop":881,"bbBot":910,"bbLeft":244,"bbRight":371},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":187,"end":193},"doc_offset":{"start":187,"end":193},"block_offset":{"start":10,"end":16},"page_num":0,"text":"STREET","position":{"top":881,"bottom":910,"left":386,"right":532,"bbTop":881,"bbBot":910,"bbLeft":386,"bbRight":532},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":194,"end":199},"doc_offset":{"start":194,"end":199},"block_offset":{"start":17,"end":22},"page_num":0,"text":"SUITE","position":{"top":926,"bottom":955,"left":171,"right":278,"bbTop":926,"bbBot":955,"bbLeft":171,"bbRight":278},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":200,"end":203},"doc_offset":{"start":200,"end":203},"block_offset":{"start":23,"end":26},"page_num":0,"text":"400","position":{"top":928,"bottom":955,"left":291,"right":351,"bbTop":928,"bbBot":955,"bbLeft":291,"bbRight":351},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":204,"end":210},"doc_offset":{"start":204,"end":210},"block_offset":{"start":27,"end":33},"page_num":0,"text":"Boston","position":{"top":972,"bottom":1000,"left":172,"right":284,"bbTop":972,"bbBot":1000,"bbLeft":172,"bbRight":284},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":211,"end":213},"doc_offset":{"start":211,"end":213},"block_offset":{"start":34,"end":36},"page_num":0,"text":"MA","position":{"top":972,"bottom":999,"left":299,"right":352,"bbTop":972,"bbBot":999,"bbLeft":299,"bbRight":352},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":214,"end":219},"doc_offset":{"start":214,"end":219},"block_offset":{"start":37,"end":42},"page_num":0,"text":"02111","position":{"top":973,"bottom":1000,"left":365,"right":460,"bbTop":973,"bbBot":1000,"bbLeft":365,"bbRight":460},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":220,"end":222},"doc_offset":{"start":220,"end":222},"block_offset":{"start":43,"end":45},"page_num":0,"text":"US","position":{"top":1016,"bottom":1045,"left":173,"right":220,"bbTop":1016,"bbBot":1045,"bbLeft":173,"bbRight":220},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":223,"end":227},"doc_offset":{"start":223,"end":227},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Ship","position":{"top":829,"bottom":865,"left":785,"right":863,"bbTop":829,"bbBot":865,"bbLeft":785,"bbRight":863},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":228,"end":231},"doc_offset":{"start":228,"end":231},"block_offset":{"start":5,"end":8},"page_num":0,"text":"To:","position":{"top":830,"bottom":858,"left":872,"right":924,"bbTop":830,"bbBot":858,"bbLeft":872,"bbRight":924},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":232,"end":235},"doc_offset":{"start":232,"end":235},"block_offset":{"start":9,"end":12},"page_num":0,"text":"186","position":{"top":883,"bottom":910,"left":787,"right":844,"bbTop":883,"bbBot":910,"bbLeft":787,"bbRight":844},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":236,"end":241},"doc_offset":{"start":236,"end":241},"block_offset":{"start":13,"end":18},"page_num":0,"text":"SOUTH","position":{"top":881,"bottom":910,"left":858,"right":985,"bbTop":881,"bbBot":910,"bbLeft":858,"bbRight":985},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":242,"end":248},"doc_offset":{"start":242,"end":248},"block_offset":{"start":19,"end":25},"page_num":0,"text":"STREET","position":{"top":881,"bottom":910,"left":1000,"right":1145,"bbTop":881,"bbBot":910,"bbLeft":1000,"bbRight":1145},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":249,"end":254},"doc_offset":{"start":249,"end":254},"block_offset":{"start":26,"end":31},"page_num":0,"text":"SUITE","position":{"top":926,"bottom":955,"left":785,"right":892,"bbTop":926,"bbBot":955,"bbLeft":785,"bbRight":892},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":255,"end":258},"doc_offset":{"start":255,"end":258},"block_offset":{"start":32,"end":35},"page_num":0,"text":"400","position":{"top":928,"bottom":955,"left":905,"right":965,"bbTop":928,"bbBot":955,"bbLeft":905,"bbRight":965},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":259,"end":265},"doc_offset":{"start":259,"end":265},"block_offset":{"start":36,"end":42},"page_num":0,"text":"Boston","position":{"top":972,"bottom":1000,"left":786,"right":897,"bbTop":972,"bbBot":1000,"bbLeft":786,"bbRight":897},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":266,"end":268},"doc_offset":{"start":266,"end":268},"block_offset":{"start":43,"end":45},"page_num":0,"text":"MA","position":{"top":972,"bottom":999,"left":913,"right":966,"bbTop":972,"bbBot":999,"bbLeft":913,"bbRight":966},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":269,"end":274},"doc_offset":{"start":269,"end":274},"block_offset":{"start":46,"end":51},"page_num":0,"text":"02111","position":{"top":973,"bottom":1000,"left":978,"right":1074,"bbTop":973,"bbBot":1000,"bbLeft":978,"bbRight":1074},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":275,"end":277},"doc_offset":{"start":275,"end":277},"block_offset":{"start":52,"end":54},"page_num":0,"text":"US","position":{"top":1016,"bottom":1045,"left":786,"right":833,"bbTop":1016,"bbBot":1045,"bbLeft":786,"bbRight":833},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":278,"end":282},"doc_offset":{"start":278,"end":282},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Item","position":{"top":1141,"bottom":1166,"left":178,"right":243,"bbTop":1141,"bbBot":1166,"bbLeft":178,"bbRight":243},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":283,"end":290},"doc_offset":{"start":283,"end":290},"block_offset":{"start":0,"end":7},"page_num":0,"text":"Billing","position":{"top":1141,"bottom":1173,"left":1013,"right":1110,"bbTop":1141,"bbBot":1173,"bbLeft":1013,"bbRight":1110},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":291,"end":300},"doc_offset":{"start":291,"end":300},"block_offset":{"start":8,"end":17},"page_num":0,"text":"Frequency","position":{"top":1141,"bottom":1172,"left":1124,"right":1289,"bbTop":1141,"bbBot":1172,"bbLeft":1124,"bbRight":1289},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":301,"end":306},"doc_offset":{"start":301,"end":306},"block_offset":{"start":0,"end":5},"page_num":0,"text":"Start","position":{"top":1141,"bottom":1166,"left":1446,"right":1520,"bbTop":1141,"bbBot":1166,"bbLeft":1446,"bbRight":1520},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":307,"end":311},"doc_offset":{"start":307,"end":311},"block_offset":{"start":6,"end":10},"page_num":0,"text":"Date","position":{"top":1141,"bottom":1166,"left":1533,"right":1602,"bbTop":1141,"bbBot":1166,"bbLeft":1533,"bbRight":1602},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":312,"end":315},"doc_offset":{"start":312,"end":315},"block_offset":{"start":0,"end":3},"page_num":0,"text":"End","position":{"top":1141,"bottom":1166,"left":1703,"right":1761,"bbTop":1141,"bbBot":1166,"bbLeft":1703,"bbRight":1761},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":316,"end":320},"doc_offset":{"start":316,"end":320},"block_offset":{"start":4,"end":8},"page_num":0,"text":"Date","position":{"top":1141,"bottom":1166,"left":1775,"right":1844,"bbTop":1141,"bbBot":1166,"bbLeft":1775,"bbRight":1844},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":321,"end":329},"doc_offset":{"start":321,"end":329},"block_offset":{"start":0,"end":8},"page_num":0,"text":"Quantity","position":{"top":1141,"bottom":1172,"left":1956,"right":2089,"bbTop":1141,"bbBot":1172,"bbLeft":1956,"bbRight":2089},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":330,"end":334},"doc_offset":{"start":330,"end":334},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Line","position":{"top":1141,"bottom":1166,"left":2198,"right":2263,"bbTop":1141,"bbBot":1166,"bbLeft":2198,"bbRight":2263},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":335,"end":340},"doc_offset":{"start":335,"end":340},"block_offset":{"start":5,"end":10},"page_num":0,"text":"Total","position":{"top":1141,"bottom":1166,"left":2271,"right":2345,"bbTop":1141,"bbBot":1166,"bbLeft":2271,"bbRight":2345},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":341,"end":348},"doc_offset":{"start":341,"end":348},"block_offset":{"start":0,"end":7},"page_num":0,"text":"HubSpot","position":{"top":1237,"bottom":1273,"left":176,"right":318,"bbTop":1237,"bbBot":1273,"bbLeft":176,"bbRight":318},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":349,"end":359},"doc_offset":{"start":349,"end":359},"block_offset":{"start":8,"end":18},"page_num":0,"text":"Enterprise","position":{"top":1238,"bottom":1273,"left":332,"right":500,"bbTop":1238,"bbBot":1273,"bbLeft":332,"bbRight":500},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":360,"end":368},"doc_offset":{"start":360,"end":368},"block_offset":{"start":0,"end":8},"page_num":0,"text":"Included","position":{"top":1321,"bottom":1349,"left":177,"right":312,"bbTop":1321,"bbBot":1349,"bbLeft":177,"bbRight":312},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":369,"end":377},"doc_offset":{"start":369,"end":377},"block_offset":{"start":9,"end":17},"page_num":0,"text":"Contacts","position":{"top":1320,"bottom":1349,"left":327,"right":472,"bbTop":1320,"bbBot":1349,"bbLeft":327,"bbRight":472},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":378,"end":388},"doc_offset":{"start":378,"end":388},"block_offset":{"start":0,"end":10},"page_num":0,"text":"Enterprise","position":{"top":1404,"bottom":1439,"left":176,"right":344,"bbTop":1404,"bbBot":1439,"bbLeft":176,"bbRight":344},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":389,"end":397},"doc_offset":{"start":389,"end":397},"block_offset":{"start":11,"end":19},"page_num":0,"text":"Contacts","position":{"top":1404,"bottom":1432,"left":357,"right":502,"bbTop":1404,"bbBot":1432,"bbLeft":357,"bbRight":502},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":398,"end":399},"doc_offset":{"start":398,"end":399},"block_offset":{"start":20,"end":21},"page_num":0,"text":"-","position":{"top":1419,"bottom":1422,"left":516,"right":525,"bbTop":1419,"bbBot":1422,"bbLeft":516,"bbRight":525},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":400,"end":403},"doc_offset":{"start":400,"end":403},"block_offset":{"start":22,"end":25},"page_num":0,"text":"Per","position":{"top":1404,"bottom":1432,"left":540,"right":593,"bbTop":1404,"bbBot":1432,"bbLeft":540,"bbRight":593},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":404,"end":408},"doc_offset":{"start":404,"end":408},"block_offset":{"start":26,"end":30},"page_num":0,"text":"1000","position":{"top":1405,"bottom":1432,"left":608,"right":686,"bbTop":1405,"bbBot":1432,"bbLeft":608,"bbRight":686},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":409,"end":416},"doc_offset":{"start":409,"end":416},"block_offset":{"start":0,"end":7},"page_num":0,"text":"Monthly","position":{"top":1238,"bottom":1273,"left":1087,"right":1215,"bbTop":1238,"bbBot":1273,"bbLeft":1087,"bbRight":1215},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":417,"end":427},"doc_offset":{"start":417,"end":427},"block_offset":{"start":0,"end":10},"page_num":0,"text":"06/21/2016","position":{"top":1238,"bottom":1266,"left":1431,"right":1616,"bbTop":1238,"bbBot":1266,"bbLeft":1431,"bbRight":1616},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":428,"end":435},"doc_offset":{"start":428,"end":435},"block_offset":{"start":0,"end":7},"page_num":0,"text":"Monthly","position":{"top":1321,"bottom":1356,"left":1087,"right":1215,"bbTop":1321,"bbBot":1356,"bbLeft":1087,"bbRight":1215},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":436,"end":446},"doc_offset":{"start":436,"end":446},"block_offset":{"start":0,"end":10},"page_num":0,"text":"06/21/2016","position":{"top":1321,"bottom":1349,"left":1431,"right":1616,"bbTop":1321,"bbBot":1349,"bbLeft":1431,"bbRight":1616},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":447,"end":454},"doc_offset":{"start":447,"end":454},"block_offset":{"start":0,"end":7},"page_num":0,"text":"Monthly","position":{"top":1404,"bottom":1439,"left":1087,"right":1215,"bbTop":1404,"bbBot":1439,"bbLeft":1087,"bbRight":1215},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":455,"end":465},"doc_offset":{"start":455,"end":465},"block_offset":{"start":0,"end":10},"page_num":0,"text":"06/21/2016","position":{"top":1404,"bottom":1432,"left":1431,"right":1616,"bbTop":1404,"bbBot":1432,"bbLeft":1431,"bbRight":1616},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":466,"end":476},"doc_offset":{"start":466,"end":476},"block_offset":{"start":0,"end":10},"page_num":0,"text":"07/20/2016","position":{"top":1238,"bottom":1266,"left":1680,"right":1865,"bbTop":1238,"bbBot":1266,"bbLeft":1680,"bbRight":1865},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":477,"end":478},"doc_offset":{"start":477,"end":478},"block_offset":{"start":0,"end":1},"page_num":0,"text":"1","position":{"top":1239,"bottom":1265,"left":2015,"right":2025,"bbTop":1239,"bbBot":1265,"bbLeft":2015,"bbRight":2025},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":479,"end":488},"doc_offset":{"start":479,"end":488},"block_offset":{"start":0,"end":9},"page_num":0,"text":"$1,200.00","position":{"top":1236,"bottom":1270,"left":2189,"right":2353,"bbTop":1236,"bbBot":1270,"bbLeft":2189,"bbRight":2353},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":489,"end":499},"doc_offset":{"start":489,"end":499},"block_offset":{"start":0,"end":10},"page_num":0,"text":"07/20/2016","position":{"top":1321,"bottom":1349,"left":1680,"right":1865,"bbTop":1321,"bbBot":1349,"bbLeft":1680,"bbRight":1865},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":500,"end":502},"doc_offset":{"start":500,"end":502},"block_offset":{"start":0,"end":2},"page_num":0,"text":"10","position":{"top":1322,"bottom":1349,"left":2005,"right":2041,"bbTop":1322,"bbBot":1349,"bbLeft":2005,"bbRight":2041},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":503,"end":508},"doc_offset":{"start":503,"end":508},"block_offset":{"start":0,"end":5},"page_num":0,"text":"$0.00","position":{"top":1319,"bottom":1352,"left":2226,"right":2317,"bbTop":1319,"bbBot":1352,"bbLeft":2226,"bbRight":2317},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":509,"end":519},"doc_offset":{"start":509,"end":519},"block_offset":{"start":0,"end":10},"page_num":0,"text":"07/20/2016","position":{"top":1404,"bottom":1432,"left":1680,"right":1865,"bbTop":1404,"bbBot":1432,"bbLeft":1680,"bbRight":1865},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":520,"end":521},"doc_offset":{"start":520,"end":521},"block_offset":{"start":0,"end":1},"page_num":0,"text":"5","position":{"top":1405,"bottom":1432,"left":2013,"right":2031,"bbTop":1405,"bbBot":1432,"bbLeft":2013,"bbRight":2031},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":522,"end":528},"doc_offset":{"start":522,"end":528},"block_offset":{"start":0,"end":6},"page_num":0,"text":"$25.00","position":{"top":1402,"bottom":1435,"left":2215,"right":2327,"bbTop":1402,"bbBot":1435,"bbLeft":2215,"bbRight":2327},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":529,"end":537},"doc_offset":{"start":529,"end":537},"block_offset":{"start":0,"end":8},"page_num":0,"text":"Subtotal","position":{"top":1518,"bottom":1546,"left":1856,"right":2001,"bbTop":1518,"bbBot":1546,"bbLeft":1856,"bbRight":2001},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":538,"end":547},"doc_offset":{"start":538,"end":547},"block_offset":{"start":0,"end":9},"page_num":0,"text":"$1,225.00","position":{"top":1516,"bottom":1551,"left":2213,"right":2378,"bbTop":1516,"bbBot":1551,"bbLeft":2213,"bbRight":2378},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":548,"end":553},"doc_offset":{"start":548,"end":553},"block_offset":{"start":0,"end":5},"page_num":0,"text":"Total","position":{"top":1590,"bottom":1618,"left":1839,"right":1923,"bbTop":1590,"bbBot":1618,"bbLeft":1839,"bbRight":1923},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":554,"end":557},"doc_offset":{"start":554,"end":557},"block_offset":{"start":6,"end":9},"page_num":0,"text":"Tax","position":{"top":1590,"bottom":1618,"left":1933,"right":1993,"bbTop":1590,"bbBot":1618,"bbLeft":1933,"bbRight":1993},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":558,"end":564},"doc_offset":{"start":558,"end":564},"block_offset":{"start":0,"end":6},"page_num":0,"text":"$76.56","position":{"top":1588,"bottom":1622,"left":2266,"right":2378,"bbTop":1588,"bbBot":1622,"bbLeft":2266,"bbRight":2378},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":565,"end":570},"doc_offset":{"start":565,"end":570},"block_offset":{"start":0,"end":5},"page_num":0,"text":"Total","position":{"top":1662,"bottom":1690,"left":1918,"right":2001,"bbTop":1662,"bbBot":1690,"bbLeft":1918,"bbRight":2001},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":571,"end":580},"doc_offset":{"start":571,"end":580},"block_offset":{"start":0,"end":9},"page_num":0,"text":"$1,301.56","position":{"top":1660,"bottom":1695,"left":2213,"right":2378,"bbTop":1660,"bbBot":1695,"bbLeft":2213,"bbRight":2378},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":581,"end":587},"doc_offset":{"start":581,"end":587},"block_offset":{"start":0,"end":6},"page_num":0,"text":"Please","position":{"top":1778,"bottom":1806,"left":165,"right":275,"bbTop":1778,"bbBot":1806,"bbLeft":165,"bbRight":275},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":588,"end":595},"doc_offset":{"start":588,"end":595},"block_offset":{"start":7,"end":14},"page_num":0,"text":"contact","position":{"top":1780,"bottom":1806,"left":288,"right":407,"bbTop":1780,"bbBot":1806,"bbLeft":288,"bbRight":407},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":596,"end":600},"doc_offset":{"start":596,"end":600},"block_offset":{"start":15,"end":19},"page_num":0,"text":"your","position":{"top":1785,"bottom":1813,"left":419,"right":491,"bbTop":1785,"bbBot":1813,"bbLeft":419,"bbRight":491},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":601,"end":608},"doc_offset":{"start":601,"end":608},"block_offset":{"start":20,"end":27},"page_num":0,"text":"Account","position":{"top":1778,"bottom":1806,"left":502,"right":636,"bbTop":1778,"bbBot":1806,"bbLeft":502,"bbRight":636},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":609,"end":616},"doc_offset":{"start":609,"end":616},"block_offset":{"start":28,"end":35},"page_num":0,"text":"Manager","position":{"top":1778,"bottom":1813,"left":650,"right":795,"bbTop":1778,"bbBot":1813,"bbLeft":650,"bbRight":795},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":617,"end":620},"doc_offset":{"start":617,"end":620},"block_offset":{"start":36,"end":39},"page_num":0,"text":"for","position":{"top":1778,"bottom":1806,"left":807,"right":849,"bbTop":1778,"bbBot":1806,"bbLeft":807,"bbRight":849},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":621,"end":624},"doc_offset":{"start":621,"end":624},"block_offset":{"start":40,"end":43},"page_num":0,"text":"any","position":{"top":1785,"bottom":1813,"left":862,"right":920,"bbTop":1785,"bbBot":1813,"bbLeft":862,"bbRight":920},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":625,"end":634},"doc_offset":{"start":625,"end":634},"block_offset":{"start":44,"end":53},"page_num":0,"text":"questions","position":{"top":1778,"bottom":1813,"left":932,"right":1090,"bbTop":1778,"bbBot":1813,"bbLeft":932,"bbRight":1090},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":635,"end":642},"doc_offset":{"start":635,"end":642},"block_offset":{"start":54,"end":61},"page_num":0,"text":"related","position":{"top":1778,"bottom":1806,"left":1105,"right":1214,"bbTop":1778,"bbBot":1806,"bbLeft":1105,"bbRight":1214},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":643,"end":645},"doc_offset":{"start":643,"end":645},"block_offset":{"start":62,"end":64},"page_num":0,"text":"to","position":{"top":1780,"bottom":1806,"left":1228,"right":1257,"bbTop":1780,"bbBot":1806,"bbLeft":1228,"bbRight":1257},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":646,"end":650},"doc_offset":{"start":646,"end":650},"block_offset":{"start":65,"end":69},"page_num":0,"text":"your","position":{"top":1785,"bottom":1813,"left":1269,"right":1341,"bbTop":1785,"bbBot":1813,"bbLeft":1269,"bbRight":1341},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":651,"end":660},"doc_offset":{"start":651,"end":660},"block_offset":{"start":70,"end":79},"page_num":0,"text":"contract.","position":{"top":1780,"bottom":1806,"left":1353,"right":1493,"bbTop":1780,"bbBot":1806,"bbLeft":1353,"bbRight":1493},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":661,"end":664},"doc_offset":{"start":661,"end":664},"block_offset":{"start":80,"end":83},"page_num":0,"text":"For","position":{"top":1778,"bottom":1806,"left":1507,"right":1560,"bbTop":1778,"bbBot":1806,"bbLeft":1507,"bbRight":1560},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":665,"end":668},"doc_offset":{"start":665,"end":668},"block_offset":{"start":84,"end":87},"page_num":0,"text":"any","position":{"top":1785,"bottom":1813,"left":1570,"right":1629,"bbTop":1785,"bbBot":1813,"bbLeft":1570,"bbRight":1629},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":669,"end":674},"doc_offset":{"start":669,"end":674},"block_offset":{"start":88,"end":93},"page_num":0,"text":"other","position":{"top":1778,"bottom":1806,"left":1638,"right":1722,"bbTop":1778,"bbBot":1806,"bbLeft":1638,"bbRight":1722},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":675,"end":682},"doc_offset":{"start":675,"end":682},"block_offset":{"start":94,"end":101},"page_num":0,"text":"general","position":{"top":1778,"bottom":1813,"left":1732,"right":1853,"bbTop":1778,"bbBot":1813,"bbLeft":1732,"bbRight":1853},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":683,"end":692},"doc_offset":{"start":683,"end":692},"block_offset":{"start":102,"end":111},"page_num":0,"text":"invoicing","position":{"top":1778,"bottom":1813,"left":1867,"right":2007,"bbTop":1778,"bbBot":1813,"bbLeft":1867,"bbRight":2007},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":693,"end":703},"doc_offset":{"start":693,"end":703},"block_offset":{"start":112,"end":122},"page_num":0,"text":"inquiries,","position":{"top":1778,"bottom":1813,"left":2021,"right":2165,"bbTop":1778,"bbBot":1813,"bbLeft":2021,"bbRight":2165},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":704,"end":710},"doc_offset":{"start":704,"end":710},"block_offset":{"start":123,"end":129},"page_num":0,"text":"please","position":{"top":1778,"bottom":1813,"left":2179,"right":2285,"bbTop":1778,"bbBot":1813,"bbLeft":2179,"bbRight":2285},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":711,"end":715},"doc_offset":{"start":711,"end":715},"block_offset":{"start":130,"end":134},"page_num":0,"text":"send","position":{"top":1778,"bottom":1806,"left":2296,"right":2374,"bbTop":1778,"bbBot":1806,"bbLeft":2296,"bbRight":2374},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":716,"end":718},"doc_offset":{"start":716,"end":718},"block_offset":{"start":135,"end":137},"page_num":0,"text":"an","position":{"top":1830,"bottom":1851,"left":164,"right":201,"bbTop":1830,"bbBot":1851,"bbLeft":164,"bbRight":201},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":719,"end":724},"doc_offset":{"start":719,"end":724},"block_offset":{"start":138,"end":143},"page_num":0,"text":"email","position":{"top":1823,"bottom":1851,"left":215,"right":301,"bbTop":1823,"bbBot":1851,"bbLeft":215,"bbRight":301},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":725,"end":727},"doc_offset":{"start":725,"end":727},"block_offset":{"start":144,"end":146},"page_num":0,"text":"to","position":{"top":1825,"bottom":1851,"left":315,"right":344,"bbTop":1825,"bbBot":1851,"bbLeft":315,"bbRight":344},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":728,"end":732},"doc_offset":{"start":728,"end":732},"block_offset":{"start":147,"end":151},"page_num":0,"text":"bill","position":{"top":1823,"bottom":1851,"left":358,"right":399,"bbTop":1823,"bbBot":1851,"bbLeft":358,"bbRight":399},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":733,"end":742},"doc_offset":{"start":733,"end":742},"block_offset":{"start":152,"end":161},"page_num":0,"text":"@hubspot.","position":{"top":1822,"bottom":1858,"left":425,"right":599,"bbTop":1822,"bbBot":1858,"bbLeft":425,"bbRight":599},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":743,"end":744},"doc_offset":{"start":743,"end":744},"block_offset":{"start":162,"end":163},"page_num":0,"text":"S","position":{"top":1824,"bottom":1853,"left":399,"right":414,"bbTop":1824,"bbBot":1853,"bbLeft":399,"bbRight":414},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":745,"end":748},"doc_offset":{"start":745,"end":748},"block_offset":{"start":164,"end":167},"page_num":0,"text":"net","position":{"top":1820,"bottom":1854,"left":600,"right":657,"bbTop":1820,"bbBot":1854,"bbLeft":600,"bbRight":657},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":749,"end":756},"doc_offset":{"start":749,"end":756},"block_offset":{"start":0,"end":7},"page_num":0,"text":"HubSpot","position":{"top":186,"bottom":301,"left":911,"right":1311,"bbTop":186,"bbBot":301,"bbLeft":911,"bbRight":1311},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":757,"end":758},"doc_offset":{"start":757,"end":758},"block_offset":{"start":0,"end":1},"page_num":0,"text":"1","position":{"top":3040,"bottom":3060,"left":2271,"right":2279,"bbTop":3040,"bbBot":3060,"bbLeft":2271,"bbRight":2279},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":759,"end":760},"doc_offset":{"start":759,"end":760},"block_offset":{"start":2,"end":3},"page_num":0,"text":"/","position":{"top":3032,"bottom":3060,"left":2296,"right":2308,"bbTop":3032,"bbBot":3060,"bbLeft":2296,"bbRight":2308},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":761,"end":762},"doc_offset":{"start":761,"end":762},"block_offset":{"start":4,"end":5},"page_num":0,"text":"1","position":{"top":3040,"bottom":3060,"left":2321,"right":2328,"bbTop":3040,"bbBot":3060,"bbLeft":2321,"bbRight":2328},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}}] \ No newline at end of file diff --git a/tests/data/etloutput/4724/111923/110238/page_1_text.txt b/tests/data/etloutput/4724/111923/110238/page_1_text.txt new file mode 100644 index 0000000..123477c --- /dev/null +++ b/tests/data/etloutput/4724/111923/110238/page_1_text.txt @@ -0,0 +1,62 @@ +295 Centerpoint Blvd * PO Box 491 +Pittston, PA 18640-0491 +Phone: 1-800-GO-BENCO (1-800-462-3626) +Fax: 570-602-4919 +www.benco.com +Purchase Order +P/O # +29111525 +LOCATION +010 +DATE +06/16/21 +PAGE +1 OF 1 +000046 +CAULK +38 W CLARK AVE +MILFORD, DE 19963 +800-532-2855 +SHIP TO +BENCO SCHOOL KITS +295 CENTERPOINT BLVD +PITTSTON, PA 18640 +7 +L +P/O DATE +BUYER +06/16/21 +SHIP VIA +TRUCK +Michelle Amos +86847 +CONTACT +DENTSPLY CAULK(110900) +VENDOR FAX NUMBER +1800-788-4110 +F.O.B. +PAYMENT TERMS +NET 30 DAYS +QUANTITY +PRODUCT / DESCRIPTION +COST +U/M +EXTENSION +60 605220 +JELTRATE DUSTLESS FAST +12.00 +EA +720.00 +60 608015 +JELTRATE SCOOP / MEASURE SET +3.05 +ST +183.00 +TOTAL +903.00 +The seller agrees, in connection with the performance of work under this order, not to discriminate against any employee or applicant for employment +because of any race, sex, religion, color, national origin, disability or status as a disabled veteran or veteran of the Vietnam era. Unless exempted, +Section 202, paragraphs 1 through 7 of Executive Order 11246, as amended, and the affirmative action clauses as set forth in 41 C.F.R. 60-741.4 (for +contracts of $2,500 or more) and 41 C.F.R. 60-250.4 (for contracts of $10,000 or more) and 41 C.F.R. 61-250.10 (requiring the annual reporting of +Vietnam era and special disabled veterans) are incorporated herein by reference. +Benco \ No newline at end of file diff --git a/tests/data/etloutput/4724/111923/110238/page_1_tokens.json b/tests/data/etloutput/4724/111923/110238/page_1_tokens.json new file mode 100644 index 0000000..8916fc4 --- /dev/null +++ b/tests/data/etloutput/4724/111923/110238/page_1_tokens.json @@ -0,0 +1 @@ +[{"page_offset":{"start":0,"end":3},"doc_offset":{"start":763,"end":766},"block_offset":{"start":0,"end":3},"page_num":1,"text":"295","position":{"top":27,"bottom":47,"left":439,"right":483,"bbTop":27,"bbBot":47,"bbLeft":439,"bbRight":483},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":4,"end":15},"doc_offset":{"start":767,"end":778},"block_offset":{"start":4,"end":15},"page_num":1,"text":"Centerpoint","position":{"top":27,"bottom":53,"left":492,"right":634,"bbTop":27,"bbBot":53,"bbLeft":492,"bbRight":634},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":16,"end":20},"doc_offset":{"start":779,"end":783},"block_offset":{"start":16,"end":20},"page_num":1,"text":"Blvd","position":{"top":27,"bottom":47,"left":639,"right":696,"bbTop":27,"bbBot":47,"bbLeft":639,"bbRight":696},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":21,"end":22},"doc_offset":{"start":784,"end":785},"block_offset":{"start":21,"end":22},"page_num":1,"text":"*","position":{"top":27,"bottom":38,"left":706,"right":717,"bbTop":27,"bbBot":38,"bbLeft":706,"bbRight":717},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":23,"end":25},"doc_offset":{"start":786,"end":788},"block_offset":{"start":23,"end":25},"page_num":1,"text":"PO","position":{"top":27,"bottom":47,"left":723,"right":763,"bbTop":27,"bbBot":47,"bbLeft":723,"bbRight":763},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":26,"end":29},"doc_offset":{"start":789,"end":792},"block_offset":{"start":26,"end":29},"page_num":1,"text":"Box","position":{"top":27,"bottom":47,"left":770,"right":819,"bbTop":27,"bbBot":47,"bbLeft":770,"bbRight":819},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":30,"end":33},"doc_offset":{"start":793,"end":796},"block_offset":{"start":30,"end":33},"page_num":1,"text":"491","position":{"top":27,"bottom":47,"left":827,"right":868,"bbTop":27,"bbBot":47,"bbLeft":827,"bbRight":868},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":34,"end":43},"doc_offset":{"start":797,"end":806},"block_offset":{"start":34,"end":43},"page_num":1,"text":"Pittston,","position":{"top":62,"bottom":86,"left":438,"right":537,"bbTop":62,"bbBot":86,"bbLeft":438,"bbRight":537},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":44,"end":46},"doc_offset":{"start":807,"end":809},"block_offset":{"start":44,"end":46},"page_num":1,"text":"PA","position":{"top":62,"bottom":81,"left":545,"right":581,"bbTop":62,"bbBot":81,"bbLeft":545,"bbRight":581},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":47,"end":57},"doc_offset":{"start":810,"end":820},"block_offset":{"start":47,"end":57},"page_num":1,"text":"18640-0491","position":{"top":62,"bottom":82,"left":591,"right":730,"bbTop":62,"bbBot":82,"bbLeft":591,"bbRight":730},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":58,"end":64},"doc_offset":{"start":821,"end":827},"block_offset":{"start":58,"end":64},"page_num":1,"text":"Phone:","position":{"top":97,"bottom":117,"left":438,"right":525,"bbTop":97,"bbBot":117,"bbLeft":438,"bbRight":525},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":65,"end":79},"doc_offset":{"start":828,"end":842},"block_offset":{"start":65,"end":79},"page_num":1,"text":"1-800-GO-BENCO","position":{"top":97,"bottom":117,"left":534,"right":764,"bbTop":97,"bbBot":117,"bbLeft":534,"bbRight":764},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":80,"end":96},"doc_offset":{"start":843,"end":859},"block_offset":{"start":80,"end":96},"page_num":1,"text":"(1-800-462-3626)","position":{"top":97,"bottom":122,"left":773,"right":978,"bbTop":97,"bbBot":122,"bbLeft":773,"bbRight":978},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":97,"end":101},"doc_offset":{"start":860,"end":864},"block_offset":{"start":97,"end":101},"page_num":1,"text":"Fax:","position":{"top":132,"bottom":152,"left":439,"right":496,"bbTop":132,"bbBot":152,"bbLeft":439,"bbRight":496},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":102,"end":114},"doc_offset":{"start":865,"end":877},"block_offset":{"start":102,"end":114},"page_num":1,"text":"570-602-4919","position":{"top":132,"bottom":152,"left":506,"right":670,"bbTop":132,"bbBot":152,"bbLeft":506,"bbRight":670},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":115,"end":128},"doc_offset":{"start":878,"end":891},"block_offset":{"start":115,"end":128},"page_num":1,"text":"www.benco.com","position":{"top":167,"bottom":187,"left":440,"right":632,"bbTop":167,"bbBot":187,"bbLeft":440,"bbRight":632},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":129,"end":137},"doc_offset":{"start":892,"end":900},"block_offset":{"start":0,"end":8},"page_num":1,"text":"Purchase","position":{"top":247,"bottom":295,"left":890,"right":1183,"bbTop":247,"bbBot":295,"bbLeft":890,"bbRight":1183},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":138,"end":143},"doc_offset":{"start":901,"end":906},"block_offset":{"start":9,"end":14},"page_num":1,"text":"Order","position":{"top":246,"bottom":295,"left":1207,"right":1386,"bbTop":246,"bbBot":295,"bbLeft":1207,"bbRight":1386},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":144,"end":147},"doc_offset":{"start":907,"end":910},"block_offset":{"start":0,"end":3},"page_num":1,"text":"P/O","position":{"top":25,"bottom":59,"left":1621,"right":1695,"bbTop":25,"bbBot":59,"bbLeft":1621,"bbRight":1695},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":148,"end":149},"doc_offset":{"start":911,"end":912},"block_offset":{"start":4,"end":5},"page_num":1,"text":"#","position":{"top":25,"bottom":59,"left":1710,"right":1734,"bbTop":25,"bbBot":59,"bbLeft":1710,"bbRight":1734},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":150,"end":158},"doc_offset":{"start":913,"end":921},"block_offset":{"start":0,"end":8},"page_num":1,"text":"29111525","position":{"top":26,"bottom":56,"left":1854,"right":2037,"bbTop":26,"bbBot":56,"bbLeft":1854,"bbRight":2037},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":159,"end":167},"doc_offset":{"start":922,"end":930},"block_offset":{"start":0,"end":8},"page_num":1,"text":"LOCATION","position":{"top":87,"bottom":118,"left":1621,"right":1832,"bbTop":87,"bbBot":118,"bbLeft":1621,"bbRight":1832},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":168,"end":171},"doc_offset":{"start":931,"end":934},"block_offset":{"start":0,"end":3},"page_num":1,"text":"010","position":{"top":88,"bottom":118,"left":1863,"right":1929,"bbTop":88,"bbBot":118,"bbLeft":1863,"bbRight":1929},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":172,"end":176},"doc_offset":{"start":935,"end":939},"block_offset":{"start":0,"end":4},"page_num":1,"text":"DATE","position":{"top":147,"bottom":177,"left":1621,"right":1729,"bbTop":147,"bbBot":177,"bbLeft":1621,"bbRight":1729},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":177,"end":185},"doc_offset":{"start":940,"end":948},"block_offset":{"start":0,"end":8},"page_num":1,"text":"06/16/21","position":{"top":147,"bottom":177,"left":1863,"right":2016,"bbTop":147,"bbBot":177,"bbLeft":1863,"bbRight":2016},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":186,"end":190},"doc_offset":{"start":949,"end":953},"block_offset":{"start":0,"end":4},"page_num":1,"text":"PAGE","position":{"top":205,"bottom":236,"left":1621,"right":1734,"bbTop":205,"bbBot":236,"bbLeft":1621,"bbRight":1734},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":191,"end":192},"doc_offset":{"start":954,"end":955},"block_offset":{"start":0,"end":1},"page_num":1,"text":"1","position":{"top":206,"bottom":236,"left":1863,"right":1874,"bbTop":206,"bbBot":236,"bbLeft":1863,"bbRight":1874},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":193,"end":195},"doc_offset":{"start":956,"end":958},"block_offset":{"start":2,"end":4},"page_num":1,"text":"OF","position":{"top":206,"bottom":237,"left":1895,"right":1949,"bbTop":206,"bbBot":237,"bbLeft":1895,"bbRight":1949},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":196,"end":197},"doc_offset":{"start":959,"end":960},"block_offset":{"start":5,"end":6},"page_num":1,"text":"1","position":{"top":206,"bottom":236,"left":1967,"right":1978,"bbTop":206,"bbBot":236,"bbLeft":1967,"bbRight":1978},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":198,"end":204},"doc_offset":{"start":961,"end":967},"block_offset":{"start":0,"end":6},"page_num":1,"text":"000046","position":{"top":397,"bottom":427,"left":363,"right":498,"bbTop":397,"bbBot":427,"bbLeft":363,"bbRight":498},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":205,"end":210},"doc_offset":{"start":968,"end":973},"block_offset":{"start":7,"end":12},"page_num":1,"text":"CAULK","position":{"top":447,"bottom":477,"left":363,"right":500,"bbTop":447,"bbBot":477,"bbLeft":363,"bbRight":500},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":211,"end":213},"doc_offset":{"start":974,"end":976},"block_offset":{"start":13,"end":15},"page_num":1,"text":"38","position":{"top":497,"bottom":527,"left":363,"right":406,"bbTop":497,"bbBot":527,"bbLeft":363,"bbRight":406},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":214,"end":215},"doc_offset":{"start":977,"end":978},"block_offset":{"start":16,"end":17},"page_num":1,"text":"W","position":{"top":497,"bottom":527,"left":420,"right":458,"bbTop":497,"bbBot":527,"bbLeft":420,"bbRight":458},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":216,"end":221},"doc_offset":{"start":979,"end":984},"block_offset":{"start":18,"end":23},"page_num":1,"text":"CLARK","position":{"top":497,"bottom":527,"left":472,"right":609,"bbTop":497,"bbBot":527,"bbLeft":472,"bbRight":609},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":222,"end":225},"doc_offset":{"start":985,"end":988},"block_offset":{"start":24,"end":27},"page_num":1,"text":"AVE","position":{"top":497,"bottom":527,"left":621,"right":702,"bbTop":497,"bbBot":527,"bbLeft":621,"bbRight":702},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":226,"end":234},"doc_offset":{"start":989,"end":997},"block_offset":{"start":28,"end":36},"page_num":1,"text":"MILFORD,","position":{"top":547,"bottom":583,"left":364,"right":557,"bbTop":547,"bbBot":583,"bbLeft":364,"bbRight":557},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":235,"end":237},"doc_offset":{"start":998,"end":1000},"block_offset":{"start":37,"end":39},"page_num":1,"text":"DE","position":{"top":547,"bottom":577,"left":575,"right":628,"bbTop":547,"bbBot":577,"bbLeft":575,"bbRight":628},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":238,"end":243},"doc_offset":{"start":1001,"end":1006},"block_offset":{"start":40,"end":45},"page_num":1,"text":"19963","position":{"top":547,"bottom":577,"left":658,"right":767,"bbTop":547,"bbBot":577,"bbLeft":658,"bbRight":767},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":244,"end":256},"doc_offset":{"start":1007,"end":1019},"block_offset":{"start":46,"end":58},"page_num":1,"text":"800-532-2855","position":{"top":597,"bottom":627,"left":363,"right":619,"bbTop":597,"bbBot":627,"bbLeft":363,"bbRight":619},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":257,"end":261},"doc_offset":{"start":1020,"end":1024},"block_offset":{"start":0,"end":4},"page_num":1,"text":"SHIP","position":{"top":341,"bottom":366,"left":1560,"right":1635,"bbTop":341,"bbBot":366,"bbLeft":1560,"bbRight":1635},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":262,"end":264},"doc_offset":{"start":1025,"end":1027},"block_offset":{"start":5,"end":7},"page_num":1,"text":"TO","position":{"top":341,"bottom":366,"left":1646,"right":1691,"bbTop":341,"bbBot":366,"bbLeft":1646,"bbRight":1691},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":265,"end":270},"doc_offset":{"start":1028,"end":1033},"block_offset":{"start":0,"end":5},"page_num":1,"text":"BENCO","position":{"top":397,"bottom":428,"left":1569,"right":1714,"bbTop":397,"bbBot":428,"bbLeft":1569,"bbRight":1714},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":271,"end":277},"doc_offset":{"start":1034,"end":1040},"block_offset":{"start":6,"end":12},"page_num":1,"text":"SCHOOL","position":{"top":397,"bottom":428,"left":1729,"right":1905,"bbTop":397,"bbBot":428,"bbLeft":1729,"bbRight":1905},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":278,"end":282},"doc_offset":{"start":1041,"end":1045},"block_offset":{"start":13,"end":17},"page_num":1,"text":"KITS","position":{"top":397,"bottom":428,"left":1921,"right":2010,"bbTop":397,"bbBot":428,"bbLeft":1921,"bbRight":2010},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":283,"end":286},"doc_offset":{"start":1046,"end":1049},"block_offset":{"start":18,"end":21},"page_num":1,"text":"295","position":{"top":447,"bottom":478,"left":1567,"right":1634,"bbTop":447,"bbBot":478,"bbLeft":1567,"bbRight":1634},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":287,"end":298},"doc_offset":{"start":1050,"end":1061},"block_offset":{"start":22,"end":33},"page_num":1,"text":"CENTERPOINT","position":{"top":447,"bottom":478,"left":1649,"right":1944,"bbTop":447,"bbBot":478,"bbLeft":1649,"bbRight":1944},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":299,"end":303},"doc_offset":{"start":1062,"end":1066},"block_offset":{"start":34,"end":38},"page_num":1,"text":"BLVD","position":{"top":447,"bottom":477,"left":1960,"right":2068,"bbTop":447,"bbBot":477,"bbLeft":1960,"bbRight":2068},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":304,"end":313},"doc_offset":{"start":1067,"end":1076},"block_offset":{"start":39,"end":48},"page_num":1,"text":"PITTSTON,","position":{"top":497,"bottom":534,"left":1569,"right":1780,"bbTop":497,"bbBot":534,"bbLeft":1569,"bbRight":1780},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":314,"end":316},"doc_offset":{"start":1077,"end":1079},"block_offset":{"start":49,"end":51},"page_num":1,"text":"PA","position":{"top":497,"bottom":527,"left":1798,"right":1852,"bbTop":497,"bbBot":527,"bbLeft":1798,"bbRight":1852},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":317,"end":322},"doc_offset":{"start":1080,"end":1085},"block_offset":{"start":52,"end":57},"page_num":1,"text":"18640","position":{"top":497,"bottom":528,"left":1879,"right":1990,"bbTop":497,"bbBot":528,"bbLeft":1879,"bbRight":1990},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":323,"end":324},"doc_offset":{"start":1086,"end":1087},"block_offset":{"start":0,"end":1},"page_num":1,"text":"7","position":{"top":378,"bottom":445,"left":1114,"right":1166,"bbTop":378,"bbBot":445,"bbLeft":1114,"bbRight":1166},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":325,"end":326},"doc_offset":{"start":1088,"end":1089},"block_offset":{"start":0,"end":1},"page_num":1,"text":"L","position":{"top":383,"bottom":446,"left":2333,"right":2376,"bbTop":383,"bbBot":446,"bbLeft":2333,"bbRight":2376},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":true,"font_size":null,"text_color":null}},{"page_offset":{"start":327,"end":330},"doc_offset":{"start":1090,"end":1093},"block_offset":{"start":0,"end":3},"page_num":1,"text":"P/O","position":{"top":743,"bottom":768,"left":132,"right":186,"bbTop":743,"bbBot":768,"bbLeft":132,"bbRight":186},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":331,"end":335},"doc_offset":{"start":1094,"end":1098},"block_offset":{"start":4,"end":8},"page_num":1,"text":"DATE","position":{"top":743,"bottom":767,"left":199,"right":285,"bbTop":743,"bbBot":767,"bbLeft":199,"bbRight":285},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":336,"end":341},"doc_offset":{"start":1099,"end":1104},"block_offset":{"start":0,"end":5},"page_num":1,"text":"BUYER","position":{"top":743,"bottom":768,"left":368,"right":482,"bbTop":743,"bbBot":768,"bbLeft":368,"bbRight":482},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":342,"end":350},"doc_offset":{"start":1105,"end":1113},"block_offset":{"start":0,"end":8},"page_num":1,"text":"06/16/21","position":{"top":784,"bottom":815,"left":132,"right":285,"bbTop":784,"bbBot":815,"bbLeft":132,"bbRight":285},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":351,"end":355},"doc_offset":{"start":1114,"end":1118},"block_offset":{"start":0,"end":4},"page_num":1,"text":"SHIP","position":{"top":837,"bottom":862,"left":131,"right":206,"bbTop":837,"bbBot":862,"bbLeft":131,"bbRight":206},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":356,"end":359},"doc_offset":{"start":1119,"end":1122},"block_offset":{"start":5,"end":8},"page_num":1,"text":"VIA","position":{"top":838,"bottom":862,"left":216,"right":272,"bbTop":838,"bbBot":862,"bbLeft":216,"bbRight":272},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":360,"end":365},"doc_offset":{"start":1123,"end":1128},"block_offset":{"start":0,"end":5},"page_num":1,"text":"TRUCK","position":{"top":884,"bottom":915,"left":131,"right":273,"bbTop":884,"bbBot":915,"bbLeft":131,"bbRight":273},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":366,"end":374},"doc_offset":{"start":1129,"end":1137},"block_offset":{"start":0,"end":8},"page_num":1,"text":"Michelle","position":{"top":785,"bottom":812,"left":374,"right":507,"bbTop":785,"bbBot":812,"bbLeft":374,"bbRight":507},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":375,"end":379},"doc_offset":{"start":1138,"end":1142},"block_offset":{"start":9,"end":13},"page_num":1,"text":"Amos","position":{"top":785,"bottom":812,"left":519,"right":614,"bbTop":785,"bbBot":812,"bbLeft":519,"bbRight":614},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":380,"end":385},"doc_offset":{"start":1143,"end":1148},"block_offset":{"start":0,"end":5},"page_num":1,"text":"86847","position":{"top":745,"bottom":773,"left":753,"right":854,"bbTop":745,"bbBot":773,"bbLeft":753,"bbRight":854},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":386,"end":393},"doc_offset":{"start":1149,"end":1156},"block_offset":{"start":0,"end":7},"page_num":1,"text":"CONTACT","position":{"top":743,"bottom":768,"left":887,"right":1048,"bbTop":743,"bbBot":768,"bbLeft":887,"bbRight":1048},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":394,"end":402},"doc_offset":{"start":1157,"end":1165},"block_offset":{"start":0,"end":8},"page_num":1,"text":"DENTSPLY","position":{"top":781,"bottom":812,"left":889,"right":1106,"bbTop":781,"bbBot":812,"bbLeft":889,"bbRight":1106},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":403,"end":416},"doc_offset":{"start":1166,"end":1179},"block_offset":{"start":9,"end":22},"page_num":1,"text":"CAULK(110900)","position":{"top":781,"bottom":820,"left":1120,"right":1422,"bbTop":781,"bbBot":820,"bbLeft":1120,"bbRight":1422},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":417,"end":423},"doc_offset":{"start":1180,"end":1186},"block_offset":{"start":0,"end":6},"page_num":1,"text":"VENDOR","position":{"top":837,"bottom":862,"left":885,"right":1028,"bbTop":837,"bbBot":862,"bbLeft":885,"bbRight":1028},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":424,"end":427},"doc_offset":{"start":1187,"end":1190},"block_offset":{"start":7,"end":10},"page_num":1,"text":"FAX","position":{"top":838,"bottom":862,"left":1040,"right":1104,"bbTop":838,"bbBot":862,"bbLeft":1040,"bbRight":1104},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":428,"end":434},"doc_offset":{"start":1191,"end":1197},"block_offset":{"start":11,"end":17},"page_num":1,"text":"NUMBER","position":{"top":838,"bottom":862,"left":1116,"right":1259,"bbTop":838,"bbBot":862,"bbLeft":1116,"bbRight":1259},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":435,"end":448},"doc_offset":{"start":1198,"end":1211},"block_offset":{"start":0,"end":13},"page_num":1,"text":"1800-788-4110","position":{"top":894,"bottom":924,"left":888,"right":1164,"bbTop":894,"bbBot":924,"bbLeft":888,"bbRight":1164},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":449,"end":455},"doc_offset":{"start":1212,"end":1218},"block_offset":{"start":0,"end":6},"page_num":1,"text":"F.O.B.","position":{"top":743,"bottom":768,"left":1632,"right":1725,"bbTop":743,"bbBot":768,"bbLeft":1632,"bbRight":1725},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":456,"end":463},"doc_offset":{"start":1219,"end":1226},"block_offset":{"start":0,"end":7},"page_num":1,"text":"PAYMENT","position":{"top":838,"bottom":862,"left":1632,"right":1792,"bbTop":838,"bbBot":862,"bbLeft":1632,"bbRight":1792},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":464,"end":469},"doc_offset":{"start":1227,"end":1232},"block_offset":{"start":8,"end":13},"page_num":1,"text":"TERMS","position":{"top":837,"bottom":862,"left":1802,"right":1917,"bbTop":837,"bbBot":862,"bbLeft":1802,"bbRight":1917},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":470,"end":473},"doc_offset":{"start":1233,"end":1236},"block_offset":{"start":0,"end":3},"page_num":1,"text":"NET","position":{"top":894,"bottom":924,"left":1630,"right":1709,"bbTop":894,"bbBot":924,"bbLeft":1630,"bbRight":1709},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":474,"end":476},"doc_offset":{"start":1237,"end":1239},"block_offset":{"start":4,"end":6},"page_num":1,"text":"30","position":{"top":894,"bottom":924,"left":1724,"right":1766,"bbTop":894,"bbBot":924,"bbLeft":1724,"bbRight":1766},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":477,"end":481},"doc_offset":{"start":1240,"end":1244},"block_offset":{"start":7,"end":11},"page_num":1,"text":"DAYS","position":{"top":894,"bottom":924,"left":1783,"right":1891,"bbTop":894,"bbBot":924,"bbLeft":1783,"bbRight":1891},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":482,"end":490},"doc_offset":{"start":1245,"end":1253},"block_offset":{"start":0,"end":8},"page_num":1,"text":"QUANTITY","position":{"top":967,"bottom":994,"left":143,"right":312,"bbTop":967,"bbBot":994,"bbLeft":143,"bbRight":312},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":491,"end":498},"doc_offset":{"start":1254,"end":1261},"block_offset":{"start":0,"end":7},"page_num":1,"text":"PRODUCT","position":{"top":967,"bottom":992,"left":368,"right":530,"bbTop":967,"bbBot":992,"bbLeft":368,"bbRight":530},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":499,"end":500},"doc_offset":{"start":1262,"end":1263},"block_offset":{"start":8,"end":9},"page_num":1,"text":"/","position":{"top":967,"bottom":992,"left":540,"right":549,"bbTop":967,"bbBot":992,"bbLeft":540,"bbRight":549},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":501,"end":512},"doc_offset":{"start":1264,"end":1275},"block_offset":{"start":10,"end":21},"page_num":1,"text":"DESCRIPTION","position":{"top":967,"bottom":992,"left":561,"right":783,"bbTop":967,"bbBot":992,"bbLeft":561,"bbRight":783},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":513,"end":517},"doc_offset":{"start":1276,"end":1280},"block_offset":{"start":0,"end":4},"page_num":1,"text":"COST","position":{"top":967,"bottom":992,"left":1632,"right":1722,"bbTop":967,"bbBot":992,"bbLeft":1632,"bbRight":1722},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":518,"end":521},"doc_offset":{"start":1281,"end":1284},"block_offset":{"start":0,"end":3},"page_num":1,"text":"U/M","position":{"top":967,"bottom":992,"left":1885,"right":1941,"bbTop":967,"bbBot":992,"bbLeft":1885,"bbRight":1941},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":522,"end":531},"doc_offset":{"start":1285,"end":1294},"block_offset":{"start":0,"end":9},"page_num":1,"text":"EXTENSION","position":{"top":967,"bottom":992,"left":2136,"right":2324,"bbTop":967,"bbBot":992,"bbLeft":2136,"bbRight":2324},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":532,"end":534},"doc_offset":{"start":1295,"end":1297},"block_offset":{"start":0,"end":2},"page_num":1,"text":"60","position":{"top":1053,"bottom":1084,"left":289,"right":331,"bbTop":1053,"bbBot":1084,"bbLeft":289,"bbRight":331},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":535,"end":541},"doc_offset":{"start":1298,"end":1304},"block_offset":{"start":3,"end":9},"page_num":1,"text":"605220","position":{"top":1054,"bottom":1084,"left":364,"right":499,"bbTop":1054,"bbBot":1084,"bbLeft":364,"bbRight":499},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":542,"end":550},"doc_offset":{"start":1305,"end":1313},"block_offset":{"start":0,"end":8},"page_num":1,"text":"JELTRATE","position":{"top":1104,"bottom":1134,"left":401,"right":606,"bbTop":1104,"bbBot":1134,"bbLeft":401,"bbRight":606},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":551,"end":559},"doc_offset":{"start":1314,"end":1322},"block_offset":{"start":9,"end":17},"page_num":1,"text":"DUSTLESS","position":{"top":1103,"bottom":1134,"left":623,"right":838,"bbTop":1103,"bbBot":1134,"bbLeft":623,"bbRight":838},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":560,"end":564},"doc_offset":{"start":1323,"end":1327},"block_offset":{"start":18,"end":22},"page_num":1,"text":"FAST","position":{"top":1103,"bottom":1134,"left":855,"right":957,"bbTop":1103,"bbBot":1134,"bbLeft":855,"bbRight":957},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":565,"end":570},"doc_offset":{"start":1328,"end":1333},"block_offset":{"start":0,"end":5},"page_num":1,"text":"12.00","position":{"top":1055,"bottom":1085,"left":1702,"right":1800,"bbTop":1055,"bbBot":1085,"bbLeft":1702,"bbRight":1800},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":571,"end":573},"doc_offset":{"start":1334,"end":1336},"block_offset":{"start":0,"end":2},"page_num":1,"text":"EA","position":{"top":1054,"bottom":1084,"left":1895,"right":1947,"bbTop":1054,"bbBot":1084,"bbLeft":1895,"bbRight":1947},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":574,"end":580},"doc_offset":{"start":1337,"end":1343},"block_offset":{"start":0,"end":6},"page_num":1,"text":"720.00","position":{"top":1053,"bottom":1084,"left":2285,"right":2409,"bbTop":1053,"bbBot":1084,"bbLeft":2285,"bbRight":2409},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":581,"end":583},"doc_offset":{"start":1344,"end":1346},"block_offset":{"start":0,"end":2},"page_num":1,"text":"60","position":{"top":1201,"bottom":1231,"left":289,"right":331,"bbTop":1201,"bbBot":1231,"bbLeft":289,"bbRight":331},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":584,"end":590},"doc_offset":{"start":1347,"end":1353},"block_offset":{"start":3,"end":9},"page_num":1,"text":"608015","position":{"top":1201,"bottom":1232,"left":364,"right":500,"bbTop":1201,"bbBot":1232,"bbLeft":364,"bbRight":500},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":591,"end":599},"doc_offset":{"start":1354,"end":1362},"block_offset":{"start":0,"end":8},"page_num":1,"text":"JELTRATE","position":{"top":1251,"bottom":1282,"left":401,"right":606,"bbTop":1251,"bbBot":1282,"bbLeft":401,"bbRight":606},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":600,"end":605},"doc_offset":{"start":1363,"end":1368},"block_offset":{"start":9,"end":14},"page_num":1,"text":"SCOOP","position":{"top":1251,"bottom":1282,"left":622,"right":769,"bbTop":1251,"bbBot":1282,"bbLeft":622,"bbRight":769},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":606,"end":607},"doc_offset":{"start":1369,"end":1370},"block_offset":{"start":15,"end":16},"page_num":1,"text":"/","position":{"top":1251,"bottom":1282,"left":782,"right":794,"bbTop":1251,"bbBot":1282,"bbLeft":782,"bbRight":794},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":608,"end":615},"doc_offset":{"start":1371,"end":1378},"block_offset":{"start":17,"end":24},"page_num":1,"text":"MEASURE","position":{"top":1251,"bottom":1282,"left":808,"right":1009,"bbTop":1251,"bbBot":1282,"bbLeft":808,"bbRight":1009},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":616,"end":619},"doc_offset":{"start":1379,"end":1382},"block_offset":{"start":25,"end":28},"page_num":1,"text":"SET","position":{"top":1251,"bottom":1282,"left":1025,"right":1103,"bbTop":1251,"bbBot":1282,"bbLeft":1025,"bbRight":1103},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":620,"end":624},"doc_offset":{"start":1383,"end":1387},"block_offset":{"start":0,"end":4},"page_num":1,"text":"3.05","position":{"top":1202,"bottom":1233,"left":1723,"right":1801,"bbTop":1202,"bbBot":1233,"bbLeft":1723,"bbRight":1801},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":625,"end":627},"doc_offset":{"start":1388,"end":1390},"block_offset":{"start":0,"end":2},"page_num":1,"text":"ST","position":{"top":1201,"bottom":1231,"left":1893,"right":1944,"bbTop":1201,"bbBot":1231,"bbLeft":1893,"bbRight":1944},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":628,"end":634},"doc_offset":{"start":1391,"end":1397},"block_offset":{"start":0,"end":6},"page_num":1,"text":"183.00","position":{"top":1201,"bottom":1231,"left":2288,"right":2409,"bbTop":1201,"bbBot":1231,"bbLeft":2288,"bbRight":2409},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":635,"end":640},"doc_offset":{"start":1398,"end":1403},"block_offset":{"start":0,"end":5},"page_num":1,"text":"TOTAL","position":{"top":2780,"bottom":2811,"left":1689,"right":1826,"bbTop":2780,"bbBot":2811,"bbLeft":1689,"bbRight":1826},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":641,"end":647},"doc_offset":{"start":1404,"end":1410},"block_offset":{"start":0,"end":6},"page_num":1,"text":"903.00","position":{"top":2783,"bottom":2813,"left":2154,"right":2278,"bbTop":2783,"bbBot":2813,"bbLeft":2154,"bbRight":2278},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":648,"end":651},"doc_offset":{"start":1411,"end":1414},"block_offset":{"start":0,"end":3},"page_num":1,"text":"The","position":{"top":2858,"bottom":2882,"left":118,"right":174,"bbTop":2858,"bbBot":2882,"bbLeft":118,"bbRight":174},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":652,"end":658},"doc_offset":{"start":1415,"end":1421},"block_offset":{"start":4,"end":10},"page_num":1,"text":"seller","position":{"top":2858,"bottom":2882,"left":185,"right":264,"bbTop":2858,"bbBot":2882,"bbLeft":185,"bbRight":264},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":659,"end":666},"doc_offset":{"start":1422,"end":1429},"block_offset":{"start":11,"end":18},"page_num":1,"text":"agrees,","position":{"top":2864,"bottom":2888,"left":274,"right":381,"bbTop":2864,"bbBot":2888,"bbLeft":274,"bbRight":381},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":667,"end":669},"doc_offset":{"start":1430,"end":1432},"block_offset":{"start":19,"end":21},"page_num":1,"text":"in","position":{"top":2858,"bottom":2881,"left":396,"right":417,"bbTop":2858,"bbBot":2881,"bbLeft":396,"bbRight":417},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":670,"end":680},"doc_offset":{"start":1433,"end":1443},"block_offset":{"start":22,"end":32},"page_num":1,"text":"connection","position":{"top":2858,"bottom":2882,"left":430,"right":588,"bbTop":2858,"bbBot":2882,"bbLeft":430,"bbRight":588},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":681,"end":685},"doc_offset":{"start":1444,"end":1448},"block_offset":{"start":33,"end":37},"page_num":1,"text":"with","position":{"top":2858,"bottom":2882,"left":599,"right":656,"bbTop":2858,"bbBot":2882,"bbLeft":599,"bbRight":656},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":686,"end":689},"doc_offset":{"start":1449,"end":1452},"block_offset":{"start":38,"end":41},"page_num":1,"text":"the","position":{"top":2858,"bottom":2882,"left":668,"right":713,"bbTop":2858,"bbBot":2882,"bbLeft":668,"bbRight":713},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":690,"end":701},"doc_offset":{"start":1453,"end":1464},"block_offset":{"start":42,"end":53},"page_num":1,"text":"performance","position":{"top":2857,"bottom":2888,"left":726,"right":909,"bbTop":2857,"bbBot":2888,"bbLeft":726,"bbRight":909},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":702,"end":704},"doc_offset":{"start":1465,"end":1467},"block_offset":{"start":54,"end":56},"page_num":1,"text":"of","position":{"top":2857,"bottom":2882,"left":921,"right":949,"bbTop":2857,"bbBot":2882,"bbLeft":921,"bbRight":949},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":705,"end":709},"doc_offset":{"start":1468,"end":1472},"block_offset":{"start":57,"end":61},"page_num":1,"text":"work","position":{"top":2858,"bottom":2882,"left":957,"right":1027,"bbTop":2858,"bbBot":2882,"bbLeft":957,"bbRight":1027},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":710,"end":715},"doc_offset":{"start":1473,"end":1478},"block_offset":{"start":62,"end":67},"page_num":1,"text":"under","position":{"top":2858,"bottom":2882,"left":1039,"right":1122,"bbTop":2858,"bbBot":2882,"bbLeft":1039,"bbRight":1122},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":716,"end":720},"doc_offset":{"start":1479,"end":1483},"block_offset":{"start":68,"end":72},"page_num":1,"text":"this","position":{"top":2858,"bottom":2882,"left":1132,"right":1182,"bbTop":2858,"bbBot":2882,"bbLeft":1132,"bbRight":1182},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":721,"end":727},"doc_offset":{"start":1484,"end":1490},"block_offset":{"start":73,"end":79},"page_num":1,"text":"order,","position":{"top":2858,"bottom":2886,"left":1193,"right":1276,"bbTop":2858,"bbBot":2886,"bbLeft":1193,"bbRight":1276},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":728,"end":731},"doc_offset":{"start":1491,"end":1494},"block_offset":{"start":80,"end":83},"page_num":1,"text":"not","position":{"top":2858,"bottom":2882,"left":1291,"right":1335,"bbTop":2858,"bbBot":2882,"bbLeft":1291,"bbRight":1335},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":732,"end":734},"doc_offset":{"start":1495,"end":1497},"block_offset":{"start":84,"end":86},"page_num":1,"text":"to","position":{"top":2858,"bottom":2882,"left":1345,"right":1371,"bbTop":2858,"bbBot":2882,"bbLeft":1345,"bbRight":1371},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":735,"end":747},"doc_offset":{"start":1498,"end":1510},"block_offset":{"start":87,"end":99},"page_num":1,"text":"discriminate","position":{"top":2858,"bottom":2882,"left":1382,"right":1558,"bbTop":2858,"bbBot":2882,"bbLeft":1382,"bbRight":1558},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":748,"end":755},"doc_offset":{"start":1511,"end":1518},"block_offset":{"start":100,"end":107},"page_num":1,"text":"against","position":{"top":2858,"bottom":2888,"left":1569,"right":1675,"bbTop":2858,"bbBot":2888,"bbLeft":1569,"bbRight":1675},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":756,"end":759},"doc_offset":{"start":1519,"end":1522},"block_offset":{"start":108,"end":111},"page_num":1,"text":"any","position":{"top":2864,"bottom":2888,"left":1686,"right":1738,"bbTop":2864,"bbBot":2888,"bbLeft":1686,"bbRight":1738},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":760,"end":768},"doc_offset":{"start":1523,"end":1531},"block_offset":{"start":112,"end":120},"page_num":1,"text":"employee","position":{"top":2858,"bottom":2888,"left":1749,"right":1891,"bbTop":2858,"bbBot":2888,"bbLeft":1749,"bbRight":1891},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":769,"end":771},"doc_offset":{"start":1532,"end":1534},"block_offset":{"start":121,"end":123},"page_num":1,"text":"or","position":{"top":2864,"bottom":2882,"left":1903,"right":1932,"bbTop":2864,"bbBot":2882,"bbLeft":1903,"bbRight":1932},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":772,"end":781},"doc_offset":{"start":1535,"end":1544},"block_offset":{"start":124,"end":133},"page_num":1,"text":"applicant","position":{"top":2858,"bottom":2888,"left":1942,"right":2074,"bbTop":2858,"bbBot":2888,"bbLeft":1942,"bbRight":2074},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":782,"end":785},"doc_offset":{"start":1545,"end":1548},"block_offset":{"start":134,"end":137},"page_num":1,"text":"for","position":{"top":2857,"bottom":2882,"left":2084,"right":2123,"bbTop":2857,"bbBot":2882,"bbLeft":2084,"bbRight":2123},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":786,"end":796},"doc_offset":{"start":1549,"end":1559},"block_offset":{"start":138,"end":148},"page_num":1,"text":"employment","position":{"top":2858,"bottom":2888,"left":2133,"right":2313,"bbTop":2858,"bbBot":2888,"bbLeft":2133,"bbRight":2313},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":797,"end":804},"doc_offset":{"start":1560,"end":1567},"block_offset":{"start":149,"end":156},"page_num":1,"text":"because","position":{"top":2902,"bottom":2926,"left":120,"right":242,"bbTop":2902,"bbBot":2926,"bbLeft":120,"bbRight":242},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":805,"end":807},"doc_offset":{"start":1568,"end":1570},"block_offset":{"start":157,"end":159},"page_num":1,"text":"of","position":{"top":2902,"bottom":2926,"left":254,"right":282,"bbTop":2902,"bbBot":2926,"bbLeft":254,"bbRight":282},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":808,"end":811},"doc_offset":{"start":1571,"end":1574},"block_offset":{"start":160,"end":163},"page_num":1,"text":"any","position":{"top":2908,"bottom":2933,"left":291,"right":343,"bbTop":2908,"bbBot":2933,"bbLeft":291,"bbRight":343},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":812,"end":817},"doc_offset":{"start":1575,"end":1580},"block_offset":{"start":164,"end":169},"page_num":1,"text":"race,","position":{"top":2908,"bottom":2931,"left":355,"right":424,"bbTop":2908,"bbBot":2931,"bbLeft":355,"bbRight":424},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":818,"end":822},"doc_offset":{"start":1581,"end":1585},"block_offset":{"start":170,"end":174},"page_num":1,"text":"sex,","position":{"top":2908,"bottom":2931,"left":437,"right":494,"bbTop":2908,"bbBot":2931,"bbLeft":437,"bbRight":494},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":823,"end":832},"doc_offset":{"start":1586,"end":1595},"block_offset":{"start":175,"end":184},"page_num":1,"text":"religion,","position":{"top":2902,"bottom":2933,"left":509,"right":620,"bbTop":2902,"bbBot":2933,"bbLeft":509,"bbRight":620},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":833,"end":839},"doc_offset":{"start":1596,"end":1602},"block_offset":{"start":185,"end":191},"page_num":1,"text":"color,","position":{"top":2902,"bottom":2931,"left":634,"right":711,"bbTop":2902,"bbBot":2931,"bbLeft":634,"bbRight":711},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":840,"end":848},"doc_offset":{"start":1603,"end":1611},"block_offset":{"start":192,"end":200},"page_num":1,"text":"national","position":{"top":2902,"bottom":2926,"left":726,"right":838,"bbTop":2902,"bbBot":2926,"bbLeft":726,"bbRight":838},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":849,"end":856},"doc_offset":{"start":1612,"end":1619},"block_offset":{"start":201,"end":208},"page_num":1,"text":"origin,","position":{"top":2902,"bottom":2933,"left":851,"right":937,"bbTop":2902,"bbBot":2933,"bbLeft":851,"bbRight":937},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":857,"end":867},"doc_offset":{"start":1620,"end":1630},"block_offset":{"start":209,"end":219},"page_num":1,"text":"disability","position":{"top":2902,"bottom":2933,"left":951,"right":1077,"bbTop":2902,"bbBot":2933,"bbLeft":951,"bbRight":1077},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":868,"end":870},"doc_offset":{"start":1631,"end":1633},"block_offset":{"start":220,"end":222},"page_num":1,"text":"or","position":{"top":2908,"bottom":2926,"left":1088,"right":1117,"bbTop":2908,"bbBot":2926,"bbLeft":1088,"bbRight":1117},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":871,"end":877},"doc_offset":{"start":1634,"end":1640},"block_offset":{"start":223,"end":229},"page_num":1,"text":"status","position":{"top":2903,"bottom":2926,"left":1126,"right":1213,"bbTop":2903,"bbBot":2926,"bbLeft":1126,"bbRight":1213},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":878,"end":880},"doc_offset":{"start":1641,"end":1643},"block_offset":{"start":230,"end":232},"page_num":1,"text":"as","position":{"top":2908,"bottom":2926,"left":1225,"right":1258,"bbTop":2908,"bbBot":2926,"bbLeft":1225,"bbRight":1258},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":881,"end":882},"doc_offset":{"start":1644,"end":1645},"block_offset":{"start":233,"end":234},"page_num":1,"text":"a","position":{"top":2908,"bottom":2926,"left":1269,"right":1285,"bbTop":2908,"bbBot":2926,"bbLeft":1269,"bbRight":1285},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":883,"end":891},"doc_offset":{"start":1646,"end":1654},"block_offset":{"start":235,"end":243},"page_num":1,"text":"disabled","position":{"top":2902,"bottom":2926,"left":1297,"right":1418,"bbTop":2902,"bbBot":2926,"bbLeft":1297,"bbRight":1418},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":892,"end":899},"doc_offset":{"start":1655,"end":1662},"block_offset":{"start":244,"end":251},"page_num":1,"text":"veteran","position":{"top":2903,"bottom":2926,"left":1430,"right":1538,"bbTop":2903,"bbBot":2926,"bbLeft":1430,"bbRight":1538},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":900,"end":902},"doc_offset":{"start":1663,"end":1665},"block_offset":{"start":252,"end":254},"page_num":1,"text":"or","position":{"top":2908,"bottom":2926,"left":1551,"right":1580,"bbTop":2908,"bbBot":2926,"bbLeft":1551,"bbRight":1580},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":903,"end":910},"doc_offset":{"start":1666,"end":1673},"block_offset":{"start":255,"end":262},"page_num":1,"text":"veteran","position":{"top":2903,"bottom":2926,"left":1589,"right":1698,"bbTop":2903,"bbBot":2926,"bbLeft":1589,"bbRight":1698},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":911,"end":913},"doc_offset":{"start":1674,"end":1676},"block_offset":{"start":263,"end":265},"page_num":1,"text":"of","position":{"top":2902,"bottom":2926,"left":1710,"right":1738,"bbTop":2902,"bbBot":2926,"bbLeft":1710,"bbRight":1738},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":914,"end":917},"doc_offset":{"start":1677,"end":1680},"block_offset":{"start":266,"end":269},"page_num":1,"text":"the","position":{"top":2902,"bottom":2926,"left":1747,"right":1791,"bbTop":2902,"bbBot":2926,"bbLeft":1747,"bbRight":1791},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":918,"end":925},"doc_offset":{"start":1681,"end":1688},"block_offset":{"start":270,"end":277},"page_num":1,"text":"Vietnam","position":{"top":2902,"bottom":2926,"left":1802,"right":1922,"bbTop":2902,"bbBot":2926,"bbLeft":1802,"bbRight":1922},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":926,"end":930},"doc_offset":{"start":1689,"end":1693},"block_offset":{"start":278,"end":282},"page_num":1,"text":"era.","position":{"top":2908,"bottom":2926,"left":1935,"right":1988,"bbTop":2908,"bbBot":2926,"bbLeft":1935,"bbRight":1988},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":931,"end":937},"doc_offset":{"start":1694,"end":1700},"block_offset":{"start":283,"end":289},"page_num":1,"text":"Unless","position":{"top":2902,"bottom":2926,"left":2003,"right":2101,"bbTop":2902,"bbBot":2926,"bbLeft":2003,"bbRight":2101},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":938,"end":947},"doc_offset":{"start":1701,"end":1710},"block_offset":{"start":290,"end":299},"page_num":1,"text":"exempted,","position":{"top":2902,"bottom":2933,"left":2112,"right":2264,"bbTop":2902,"bbBot":2933,"bbLeft":2112,"bbRight":2264},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":948,"end":955},"doc_offset":{"start":1711,"end":1718},"block_offset":{"start":300,"end":307},"page_num":1,"text":"Section","position":{"top":2946,"bottom":2971,"left":119,"right":226,"bbTop":2946,"bbBot":2971,"bbLeft":119,"bbRight":226},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":956,"end":960},"doc_offset":{"start":1719,"end":1723},"block_offset":{"start":308,"end":312},"page_num":1,"text":"202,","position":{"top":2947,"bottom":2975,"left":239,"right":300,"bbTop":2947,"bbBot":2975,"bbLeft":239,"bbRight":300},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":961,"end":971},"doc_offset":{"start":1724,"end":1734},"block_offset":{"start":313,"end":323},"page_num":1,"text":"paragraphs","position":{"top":2947,"bottom":2978,"left":314,"right":479,"bbTop":2947,"bbBot":2978,"bbLeft":314,"bbRight":479},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":972,"end":973},"doc_offset":{"start":1735,"end":1736},"block_offset":{"start":324,"end":325},"page_num":1,"text":"1","position":{"top":2947,"bottom":2971,"left":494,"right":502,"bbTop":2947,"bbBot":2971,"bbLeft":494,"bbRight":502},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":974,"end":981},"doc_offset":{"start":1737,"end":1744},"block_offset":{"start":326,"end":333},"page_num":1,"text":"through","position":{"top":2947,"bottom":2978,"left":518,"right":629,"bbTop":2947,"bbBot":2978,"bbLeft":518,"bbRight":629},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":982,"end":983},"doc_offset":{"start":1745,"end":1746},"block_offset":{"start":334,"end":335},"page_num":1,"text":"7","position":{"top":2947,"bottom":2971,"left":642,"right":657,"bbTop":2947,"bbBot":2971,"bbLeft":642,"bbRight":657},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":984,"end":986},"doc_offset":{"start":1747,"end":1749},"block_offset":{"start":336,"end":338},"page_num":1,"text":"of","position":{"top":2946,"bottom":2971,"left":669,"right":697,"bbTop":2946,"bbBot":2971,"bbLeft":669,"bbRight":697},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":987,"end":996},"doc_offset":{"start":1750,"end":1759},"block_offset":{"start":339,"end":348},"page_num":1,"text":"Executive","position":{"top":2947,"bottom":2971,"left":708,"right":848,"bbTop":2947,"bbBot":2971,"bbLeft":708,"bbRight":848},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":997,"end":1002},"doc_offset":{"start":1760,"end":1765},"block_offset":{"start":349,"end":354},"page_num":1,"text":"Order","position":{"top":2946,"bottom":2971,"left":860,"right":944,"bbTop":2946,"bbBot":2971,"bbLeft":860,"bbRight":944},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1003,"end":1009},"doc_offset":{"start":1766,"end":1772},"block_offset":{"start":355,"end":361},"page_num":1,"text":"11246,","position":{"top":2947,"bottom":2975,"left":957,"right":1052,"bbTop":2947,"bbBot":2975,"bbLeft":957,"bbRight":1052},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1010,"end":1012},"doc_offset":{"start":1773,"end":1775},"block_offset":{"start":362,"end":364},"page_num":1,"text":"as","position":{"top":2953,"bottom":2971,"left":1066,"right":1098,"bbTop":2953,"bbBot":2971,"bbLeft":1066,"bbRight":1098},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1013,"end":1021},"doc_offset":{"start":1776,"end":1784},"block_offset":{"start":365,"end":373},"page_num":1,"text":"amended,","position":{"top":2947,"bottom":2975,"left":1110,"right":1254,"bbTop":2947,"bbBot":2975,"bbLeft":1110,"bbRight":1254},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1022,"end":1025},"doc_offset":{"start":1785,"end":1788},"block_offset":{"start":374,"end":377},"page_num":1,"text":"and","position":{"top":2947,"bottom":2971,"left":1268,"right":1320,"bbTop":2947,"bbBot":2971,"bbLeft":1268,"bbRight":1320},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1026,"end":1029},"doc_offset":{"start":1789,"end":1792},"block_offset":{"start":378,"end":381},"page_num":1,"text":"the","position":{"top":2947,"bottom":2971,"left":1332,"right":1376,"bbTop":2947,"bbBot":2971,"bbLeft":1332,"bbRight":1376},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1030,"end":1041},"doc_offset":{"start":1793,"end":1804},"block_offset":{"start":382,"end":393},"page_num":1,"text":"affirmative","position":{"top":2946,"bottom":2971,"left":1388,"right":1539,"bbTop":2946,"bbBot":2971,"bbLeft":1388,"bbRight":1539},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1042,"end":1048},"doc_offset":{"start":1805,"end":1811},"block_offset":{"start":394,"end":400},"page_num":1,"text":"action","position":{"top":2947,"bottom":2971,"left":1551,"right":1637,"bbTop":2947,"bbBot":2971,"bbLeft":1551,"bbRight":1637},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1049,"end":1056},"doc_offset":{"start":1812,"end":1819},"block_offset":{"start":401,"end":408},"page_num":1,"text":"clauses","position":{"top":2947,"bottom":2971,"left":1649,"right":1760,"bbTop":2947,"bbBot":2971,"bbLeft":1649,"bbRight":1760},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1057,"end":1059},"doc_offset":{"start":1820,"end":1822},"block_offset":{"start":409,"end":411},"page_num":1,"text":"as","position":{"top":2953,"bottom":2971,"left":1772,"right":1804,"bbTop":2953,"bbBot":2971,"bbLeft":1772,"bbRight":1804},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1060,"end":1063},"doc_offset":{"start":1823,"end":1826},"block_offset":{"start":412,"end":415},"page_num":1,"text":"set","position":{"top":2947,"bottom":2971,"left":1816,"right":1859,"bbTop":2947,"bbBot":2971,"bbLeft":1816,"bbRight":1859},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1064,"end":1069},"doc_offset":{"start":1827,"end":1832},"block_offset":{"start":416,"end":421},"page_num":1,"text":"forth","position":{"top":2946,"bottom":2971,"left":1869,"right":1933,"bbTop":2946,"bbBot":2971,"bbLeft":1869,"bbRight":1933},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1070,"end":1072},"doc_offset":{"start":1833,"end":1835},"block_offset":{"start":422,"end":424},"page_num":1,"text":"in","position":{"top":2947,"bottom":2971,"left":1947,"right":1968,"bbTop":2947,"bbBot":2971,"bbLeft":1947,"bbRight":1968},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1073,"end":1075},"doc_offset":{"start":1836,"end":1838},"block_offset":{"start":425,"end":427},"page_num":1,"text":"41","position":{"top":2947,"bottom":2971,"left":1980,"right":2011,"bbTop":2947,"bbBot":2971,"bbLeft":1980,"bbRight":2011},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1076,"end":1082},"doc_offset":{"start":1839,"end":1845},"block_offset":{"start":428,"end":434},"page_num":1,"text":"C.F.R.","position":{"top":2946,"bottom":2971,"left":2028,"right":2119,"bbTop":2946,"bbBot":2971,"bbLeft":2028,"bbRight":2119},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1083,"end":1091},"doc_offset":{"start":1846,"end":1854},"block_offset":{"start":435,"end":443},"page_num":1,"text":"60-741.4","position":{"top":2947,"bottom":2971,"left":2133,"right":2262,"bbTop":2947,"bbBot":2971,"bbLeft":2133,"bbRight":2262},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1092,"end":1096},"doc_offset":{"start":1855,"end":1859},"block_offset":{"start":444,"end":448},"page_num":1,"text":"(for","position":{"top":2946,"bottom":2978,"left":2274,"right":2323,"bbTop":2946,"bbBot":2978,"bbLeft":2274,"bbRight":2323},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1097,"end":1106},"doc_offset":{"start":1860,"end":1869},"block_offset":{"start":449,"end":458},"page_num":1,"text":"contracts","position":{"top":2992,"bottom":3016,"left":119,"right":252,"bbTop":2992,"bbBot":3016,"bbLeft":119,"bbRight":252},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1107,"end":1109},"doc_offset":{"start":1870,"end":1872},"block_offset":{"start":459,"end":461},"page_num":1,"text":"of","position":{"top":2991,"bottom":3016,"left":263,"right":291,"bbTop":2991,"bbBot":3016,"bbLeft":263,"bbRight":291},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1110,"end":1116},"doc_offset":{"start":1873,"end":1879},"block_offset":{"start":462,"end":468},"page_num":1,"text":"$2,500","position":{"top":2989,"bottom":3020,"left":300,"right":400,"bbTop":2989,"bbBot":3020,"bbLeft":300,"bbRight":400},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1117,"end":1119},"doc_offset":{"start":1880,"end":1882},"block_offset":{"start":469,"end":471},"page_num":1,"text":"or","position":{"top":2998,"bottom":3016,"left":411,"right":440,"bbTop":2998,"bbBot":3016,"bbLeft":411,"bbRight":440},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1120,"end":1125},"doc_offset":{"start":1883,"end":1888},"block_offset":{"start":472,"end":477},"page_num":1,"text":"more)","position":{"top":2991,"bottom":3022,"left":451,"right":535,"bbTop":2991,"bbBot":3022,"bbLeft":451,"bbRight":535},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1126,"end":1129},"doc_offset":{"start":1889,"end":1892},"block_offset":{"start":478,"end":481},"page_num":1,"text":"and","position":{"top":2992,"bottom":3016,"left":547,"right":599,"bbTop":2992,"bbBot":3016,"bbLeft":547,"bbRight":599},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1130,"end":1132},"doc_offset":{"start":1893,"end":1895},"block_offset":{"start":482,"end":484},"page_num":1,"text":"41","position":{"top":2991,"bottom":3015,"left":611,"right":641,"bbTop":2991,"bbBot":3015,"bbLeft":611,"bbRight":641},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1133,"end":1139},"doc_offset":{"start":1896,"end":1902},"block_offset":{"start":485,"end":491},"page_num":1,"text":"C.F.R.","position":{"top":2991,"bottom":3016,"left":658,"right":750,"bbTop":2991,"bbBot":3016,"bbLeft":658,"bbRight":750},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1140,"end":1148},"doc_offset":{"start":1903,"end":1911},"block_offset":{"start":492,"end":500},"page_num":1,"text":"60-250.4","position":{"top":2991,"bottom":3016,"left":764,"right":892,"bbTop":2991,"bbBot":3016,"bbLeft":764,"bbRight":892},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1149,"end":1153},"doc_offset":{"start":1912,"end":1916},"block_offset":{"start":501,"end":505},"page_num":1,"text":"(for","position":{"top":2991,"bottom":3022,"left":905,"right":954,"bbTop":2991,"bbBot":3022,"bbLeft":905,"bbRight":954},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1154,"end":1163},"doc_offset":{"start":1917,"end":1926},"block_offset":{"start":506,"end":515},"page_num":1,"text":"contracts","position":{"top":2992,"bottom":3016,"left":964,"right":1096,"bbTop":2992,"bbBot":3016,"bbLeft":964,"bbRight":1096},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1164,"end":1166},"doc_offset":{"start":1927,"end":1929},"block_offset":{"start":516,"end":518},"page_num":1,"text":"of","position":{"top":2991,"bottom":3016,"left":1108,"right":1136,"bbTop":2991,"bbBot":3016,"bbLeft":1108,"bbRight":1136},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1167,"end":1174},"doc_offset":{"start":1930,"end":1937},"block_offset":{"start":519,"end":526},"page_num":1,"text":"$10,000","position":{"top":2989,"bottom":3020,"left":1145,"right":1263,"bbTop":2989,"bbBot":3020,"bbLeft":1145,"bbRight":1263},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1175,"end":1177},"doc_offset":{"start":1938,"end":1940},"block_offset":{"start":527,"end":529},"page_num":1,"text":"or","position":{"top":2998,"bottom":3016,"left":1275,"right":1304,"bbTop":2998,"bbBot":3016,"bbLeft":1275,"bbRight":1304},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1178,"end":1183},"doc_offset":{"start":1941,"end":1946},"block_offset":{"start":530,"end":535},"page_num":1,"text":"more)","position":{"top":2991,"bottom":3022,"left":1315,"right":1398,"bbTop":2991,"bbBot":3022,"bbLeft":1315,"bbRight":1398},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1184,"end":1187},"doc_offset":{"start":1947,"end":1950},"block_offset":{"start":536,"end":539},"page_num":1,"text":"and","position":{"top":2992,"bottom":3016,"left":1410,"right":1462,"bbTop":2992,"bbBot":3016,"bbLeft":1410,"bbRight":1462},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1188,"end":1190},"doc_offset":{"start":1951,"end":1953},"block_offset":{"start":540,"end":542},"page_num":1,"text":"41","position":{"top":2991,"bottom":3015,"left":1474,"right":1505,"bbTop":2991,"bbBot":3015,"bbLeft":1474,"bbRight":1505},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1191,"end":1197},"doc_offset":{"start":1954,"end":1960},"block_offset":{"start":543,"end":549},"page_num":1,"text":"C.F.R.","position":{"top":2991,"bottom":3016,"left":1522,"right":1614,"bbTop":2991,"bbBot":3016,"bbLeft":1522,"bbRight":1614},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1198,"end":1207},"doc_offset":{"start":1961,"end":1970},"block_offset":{"start":550,"end":559},"page_num":1,"text":"61-250.10","position":{"top":2991,"bottom":3016,"left":1627,"right":1774,"bbTop":2991,"bbBot":3016,"bbLeft":1627,"bbRight":1774},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1208,"end":1218},"doc_offset":{"start":1971,"end":1981},"block_offset":{"start":560,"end":570},"page_num":1,"text":"(requiring","position":{"top":2991,"bottom":3022,"left":1787,"right":1924,"bbTop":2991,"bbBot":3022,"bbLeft":1787,"bbRight":1924},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1219,"end":1222},"doc_offset":{"start":1982,"end":1985},"block_offset":{"start":571,"end":574},"page_num":1,"text":"the","position":{"top":2992,"bottom":3016,"left":1936,"right":1980,"bbTop":2992,"bbBot":3016,"bbLeft":1936,"bbRight":1980},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1223,"end":1229},"doc_offset":{"start":1986,"end":1992},"block_offset":{"start":575,"end":581},"page_num":1,"text":"annual","position":{"top":2992,"bottom":3016,"left":1992,"right":2088,"bbTop":2992,"bbBot":3016,"bbLeft":1992,"bbRight":2088},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1230,"end":1239},"doc_offset":{"start":1993,"end":2002},"block_offset":{"start":582,"end":591},"page_num":1,"text":"reporting","position":{"top":2992,"bottom":3022,"left":2102,"right":2229,"bbTop":2992,"bbBot":3022,"bbLeft":2102,"bbRight":2229},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1240,"end":1242},"doc_offset":{"start":2003,"end":2005},"block_offset":{"start":592,"end":594},"page_num":1,"text":"of","position":{"top":2991,"bottom":3016,"left":2242,"right":2270,"bbTop":2991,"bbBot":3016,"bbLeft":2242,"bbRight":2270},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1243,"end":1250},"doc_offset":{"start":2006,"end":2013},"block_offset":{"start":595,"end":602},"page_num":1,"text":"Vietnam","position":{"top":3036,"bottom":3061,"left":118,"right":238,"bbTop":3036,"bbBot":3061,"bbLeft":118,"bbRight":238},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1251,"end":1254},"doc_offset":{"start":2014,"end":2017},"block_offset":{"start":603,"end":606},"page_num":1,"text":"era","position":{"top":3042,"bottom":3061,"left":250,"right":296,"bbTop":3042,"bbBot":3061,"bbLeft":250,"bbRight":296},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1255,"end":1258},"doc_offset":{"start":2018,"end":2021},"block_offset":{"start":607,"end":610},"page_num":1,"text":"and","position":{"top":3036,"bottom":3061,"left":308,"right":360,"bbTop":3036,"bbBot":3061,"bbLeft":308,"bbRight":360},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1259,"end":1266},"doc_offset":{"start":2022,"end":2029},"block_offset":{"start":611,"end":618},"page_num":1,"text":"special","position":{"top":3036,"bottom":3067,"left":372,"right":473,"bbTop":3036,"bbBot":3067,"bbLeft":372,"bbRight":473},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1267,"end":1275},"doc_offset":{"start":2030,"end":2038},"block_offset":{"start":619,"end":627},"page_num":1,"text":"disabled","position":{"top":3036,"bottom":3061,"left":486,"right":606,"bbTop":3036,"bbBot":3061,"bbLeft":486,"bbRight":606},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1276,"end":1285},"doc_offset":{"start":2039,"end":2048},"block_offset":{"start":628,"end":637},"page_num":1,"text":"veterans)","position":{"top":3036,"bottom":3067,"left":618,"right":756,"bbTop":3036,"bbBot":3067,"bbLeft":618,"bbRight":756},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1286,"end":1289},"doc_offset":{"start":2049,"end":2052},"block_offset":{"start":638,"end":641},"page_num":1,"text":"are","position":{"top":3042,"bottom":3061,"left":767,"right":813,"bbTop":3042,"bbBot":3061,"bbLeft":767,"bbRight":813},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1290,"end":1302},"doc_offset":{"start":2053,"end":2065},"block_offset":{"start":642,"end":654},"page_num":1,"text":"incorporated","position":{"top":3036,"bottom":3067,"left":826,"right":1006,"bbTop":3036,"bbBot":3067,"bbLeft":826,"bbRight":1006},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1303,"end":1309},"doc_offset":{"start":2066,"end":2072},"block_offset":{"start":655,"end":661},"page_num":1,"text":"herein","position":{"top":3036,"bottom":3061,"left":1020,"right":1108,"bbTop":3036,"bbBot":3061,"bbLeft":1020,"bbRight":1108},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1310,"end":1312},"doc_offset":{"start":2073,"end":2075},"block_offset":{"start":662,"end":664},"page_num":1,"text":"by","position":{"top":3036,"bottom":3067,"left":1122,"right":1155,"bbTop":3036,"bbBot":3067,"bbLeft":1122,"bbRight":1155},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1313,"end":1323},"doc_offset":{"start":2076,"end":2086},"block_offset":{"start":665,"end":675},"page_num":1,"text":"reference.","position":{"top":3036,"bottom":3061,"left":1167,"right":1312,"bbTop":3036,"bbBot":3061,"bbLeft":1167,"bbRight":1312},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1324,"end":1329},"doc_offset":{"start":2087,"end":2092},"block_offset":{"start":0,"end":5},"page_num":1,"text":"Benco","position":{"top":54,"bottom":143,"left":47,"right":298,"bbTop":54,"bbBot":143,"bbLeft":47,"bbRight":298},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}}] \ No newline at end of file diff --git a/tests/data/etloutput/4725/111924/110239/etl_output.json b/tests/data/etloutput/4725/111924/110239/etl_output.json new file mode 100644 index 0000000..f5f75a4 --- /dev/null +++ b/tests/data/etloutput/4725/111924/110239/etl_output.json @@ -0,0 +1 @@ +{"pages":[{"image":"indico-file:///storage/submission/4725/111924/110239/original_page_0.png","thumbnail":"indico-file:///storage/submission/4725/111924/110239/original_thumbnail_0.png","size":{"width":2550,"height":3300},"dpi":{"dpix":300,"dpiy":300},"filename":"invoice_purchase_order.pdf","doc_offset":{"start":0,"end":758},"page_num":0,"text":"indico-file:///storage/submission/4725/111924/110239/page_0_text.txt","characters":"indico-file:///storage/submission/4725/111924/110239/page_0_chars.json","tokens":"indico-file:///storage/submission/4725/111924/110239/page_0_tokens.json","blocks":"indico-file:///storage/submission/4725/111924/110239/page_0_blocks.json","page_info":"indico-file:///storage/submission/4725/111924/110239/page_info_0.json","tables":"indico-file:///storage/submission/4725/111924/110239/tables_0.json"},{"image":"indico-file:///storage/submission/4725/111924/110239/original_page_1.png","thumbnail":"indico-file:///storage/submission/4725/111924/110239/original_thumbnail_1.png","size":{"width":2550,"height":3300},"dpi":{"dpix":300,"dpiy":300},"filename":"invoice_purchase_order.pdf","doc_offset":{"start":759,"end":2093},"page_num":1,"text":"indico-file:///storage/submission/4725/111924/110239/page_1_text.txt","characters":"indico-file:///storage/submission/4725/111924/110239/page_1_chars.json","tokens":"indico-file:///storage/submission/4725/111924/110239/page_1_tokens.json","blocks":"indico-file:///storage/submission/4725/111924/110239/page_1_blocks.json","page_info":"indico-file:///storage/submission/4725/111924/110239/page_info_1.json","tables":"indico-file:///storage/submission/4725/111924/110239/tables_1.json"}],"num_pages":2,"full_text":"indico-file:///storage/submission/4725/111924/110239/full_text.txt","email_metadata":{}} \ No newline at end of file diff --git a/tests/data/etloutput/4725/111924/110239/page_0_text.txt b/tests/data/etloutput/4725/111924/110239/page_0_text.txt new file mode 100644 index 0000000..79deded --- /dev/null +++ b/tests/data/etloutput/4725/111924/110239/page_0_text.txt @@ -0,0 +1,37 @@ +HubSpot +HubSpot, Inc. +2 First Street, +Boston, MA 02141 Tax +ID: 11-2665791 +indico data solutions, INC +Bill To: +186 SOUTH STREET +SUITE 400 +Boston MA 02111 +US +Ship To: +186 SOUTH STREET +SUITE 400 +Boston MA 02111 +US +Credit Card Receipt +579266 +Date +Portal ID +06/21/2016 +3927578 +Currency +USD +Item Billing Frequency Start Date End Date Quantity Line Total +HubSpot Enterprise Monthly 06/21/2016 07/20/2016 1 $1,200.00 +Included Contacts Monthly 06/21/2016 07/20/2016 10 $0.00 +Enterprise Contacts - Per 1000 Monthly 06/21/2016 07/20/2016 5 $25.00 +Subtotal +$1,225.00 +Total Tax +$76.56 +Total +$1,301.56 +Please contact your Account Manager for any questions related to your contract. For any other general invoicing inquiries, please send +an email to bills@hubspot.net +1 / 1 \ No newline at end of file diff --git a/tests/data/etloutput/4725/111924/110239/page_0_tokens.json b/tests/data/etloutput/4725/111924/110239/page_0_tokens.json new file mode 100644 index 0000000..e00b003 --- /dev/null +++ b/tests/data/etloutput/4725/111924/110239/page_0_tokens.json @@ -0,0 +1 @@ +[{"page_offset":{"start":0,"end":7},"doc_offset":{"start":0,"end":7},"block_offset":{"start":0,"end":7},"page_num":0,"text":"HubSpot","position":{"top":191,"bottom":300,"left":918,"right":1317,"bbTop":191,"bbBot":300,"bbLeft":918,"bbRight":1317},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":8,"end":16},"doc_offset":{"start":8,"end":16},"block_offset":{"start":0,"end":8},"page_num":0,"text":"HubSpot,","position":{"top":426,"bottom":462,"left":898,"right":1037,"bbTop":426,"bbBot":462,"bbLeft":898,"bbRight":1037},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":17,"end":21},"doc_offset":{"start":17,"end":21},"block_offset":{"start":9,"end":13},"page_num":0,"text":"Inc.","position":{"top":426,"bottom":462,"left":1044,"right":1097,"bbTop":426,"bbBot":462,"bbLeft":1044,"bbRight":1097},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":22,"end":23},"doc_offset":{"start":22,"end":23},"block_offset":{"start":14,"end":15},"page_num":0,"text":"2","position":{"top":465,"bottom":501,"left":898,"right":916,"bbTop":465,"bbBot":501,"bbLeft":898,"bbRight":916},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":24,"end":29},"doc_offset":{"start":24,"end":29},"block_offset":{"start":16,"end":21},"page_num":0,"text":"First","position":{"top":466,"bottom":501,"left":925,"right":995,"bbTop":466,"bbBot":501,"bbLeft":925,"bbRight":995},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":30,"end":37},"doc_offset":{"start":30,"end":37},"block_offset":{"start":22,"end":29},"page_num":0,"text":"Street,","position":{"top":466,"bottom":501,"left":1002,"right":1097,"bbTop":466,"bbBot":501,"bbLeft":1002,"bbRight":1097},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":38,"end":45},"doc_offset":{"start":38,"end":45},"block_offset":{"start":30,"end":37},"page_num":0,"text":"Boston,","position":{"top":507,"bottom":541,"left":896,"right":1009,"bbTop":507,"bbBot":541,"bbLeft":896,"bbRight":1009},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":46,"end":48},"doc_offset":{"start":46,"end":48},"block_offset":{"start":38,"end":40},"page_num":0,"text":"MA","position":{"top":507,"bottom":541,"left":1017,"right":1067,"bbTop":507,"bbBot":541,"bbLeft":1017,"bbRight":1067},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":49,"end":54},"doc_offset":{"start":49,"end":54},"block_offset":{"start":41,"end":46},"page_num":0,"text":"02141","position":{"top":505,"bottom":541,"left":1080,"right":1174,"bbTop":505,"bbBot":541,"bbLeft":1080,"bbRight":1174},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":55,"end":58},"doc_offset":{"start":55,"end":58},"block_offset":{"start":47,"end":50},"page_num":0,"text":"Tax","position":{"top":505,"bottom":541,"left":1186,"right":1237,"bbTop":505,"bbBot":541,"bbLeft":1186,"bbRight":1237},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":59,"end":62},"doc_offset":{"start":59,"end":62},"block_offset":{"start":51,"end":54},"page_num":0,"text":"ID:","position":{"top":545,"bottom":580,"left":895,"right":944,"bbTop":545,"bbBot":580,"bbLeft":895,"bbRight":944},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":63,"end":73},"doc_offset":{"start":63,"end":73},"block_offset":{"start":55,"end":65},"page_num":0,"text":"11-2665791","position":{"top":547,"bottom":580,"left":951,"right":1123,"bbTop":547,"bbBot":580,"bbLeft":951,"bbRight":1123},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":74,"end":80},"doc_offset":{"start":74,"end":80},"block_offset":{"start":0,"end":6},"page_num":0,"text":"indico","position":{"top":667,"bottom":719,"left":167,"right":313,"bbTop":667,"bbBot":719,"bbLeft":167,"bbRight":313},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":81,"end":85},"doc_offset":{"start":81,"end":85},"block_offset":{"start":7,"end":11},"page_num":0,"text":"data","position":{"top":667,"bottom":721,"left":329,"right":434,"bbTop":667,"bbBot":721,"bbLeft":329,"bbRight":434},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":86,"end":96},"doc_offset":{"start":86,"end":96},"block_offset":{"start":12,"end":22},"page_num":0,"text":"solutions,","position":{"top":667,"bottom":721,"left":445,"right":680,"bbTop":667,"bbBot":721,"bbLeft":445,"bbRight":680},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":97,"end":100},"doc_offset":{"start":97,"end":100},"block_offset":{"start":23,"end":26},"page_num":0,"text":"INC","position":{"top":666,"bottom":721,"left":691,"right":773,"bbTop":666,"bbBot":721,"bbLeft":691,"bbRight":773},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":101,"end":105},"doc_offset":{"start":101,"end":105},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Bill","position":{"top":825,"bottom":862,"left":169,"right":230,"bbTop":825,"bbBot":862,"bbLeft":169,"bbRight":230},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":106,"end":109},"doc_offset":{"start":106,"end":109},"block_offset":{"start":5,"end":8},"page_num":0,"text":"To:","position":{"top":826,"bottom":863,"left":237,"right":290,"bbTop":826,"bbBot":863,"bbLeft":237,"bbRight":290},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":110,"end":113},"doc_offset":{"start":110,"end":113},"block_offset":{"start":9,"end":12},"page_num":0,"text":"186","position":{"top":876,"bottom":915,"left":171,"right":227,"bbTop":876,"bbBot":915,"bbLeft":171,"bbRight":227},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":114,"end":119},"doc_offset":{"start":114,"end":119},"block_offset":{"start":13,"end":18},"page_num":0,"text":"SOUTH","position":{"top":876,"bottom":915,"left":242,"right":363,"bbTop":876,"bbBot":915,"bbLeft":242,"bbRight":363},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":120,"end":126},"doc_offset":{"start":120,"end":126},"block_offset":{"start":19,"end":25},"page_num":0,"text":"STREET","position":{"top":876,"bottom":915,"left":385,"right":531,"bbTop":876,"bbBot":915,"bbLeft":385,"bbRight":531},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":127,"end":132},"doc_offset":{"start":127,"end":132},"block_offset":{"start":26,"end":31},"page_num":0,"text":"SUITE","position":{"top":922,"bottom":959,"left":169,"right":273,"bbTop":922,"bbBot":959,"bbLeft":169,"bbRight":273},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":133,"end":136},"doc_offset":{"start":133,"end":136},"block_offset":{"start":32,"end":35},"page_num":0,"text":"400","position":{"top":922,"bottom":959,"left":290,"right":350,"bbTop":922,"bbBot":959,"bbLeft":290,"bbRight":350},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":137,"end":143},"doc_offset":{"start":137,"end":143},"block_offset":{"start":36,"end":42},"page_num":0,"text":"Boston","position":{"top":968,"bottom":1004,"left":167,"right":280,"bbTop":968,"bbBot":1004,"bbLeft":167,"bbRight":280},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":144,"end":146},"doc_offset":{"start":144,"end":146},"block_offset":{"start":43,"end":45},"page_num":0,"text":"MA","position":{"top":968,"bottom":1004,"left":293,"right":348,"bbTop":968,"bbBot":1004,"bbLeft":293,"bbRight":348},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":147,"end":152},"doc_offset":{"start":147,"end":152},"block_offset":{"start":46,"end":51},"page_num":0,"text":"02111","position":{"top":968,"bottom":1004,"left":363,"right":465,"bbTop":968,"bbBot":1004,"bbLeft":363,"bbRight":465},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":153,"end":155},"doc_offset":{"start":153,"end":155},"block_offset":{"start":52,"end":54},"page_num":0,"text":"US","position":{"top":1011,"bottom":1047,"left":167,"right":217,"bbTop":1011,"bbBot":1047,"bbLeft":167,"bbRight":217},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":156,"end":160},"doc_offset":{"start":156,"end":160},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Ship","position":{"top":825,"bottom":866,"left":782,"right":862,"bbTop":825,"bbBot":866,"bbLeft":782,"bbRight":862},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":161,"end":164},"doc_offset":{"start":161,"end":164},"block_offset":{"start":5,"end":8},"page_num":0,"text":"To:","position":{"top":825,"bottom":867,"left":873,"right":925,"bbTop":825,"bbBot":867,"bbLeft":873,"bbRight":925},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":165,"end":168},"doc_offset":{"start":165,"end":168},"block_offset":{"start":9,"end":12},"page_num":0,"text":"186","position":{"top":875,"bottom":915,"left":785,"right":843,"bbTop":875,"bbBot":915,"bbLeft":785,"bbRight":843},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":169,"end":174},"doc_offset":{"start":169,"end":174},"block_offset":{"start":13,"end":18},"page_num":0,"text":"SOUTH","position":{"top":876,"bottom":915,"left":858,"right":979,"bbTop":876,"bbBot":915,"bbLeft":858,"bbRight":979},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":175,"end":181},"doc_offset":{"start":175,"end":181},"block_offset":{"start":19,"end":25},"page_num":0,"text":"STREET","position":{"top":876,"bottom":915,"left":998,"right":1147,"bbTop":876,"bbBot":915,"bbLeft":998,"bbRight":1147},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":182,"end":187},"doc_offset":{"start":182,"end":187},"block_offset":{"start":26,"end":31},"page_num":0,"text":"SUITE","position":{"top":922,"bottom":959,"left":783,"right":886,"bbTop":922,"bbBot":959,"bbLeft":783,"bbRight":886},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":188,"end":191},"doc_offset":{"start":188,"end":191},"block_offset":{"start":32,"end":35},"page_num":0,"text":"400","position":{"top":922,"bottom":958,"left":903,"right":965,"bbTop":922,"bbBot":958,"bbLeft":903,"bbRight":965},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":192,"end":198},"doc_offset":{"start":192,"end":198},"block_offset":{"start":36,"end":42},"page_num":0,"text":"Boston","position":{"top":968,"bottom":1005,"left":780,"right":893,"bbTop":968,"bbBot":1005,"bbLeft":780,"bbRight":893},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":199,"end":201},"doc_offset":{"start":199,"end":201},"block_offset":{"start":43,"end":45},"page_num":0,"text":"MA","position":{"top":968,"bottom":1004,"left":906,"right":959,"bbTop":968,"bbBot":1004,"bbLeft":906,"bbRight":959},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":202,"end":207},"doc_offset":{"start":202,"end":207},"block_offset":{"start":46,"end":51},"page_num":0,"text":"02111","position":{"top":968,"bottom":1004,"left":974,"right":1077,"bbTop":968,"bbBot":1004,"bbLeft":974,"bbRight":1077},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":208,"end":210},"doc_offset":{"start":208,"end":210},"block_offset":{"start":52,"end":54},"page_num":0,"text":"US","position":{"top":1011,"bottom":1045,"left":782,"right":830,"bbTop":1011,"bbBot":1045,"bbLeft":782,"bbRight":830},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":211,"end":217},"doc_offset":{"start":211,"end":217},"block_offset":{"start":0,"end":6},"page_num":0,"text":"Credit","position":{"top":667,"bottom":719,"left":1396,"right":1541,"bbTop":667,"bbBot":719,"bbLeft":1396,"bbRight":1541},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":218,"end":222},"doc_offset":{"start":218,"end":222},"block_offset":{"start":7,"end":11},"page_num":0,"text":"Card","position":{"top":667,"bottom":721,"left":1554,"right":1664,"bbTop":667,"bbBot":721,"bbLeft":1554,"bbRight":1664},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":223,"end":230},"doc_offset":{"start":223,"end":230},"block_offset":{"start":12,"end":19},"page_num":0,"text":"Receipt","position":{"top":668,"bottom":723,"left":1678,"right":1862,"bbTop":668,"bbBot":723,"bbLeft":1678,"bbRight":1862},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":231,"end":237},"doc_offset":{"start":231,"end":237},"block_offset":{"start":0,"end":6},"page_num":0,"text":"579266","position":{"top":668,"bottom":717,"left":2008,"right":2173,"bbTop":668,"bbBot":717,"bbLeft":2008,"bbRight":2173},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":238,"end":242},"doc_offset":{"start":238,"end":242},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Date","position":{"top":733,"bottom":770,"left":1395,"right":1475,"bbTop":733,"bbBot":770,"bbLeft":1395,"bbRight":1475},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":243,"end":249},"doc_offset":{"start":243,"end":249},"block_offset":{"start":0,"end":6},"page_num":0,"text":"Portal","position":{"top":803,"bottom":843,"left":1395,"right":1499,"bbTop":803,"bbBot":843,"bbLeft":1395,"bbRight":1499},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":250,"end":252},"doc_offset":{"start":250,"end":252},"block_offset":{"start":7,"end":9},"page_num":0,"text":"ID","position":{"top":803,"bottom":845,"left":1508,"right":1542,"bbTop":803,"bbBot":845,"bbLeft":1508,"bbRight":1542},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":253,"end":263},"doc_offset":{"start":253,"end":263},"block_offset":{"start":0,"end":10},"page_num":0,"text":"06/21/2016","position":{"top":746,"bottom":784,"left":1803,"right":1992,"bbTop":746,"bbBot":784,"bbLeft":1803,"bbRight":1992},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":264,"end":271},"doc_offset":{"start":264,"end":271},"block_offset":{"start":0,"end":7},"page_num":0,"text":"3927578","position":{"top":820,"bottom":855,"left":1805,"right":1951,"bbTop":820,"bbBot":855,"bbLeft":1805,"bbRight":1951},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":272,"end":280},"doc_offset":{"start":272,"end":280},"block_offset":{"start":0,"end":8},"page_num":0,"text":"Currency","position":{"top":877,"bottom":919,"left":1395,"right":1561,"bbTop":877,"bbBot":919,"bbLeft":1395,"bbRight":1561},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":281,"end":284},"doc_offset":{"start":281,"end":284},"block_offset":{"start":0,"end":3},"page_num":0,"text":"USD","position":{"top":888,"bottom":925,"left":1805,"right":1876,"bbTop":888,"bbBot":925,"bbLeft":1805,"bbRight":1876},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":285,"end":289},"doc_offset":{"start":285,"end":289},"block_offset":{"start":0,"end":4},"page_num":0,"text":"Item","position":{"top":1137,"bottom":1167,"left":173,"right":229,"bbTop":1137,"bbBot":1167,"bbLeft":173,"bbRight":229},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":290,"end":297},"doc_offset":{"start":290,"end":297},"block_offset":{"start":5,"end":12},"page_num":0,"text":"Billing","position":{"top":1137,"bottom":1175,"left":1008,"right":1108,"bbTop":1137,"bbBot":1175,"bbLeft":1008,"bbRight":1108},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":298,"end":307},"doc_offset":{"start":298,"end":307},"block_offset":{"start":13,"end":22},"page_num":0,"text":"Frequency","position":{"top":1138,"bottom":1175,"left":1120,"right":1290,"bbTop":1138,"bbBot":1175,"bbLeft":1120,"bbRight":1290},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":308,"end":313},"doc_offset":{"start":308,"end":313},"block_offset":{"start":23,"end":28},"page_num":0,"text":"Start","position":{"top":1137,"bottom":1170,"left":1445,"right":1522,"bbTop":1137,"bbBot":1170,"bbLeft":1445,"bbRight":1522},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":314,"end":318},"doc_offset":{"start":314,"end":318},"block_offset":{"start":29,"end":33},"page_num":0,"text":"Date","position":{"top":1137,"bottom":1171,"left":1530,"right":1601,"bbTop":1137,"bbBot":1171,"bbLeft":1530,"bbRight":1601},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":319,"end":322},"doc_offset":{"start":319,"end":322},"block_offset":{"start":34,"end":37},"page_num":0,"text":"End","position":{"top":1137,"bottom":1170,"left":1699,"right":1760,"bbTop":1137,"bbBot":1170,"bbLeft":1699,"bbRight":1760},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":323,"end":327},"doc_offset":{"start":323,"end":327},"block_offset":{"start":38,"end":42},"page_num":0,"text":"Date","position":{"top":1137,"bottom":1171,"left":1772,"right":1843,"bbTop":1137,"bbBot":1171,"bbLeft":1772,"bbRight":1843},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":328,"end":336},"doc_offset":{"start":328,"end":336},"block_offset":{"start":43,"end":51},"page_num":0,"text":"Quantity","position":{"top":1137,"bottom":1173,"left":1952,"right":2090,"bbTop":1137,"bbBot":1173,"bbLeft":1952,"bbRight":2090},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":337,"end":341},"doc_offset":{"start":337,"end":341},"block_offset":{"start":52,"end":56},"page_num":0,"text":"Line","position":{"top":1137,"bottom":1170,"left":2193,"right":2260,"bbTop":1137,"bbBot":1170,"bbLeft":2193,"bbRight":2260},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":342,"end":347},"doc_offset":{"start":342,"end":347},"block_offset":{"start":57,"end":62},"page_num":0,"text":"Total","position":{"top":1137,"bottom":1170,"left":2272,"right":2346,"bbTop":1137,"bbBot":1170,"bbLeft":2272,"bbRight":2346},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":348,"end":355},"doc_offset":{"start":348,"end":355},"block_offset":{"start":63,"end":70},"page_num":0,"text":"HubSpot","position":{"top":1231,"bottom":1274,"left":170,"right":319,"bbTop":1231,"bbBot":1274,"bbLeft":170,"bbRight":319},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":356,"end":366},"doc_offset":{"start":356,"end":366},"block_offset":{"start":71,"end":81},"page_num":0,"text":"Enterprise","position":{"top":1231,"bottom":1274,"left":328,"right":501,"bbTop":1231,"bbBot":1274,"bbLeft":328,"bbRight":501},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":367,"end":374},"doc_offset":{"start":367,"end":374},"block_offset":{"start":82,"end":89},"page_num":0,"text":"Monthly","position":{"top":1233,"bottom":1271,"left":1081,"right":1214,"bbTop":1233,"bbBot":1271,"bbLeft":1081,"bbRight":1214},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":375,"end":385},"doc_offset":{"start":375,"end":385},"block_offset":{"start":90,"end":100},"page_num":0,"text":"06/21/2016","position":{"top":1231,"bottom":1270,"left":1426,"right":1615,"bbTop":1231,"bbBot":1270,"bbLeft":1426,"bbRight":1615},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":386,"end":396},"doc_offset":{"start":386,"end":396},"block_offset":{"start":101,"end":111},"page_num":0,"text":"07/20/2016","position":{"top":1231,"bottom":1269,"left":1677,"right":1863,"bbTop":1231,"bbBot":1269,"bbLeft":1677,"bbRight":1863},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":397,"end":398},"doc_offset":{"start":397,"end":398},"block_offset":{"start":112,"end":113},"page_num":0,"text":"1","position":{"top":1233,"bottom":1266,"left":2014,"right":2031,"bbTop":1233,"bbBot":1266,"bbLeft":2014,"bbRight":2031},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":399,"end":408},"doc_offset":{"start":399,"end":408},"block_offset":{"start":114,"end":123},"page_num":0,"text":"$1,200.00","position":{"top":1233,"bottom":1271,"left":2184,"right":2352,"bbTop":1233,"bbBot":1271,"bbLeft":2184,"bbRight":2352},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":409,"end":417},"doc_offset":{"start":409,"end":417},"block_offset":{"start":124,"end":132},"page_num":0,"text":"Included","position":{"top":1317,"bottom":1354,"left":173,"right":310,"bbTop":1317,"bbBot":1354,"bbLeft":173,"bbRight":310},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":418,"end":426},"doc_offset":{"start":418,"end":426},"block_offset":{"start":133,"end":141},"page_num":0,"text":"Contacts","position":{"top":1317,"bottom":1354,"left":323,"right":474,"bbTop":1317,"bbBot":1354,"bbLeft":323,"bbRight":474},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":427,"end":434},"doc_offset":{"start":427,"end":434},"block_offset":{"start":142,"end":149},"page_num":0,"text":"Monthly","position":{"top":1319,"bottom":1357,"left":1083,"right":1214,"bbTop":1319,"bbBot":1357,"bbLeft":1083,"bbRight":1214},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":435,"end":445},"doc_offset":{"start":435,"end":445},"block_offset":{"start":150,"end":160},"page_num":0,"text":"06/21/2016","position":{"top":1317,"bottom":1353,"left":1428,"right":1614,"bbTop":1317,"bbBot":1353,"bbLeft":1428,"bbRight":1614},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":446,"end":456},"doc_offset":{"start":446,"end":456},"block_offset":{"start":161,"end":171},"page_num":0,"text":"07/20/2016","position":{"top":1317,"bottom":1353,"left":1677,"right":1863,"bbTop":1317,"bbBot":1353,"bbLeft":1677,"bbRight":1863},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":457,"end":459},"doc_offset":{"start":457,"end":459},"block_offset":{"start":172,"end":174},"page_num":0,"text":"10","position":{"top":1317,"bottom":1350,"left":2005,"right":2038,"bbTop":1317,"bbBot":1350,"bbLeft":2005,"bbRight":2038},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":460,"end":465},"doc_offset":{"start":460,"end":465},"block_offset":{"start":175,"end":180},"page_num":0,"text":"$0.00","position":{"top":1310,"bottom":1359,"left":2220,"right":2317,"bbTop":1310,"bbBot":1359,"bbLeft":2220,"bbRight":2317},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":466,"end":476},"doc_offset":{"start":466,"end":476},"block_offset":{"start":181,"end":191},"page_num":0,"text":"Enterprise","position":{"top":1400,"bottom":1440,"left":171,"right":342,"bbTop":1400,"bbBot":1440,"bbLeft":171,"bbRight":342},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":477,"end":485},"doc_offset":{"start":477,"end":485},"block_offset":{"start":192,"end":200},"page_num":0,"text":"Contacts","position":{"top":1399,"bottom":1440,"left":353,"right":499,"bbTop":1399,"bbBot":1440,"bbLeft":353,"bbRight":499},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":486,"end":487},"doc_offset":{"start":486,"end":487},"block_offset":{"start":201,"end":202},"page_num":0,"text":"-","position":{"top":1397,"bottom":1440,"left":508,"right":524,"bbTop":1397,"bbBot":1440,"bbLeft":508,"bbRight":524},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":488,"end":491},"doc_offset":{"start":488,"end":491},"block_offset":{"start":203,"end":206},"page_num":0,"text":"Per","position":{"top":1397,"bottom":1439,"left":534,"right":595,"bbTop":1397,"bbBot":1439,"bbLeft":534,"bbRight":595},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":492,"end":496},"doc_offset":{"start":492,"end":496},"block_offset":{"start":207,"end":211},"page_num":0,"text":"1000","position":{"top":1397,"bottom":1438,"left":604,"right":686,"bbTop":1397,"bbBot":1438,"bbLeft":604,"bbRight":686},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":497,"end":504},"doc_offset":{"start":497,"end":504},"block_offset":{"start":212,"end":219},"page_num":0,"text":"Monthly","position":{"top":1402,"bottom":1439,"left":1081,"right":1216,"bbTop":1402,"bbBot":1439,"bbLeft":1081,"bbRight":1216},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":505,"end":515},"doc_offset":{"start":505,"end":515},"block_offset":{"start":220,"end":230},"page_num":0,"text":"06/21/2016","position":{"top":1400,"bottom":1438,"left":1428,"right":1614,"bbTop":1400,"bbBot":1438,"bbLeft":1428,"bbRight":1614},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":516,"end":526},"doc_offset":{"start":516,"end":526},"block_offset":{"start":231,"end":241},"page_num":0,"text":"07/20/2016","position":{"top":1395,"bottom":1443,"left":1674,"right":1869,"bbTop":1395,"bbBot":1443,"bbLeft":1674,"bbRight":1869},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":527,"end":528},"doc_offset":{"start":527,"end":528},"block_offset":{"start":242,"end":243},"page_num":0,"text":"5","position":{"top":1400,"bottom":1435,"left":2009,"right":2027,"bbTop":1400,"bbBot":1435,"bbLeft":2009,"bbRight":2027},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":529,"end":535},"doc_offset":{"start":529,"end":535},"block_offset":{"start":244,"end":250},"page_num":0,"text":"$25.00","position":{"top":1400,"bottom":1438,"left":2211,"right":2325,"bbTop":1400,"bbBot":1438,"bbLeft":2211,"bbRight":2325},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":536,"end":544},"doc_offset":{"start":536,"end":544},"block_offset":{"start":0,"end":8},"page_num":0,"text":"Subtotal","position":{"top":1513,"bottom":1548,"left":1855,"right":2002,"bbTop":1513,"bbBot":1548,"bbLeft":1855,"bbRight":2002},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":545,"end":554},"doc_offset":{"start":545,"end":554},"block_offset":{"start":0,"end":9},"page_num":0,"text":"$1,225.00","position":{"top":1511,"bottom":1558,"left":2204,"right":2378,"bbTop":1511,"bbBot":1558,"bbLeft":2204,"bbRight":2378},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":555,"end":560},"doc_offset":{"start":555,"end":560},"block_offset":{"start":0,"end":5},"page_num":0,"text":"Total","position":{"top":1585,"bottom":1621,"left":1842,"right":1926,"bbTop":1585,"bbBot":1621,"bbLeft":1842,"bbRight":1926},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":561,"end":564},"doc_offset":{"start":561,"end":564},"block_offset":{"start":6,"end":9},"page_num":0,"text":"Tax","position":{"top":1586,"bottom":1621,"left":1933,"right":1992,"bbTop":1586,"bbBot":1621,"bbLeft":1933,"bbRight":1992},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":565,"end":571},"doc_offset":{"start":565,"end":571},"block_offset":{"start":0,"end":6},"page_num":0,"text":"$76.56","position":{"top":1578,"bottom":1625,"left":2259,"right":2380,"bbTop":1578,"bbBot":1625,"bbLeft":2259,"bbRight":2380},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":572,"end":577},"doc_offset":{"start":572,"end":577},"block_offset":{"start":0,"end":5},"page_num":0,"text":"Total","position":{"top":1657,"bottom":1694,"left":1919,"right":2007,"bbTop":1657,"bbBot":1694,"bbLeft":1919,"bbRight":2007},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":578,"end":587},"doc_offset":{"start":578,"end":587},"block_offset":{"start":0,"end":9},"page_num":0,"text":"$1,301.56","position":{"top":1654,"bottom":1701,"left":2209,"right":2380,"bbTop":1654,"bbBot":1701,"bbLeft":2209,"bbRight":2380},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":588,"end":594},"doc_offset":{"start":588,"end":594},"block_offset":{"start":0,"end":6},"page_num":0,"text":"Please","position":{"top":1773,"bottom":1814,"left":160,"right":272,"bbTop":1773,"bbBot":1814,"bbLeft":160,"bbRight":272},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":595,"end":602},"doc_offset":{"start":595,"end":602},"block_offset":{"start":7,"end":14},"page_num":0,"text":"contact","position":{"top":1773,"bottom":1816,"left":282,"right":406,"bbTop":1773,"bbBot":1816,"bbLeft":282,"bbRight":406},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":603,"end":607},"doc_offset":{"start":603,"end":607},"block_offset":{"start":15,"end":19},"page_num":0,"text":"your","position":{"top":1773,"bottom":1816,"left":416,"right":491,"bbTop":1773,"bbBot":1816,"bbLeft":416,"bbRight":491},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":608,"end":615},"doc_offset":{"start":608,"end":615},"block_offset":{"start":20,"end":27},"page_num":0,"text":"Account","position":{"top":1771,"bottom":1817,"left":499,"right":631,"bbTop":1771,"bbBot":1817,"bbLeft":499,"bbRight":631},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":616,"end":623},"doc_offset":{"start":616,"end":623},"block_offset":{"start":28,"end":35},"page_num":0,"text":"Manager","position":{"top":1771,"bottom":1817,"left":641,"right":790,"bbTop":1771,"bbBot":1817,"bbLeft":641,"bbRight":790},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":624,"end":627},"doc_offset":{"start":624,"end":627},"block_offset":{"start":36,"end":39},"page_num":0,"text":"for","position":{"top":1771,"bottom":1817,"left":800,"right":846,"bbTop":1771,"bbBot":1817,"bbLeft":800,"bbRight":846},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":628,"end":631},"doc_offset":{"start":628,"end":631},"block_offset":{"start":40,"end":43},"page_num":0,"text":"any","position":{"top":1771,"bottom":1817,"left":856,"right":919,"bbTop":1771,"bbBot":1817,"bbLeft":856,"bbRight":919},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":632,"end":641},"doc_offset":{"start":632,"end":641},"block_offset":{"start":44,"end":53},"page_num":0,"text":"questions","position":{"top":1771,"bottom":1817,"left":928,"right":1087,"bbTop":1771,"bbBot":1817,"bbLeft":928,"bbRight":1087},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":642,"end":649},"doc_offset":{"start":642,"end":649},"block_offset":{"start":54,"end":61},"page_num":0,"text":"related","position":{"top":1771,"bottom":1819,"left":1097,"right":1213,"bbTop":1771,"bbBot":1819,"bbLeft":1097,"bbRight":1213},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":650,"end":652},"doc_offset":{"start":650,"end":652},"block_offset":{"start":62,"end":64},"page_num":0,"text":"to","position":{"top":1771,"bottom":1819,"left":1221,"right":1257,"bbTop":1771,"bbBot":1819,"bbLeft":1221,"bbRight":1257},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":653,"end":657},"doc_offset":{"start":653,"end":657},"block_offset":{"start":65,"end":69},"page_num":0,"text":"your","position":{"top":1771,"bottom":1819,"left":1267,"right":1338,"bbTop":1771,"bbBot":1819,"bbLeft":1267,"bbRight":1338},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":658,"end":667},"doc_offset":{"start":658,"end":667},"block_offset":{"start":70,"end":79},"page_num":0,"text":"contract.","position":{"top":1771,"bottom":1819,"left":1348,"right":1491,"bbTop":1771,"bbBot":1819,"bbLeft":1348,"bbRight":1491},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":668,"end":671},"doc_offset":{"start":668,"end":671},"block_offset":{"start":80,"end":83},"page_num":0,"text":"For","position":{"top":1771,"bottom":1819,"left":1501,"right":1557,"bbTop":1771,"bbBot":1819,"bbLeft":1501,"bbRight":1557},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":672,"end":675},"doc_offset":{"start":672,"end":675},"block_offset":{"start":84,"end":87},"page_num":0,"text":"any","position":{"top":1771,"bottom":1819,"left":1567,"right":1625,"bbTop":1771,"bbBot":1819,"bbLeft":1567,"bbRight":1625},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":676,"end":681},"doc_offset":{"start":676,"end":681},"block_offset":{"start":88,"end":93},"page_num":0,"text":"other","position":{"top":1771,"bottom":1819,"left":1636,"right":1719,"bbTop":1771,"bbBot":1819,"bbLeft":1636,"bbRight":1719},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":682,"end":689},"doc_offset":{"start":682,"end":689},"block_offset":{"start":94,"end":101},"page_num":0,"text":"general","position":{"top":1771,"bottom":1819,"left":1729,"right":1848,"bbTop":1771,"bbBot":1819,"bbLeft":1729,"bbRight":1848},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":690,"end":699},"doc_offset":{"start":690,"end":699},"block_offset":{"start":102,"end":111},"page_num":0,"text":"invoicing","position":{"top":1771,"bottom":1817,"left":1858,"right":2004,"bbTop":1771,"bbBot":1817,"bbLeft":1858,"bbRight":2004},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":700,"end":710},"doc_offset":{"start":700,"end":710},"block_offset":{"start":112,"end":122},"page_num":0,"text":"inquiries,","position":{"top":1771,"bottom":1817,"left":2014,"right":2163,"bbTop":1771,"bbBot":1817,"bbLeft":2014,"bbRight":2163},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":711,"end":717},"doc_offset":{"start":711,"end":717},"block_offset":{"start":123,"end":129},"page_num":0,"text":"please","position":{"top":1771,"bottom":1817,"left":2171,"right":2282,"bbTop":1771,"bbBot":1817,"bbLeft":2171,"bbRight":2282},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":718,"end":722},"doc_offset":{"start":718,"end":722},"block_offset":{"start":130,"end":134},"page_num":0,"text":"send","position":{"top":1773,"bottom":1816,"left":2292,"right":2375,"bbTop":1773,"bbBot":1816,"bbLeft":2292,"bbRight":2375},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":723,"end":725},"doc_offset":{"start":723,"end":725},"block_offset":{"start":135,"end":137},"page_num":0,"text":"an","position":{"top":1819,"bottom":1859,"left":160,"right":200,"bbTop":1819,"bbBot":1859,"bbLeft":160,"bbRight":200},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":726,"end":731},"doc_offset":{"start":726,"end":731},"block_offset":{"start":138,"end":143},"page_num":0,"text":"email","position":{"top":1819,"bottom":1859,"left":210,"right":300,"bbTop":1819,"bbBot":1859,"bbLeft":210,"bbRight":300},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":732,"end":734},"doc_offset":{"start":732,"end":734},"block_offset":{"start":144,"end":146},"page_num":0,"text":"to","position":{"top":1817,"bottom":1859,"left":310,"right":342,"bbTop":1817,"bbBot":1859,"bbLeft":310,"bbRight":342},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":735,"end":752},"doc_offset":{"start":735,"end":752},"block_offset":{"start":147,"end":164},"page_num":0,"text":"bills@hubspot.net","position":{"top":1817,"bottom":1859,"left":352,"right":654,"bbTop":1817,"bbBot":1859,"bbLeft":352,"bbRight":654},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":753,"end":754},"doc_offset":{"start":753,"end":754},"block_offset":{"start":0,"end":1},"page_num":0,"text":"1","position":{"top":3027,"bottom":3065,"left":2267,"right":2284,"bbTop":3027,"bbBot":3065,"bbLeft":2267,"bbRight":2284},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":755,"end":756},"doc_offset":{"start":755,"end":756},"block_offset":{"start":2,"end":3},"page_num":0,"text":"/","position":{"top":3027,"bottom":3065,"left":2292,"right":2309,"bbTop":3027,"bbBot":3065,"bbLeft":2292,"bbRight":2309},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":757,"end":758},"doc_offset":{"start":757,"end":758},"block_offset":{"start":4,"end":5},"page_num":0,"text":"1","position":{"top":3027,"bottom":3065,"left":2317,"right":2330,"bbTop":3027,"bbBot":3065,"bbLeft":2317,"bbRight":2330},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}}] \ No newline at end of file diff --git a/tests/data/etloutput/4725/111924/110239/page_1_text.txt b/tests/data/etloutput/4725/111924/110239/page_1_text.txt new file mode 100644 index 0000000..6d4fa87 --- /dev/null +++ b/tests/data/etloutput/4725/111924/110239/page_1_text.txt @@ -0,0 +1,35 @@ +Benco +295 Centerpoint Blvd * PO Box 491 +Pittston, PA 18640-0491 +Phone: 1-800-GO-BENCO (1-800-462-3626) +Fax: 570-602-4919 +www.benco.com +Purchase Order +000046 +CAULK +38 W CLARK AVE +MILFORD, DE 19963 +800-532-2855 +P/O # 29111525 +LOCATION 010 +DATE 06/16/21 +PAGE 1 OF 1 +1 +SHIP TO +BENCO SCHOOL KITS +295 CENTERPOINT BLVD +PITTSTON, PA 18640 +P/O DATE BUYER 86847 CONTACT F.O.B. +06/16/21 Michelle Amos DENTSPLY CAULK(110900) +SHIP VIA VENDOR FAX NUMBER PAYMENT TERMS +TRUCK 1800-788-4110 NET 30 DAYS +QUANTITY PRODUCT / DESCRIPTION COST U/M EXTENSION + 60 605220 JELTRATE DUSTLESS FAST 12.00 EA 720.00 + 60 608015 JELTRATE SCOOP / MEASURE SET 3.05 ST 183.00 +TOTAL +903.00 +The seller agrees, in connection with the performance of work under this order, not to discriminate against any employee or applicant for employment +because of any race, sex, religion, color, national origin, disability or status as a disabled veteran or veteran of the Vietnam era. Unless exempted, +Section 202, paragraphs 1 through 7 of Executive Order 11246, as amended, and the affirmative action clauses as set forth in 41 C.F.R. 60-741.4 (for +contracts of $2,500 or more) and 41 C.F.R. 60-250.4 (for contracts of $10,000 or more) and 41 C.F.R. 61-250.10 (requiring the annual reporting of +Vietnam era and special disabled veterans) are incorporated herein by reference. \ No newline at end of file diff --git a/tests/data/etloutput/4725/111924/110239/page_1_tokens.json b/tests/data/etloutput/4725/111924/110239/page_1_tokens.json new file mode 100644 index 0000000..60fa859 --- /dev/null +++ b/tests/data/etloutput/4725/111924/110239/page_1_tokens.json @@ -0,0 +1 @@ +[{"page_offset":{"start":0,"end":5},"doc_offset":{"start":759,"end":764},"block_offset":{"start":0,"end":5},"page_num":1,"text":"Benco","position":{"top":52,"bottom":141,"left":51,"right":305,"bbTop":52,"bbBot":141,"bbLeft":51,"bbRight":305},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":6,"end":9},"doc_offset":{"start":765,"end":768},"block_offset":{"start":0,"end":3},"page_num":1,"text":"295","position":{"top":21,"bottom":52,"left":438,"right":482,"bbTop":21,"bbBot":52,"bbLeft":438,"bbRight":482},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":10,"end":21},"doc_offset":{"start":769,"end":780},"block_offset":{"start":4,"end":15},"page_num":1,"text":"Centerpoint","position":{"top":21,"bottom":54,"left":489,"right":633,"bbTop":21,"bbBot":54,"bbLeft":489,"bbRight":633},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":22,"end":26},"doc_offset":{"start":781,"end":785},"block_offset":{"start":16,"end":20},"page_num":1,"text":"Blvd","position":{"top":21,"bottom":52,"left":640,"right":694,"bbTop":21,"bbBot":52,"bbLeft":640,"bbRight":694},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":27,"end":28},"doc_offset":{"start":786,"end":787},"block_offset":{"start":21,"end":22},"page_num":1,"text":"*","position":{"top":21,"bottom":52,"left":701,"right":717,"bbTop":21,"bbBot":52,"bbLeft":701,"bbRight":717},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":29,"end":31},"doc_offset":{"start":788,"end":790},"block_offset":{"start":23,"end":25},"page_num":1,"text":"PO","position":{"top":21,"bottom":52,"left":724,"right":759,"bbTop":21,"bbBot":52,"bbLeft":724,"bbRight":759},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":32,"end":35},"doc_offset":{"start":791,"end":794},"block_offset":{"start":26,"end":29},"page_num":1,"text":"Box","position":{"top":20,"bottom":52,"left":769,"right":818,"bbTop":20,"bbBot":52,"bbLeft":769,"bbRight":818},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":36,"end":39},"doc_offset":{"start":795,"end":798},"block_offset":{"start":30,"end":33},"page_num":1,"text":"491","position":{"top":20,"bottom":51,"left":823,"right":869,"bbTop":20,"bbBot":51,"bbLeft":823,"bbRight":869},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":40,"end":49},"doc_offset":{"start":799,"end":808},"block_offset":{"start":34,"end":43},"page_num":1,"text":"Pittston,","position":{"top":57,"bottom":85,"left":439,"right":541,"bbTop":57,"bbBot":85,"bbLeft":439,"bbRight":541},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":50,"end":52},"doc_offset":{"start":809,"end":811},"block_offset":{"start":44,"end":46},"page_num":1,"text":"PA","position":{"top":55,"bottom":85,"left":547,"right":580,"bbTop":55,"bbBot":85,"bbLeft":547,"bbRight":580},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":53,"end":63},"doc_offset":{"start":812,"end":822},"block_offset":{"start":47,"end":57},"page_num":1,"text":"18640-0491","position":{"top":55,"bottom":85,"left":591,"right":732,"bbTop":55,"bbBot":85,"bbLeft":591,"bbRight":732},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":64,"end":70},"doc_offset":{"start":823,"end":829},"block_offset":{"start":58,"end":64},"page_num":1,"text":"Phone:","position":{"top":91,"bottom":121,"left":439,"right":527,"bbTop":91,"bbBot":121,"bbLeft":439,"bbRight":527},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":71,"end":85},"doc_offset":{"start":830,"end":844},"block_offset":{"start":65,"end":79},"page_num":1,"text":"1-800-GO-BENCO","position":{"top":91,"bottom":121,"left":534,"right":760,"bbTop":91,"bbBot":121,"bbLeft":534,"bbRight":760},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":86,"end":102},"doc_offset":{"start":845,"end":861},"block_offset":{"start":80,"end":96},"page_num":1,"text":"(1-800-462-3626)","position":{"top":93,"bottom":124,"left":769,"right":981,"bbTop":93,"bbBot":124,"bbLeft":769,"bbRight":981},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":103,"end":107},"doc_offset":{"start":862,"end":866},"block_offset":{"start":97,"end":101},"page_num":1,"text":"Fax:","position":{"top":127,"bottom":156,"left":439,"right":498,"bbTop":127,"bbBot":156,"bbLeft":439,"bbRight":498},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":108,"end":120},"doc_offset":{"start":867,"end":879},"block_offset":{"start":102,"end":114},"page_num":1,"text":"570-602-4919","position":{"top":126,"bottom":154,"left":505,"right":671,"bbTop":126,"bbBot":154,"bbLeft":505,"bbRight":671},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":121,"end":134},"doc_offset":{"start":880,"end":893},"block_offset":{"start":115,"end":128},"page_num":1,"text":"www.benco.com","position":{"top":163,"bottom":191,"left":435,"right":626,"bbTop":163,"bbBot":191,"bbLeft":435,"bbRight":626},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":135,"end":143},"doc_offset":{"start":894,"end":902},"block_offset":{"start":0,"end":8},"page_num":1,"text":"Purchase","position":{"top":239,"bottom":305,"left":883,"right":1181,"bbTop":239,"bbBot":305,"bbLeft":883,"bbRight":1181},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":144,"end":149},"doc_offset":{"start":903,"end":908},"block_offset":{"start":9,"end":14},"page_num":1,"text":"Order","position":{"top":239,"bottom":306,"left":1204,"right":1386,"bbTop":239,"bbBot":306,"bbLeft":1204,"bbRight":1386},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":150,"end":156},"doc_offset":{"start":909,"end":915},"block_offset":{"start":0,"end":6},"page_num":1,"text":"000046","position":{"top":388,"bottom":436,"left":356,"right":499,"bbTop":388,"bbBot":436,"bbLeft":356,"bbRight":499},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":157,"end":162},"doc_offset":{"start":916,"end":921},"block_offset":{"start":7,"end":12},"page_num":1,"text":"CAULK","position":{"top":441,"bottom":481,"left":362,"right":491,"bbTop":441,"bbBot":481,"bbLeft":362,"bbRight":491},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":163,"end":165},"doc_offset":{"start":922,"end":924},"block_offset":{"start":13,"end":15},"page_num":1,"text":"38","position":{"top":489,"bottom":532,"left":361,"right":405,"bbTop":489,"bbBot":532,"bbLeft":361,"bbRight":405},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":166,"end":167},"doc_offset":{"start":925,"end":926},"block_offset":{"start":16,"end":17},"page_num":1,"text":"W","position":{"top":489,"bottom":532,"left":418,"right":439,"bbTop":489,"bbBot":532,"bbLeft":418,"bbRight":439},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":168,"end":173},"doc_offset":{"start":927,"end":932},"block_offset":{"start":18,"end":23},"page_num":1,"text":"CLARK","position":{"top":489,"bottom":532,"left":468,"right":601,"bbTop":489,"bbBot":532,"bbLeft":468,"bbRight":601},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":174,"end":177},"doc_offset":{"start":933,"end":936},"block_offset":{"start":24,"end":27},"page_num":1,"text":"AVE","position":{"top":489,"bottom":532,"left":621,"right":697,"bbTop":489,"bbBot":532,"bbLeft":621,"bbRight":697},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":178,"end":186},"doc_offset":{"start":937,"end":945},"block_offset":{"start":28,"end":36},"page_num":1,"text":"MILFORD,","position":{"top":538,"bottom":585,"left":356,"right":558,"bbTop":538,"bbBot":585,"bbLeft":356,"bbRight":558},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":187,"end":189},"doc_offset":{"start":946,"end":948},"block_offset":{"start":37,"end":39},"page_num":1,"text":"DE","position":{"top":537,"bottom":585,"left":568,"right":626,"bbTop":537,"bbBot":585,"bbLeft":568,"bbRight":626},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":190,"end":195},"doc_offset":{"start":949,"end":954},"block_offset":{"start":40,"end":45},"page_num":1,"text":"19963","position":{"top":537,"bottom":585,"left":657,"right":770,"bbTop":537,"bbBot":585,"bbLeft":657,"bbRight":770},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":196,"end":208},"doc_offset":{"start":955,"end":967},"block_offset":{"start":46,"end":58},"page_num":1,"text":"800-532-2855","position":{"top":592,"bottom":631,"left":359,"right":618,"bbTop":592,"bbBot":631,"bbLeft":359,"bbRight":618},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":209,"end":212},"doc_offset":{"start":968,"end":971},"block_offset":{"start":0,"end":3},"page_num":1,"text":"P/O","position":{"top":20,"bottom":61,"left":1615,"right":1683,"bbTop":20,"bbBot":61,"bbLeft":1615,"bbRight":1683},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":213,"end":214},"doc_offset":{"start":972,"end":973},"block_offset":{"start":4,"end":5},"page_num":1,"text":"#","position":{"top":20,"bottom":63,"left":1706,"right":1731,"bbTop":20,"bbBot":63,"bbLeft":1706,"bbRight":1731},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":215,"end":223},"doc_offset":{"start":974,"end":982},"block_offset":{"start":6,"end":14},"page_num":1,"text":"29111525","position":{"top":17,"bottom":63,"left":1853,"right":2038,"bbTop":17,"bbBot":63,"bbLeft":1853,"bbRight":2038},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":224,"end":232},"doc_offset":{"start":983,"end":991},"block_offset":{"start":15,"end":23},"page_num":1,"text":"LOCATION","position":{"top":78,"bottom":124,"left":1614,"right":1826,"bbTop":78,"bbBot":124,"bbLeft":1614,"bbRight":1826},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":233,"end":236},"doc_offset":{"start":992,"end":995},"block_offset":{"start":24,"end":27},"page_num":1,"text":"010","position":{"top":78,"bottom":124,"left":1859,"right":1929,"bbTop":78,"bbBot":124,"bbLeft":1859,"bbRight":1929},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":238,"end":242},"doc_offset":{"start":997,"end":1001},"block_offset":{"start":29,"end":33},"page_num":1,"text":"DATE","position":{"top":138,"bottom":183,"left":1617,"right":1726,"bbTop":138,"bbBot":183,"bbLeft":1617,"bbRight":1726},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":243,"end":251},"doc_offset":{"start":1002,"end":1010},"block_offset":{"start":34,"end":42},"page_num":1,"text":"06/16/21","position":{"top":140,"bottom":183,"left":1859,"right":2019,"bbTop":140,"bbBot":183,"bbLeft":1859,"bbRight":2019},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":252,"end":256},"doc_offset":{"start":1011,"end":1015},"block_offset":{"start":43,"end":47},"page_num":1,"text":"PAGE","position":{"top":194,"bottom":243,"left":1615,"right":1731,"bbTop":194,"bbBot":243,"bbLeft":1615,"bbRight":1731},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":257,"end":258},"doc_offset":{"start":1016,"end":1017},"block_offset":{"start":48,"end":49},"page_num":1,"text":"1","position":{"top":199,"bottom":242,"left":1862,"right":1882,"bbTop":199,"bbBot":242,"bbLeft":1862,"bbRight":1882},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":259,"end":261},"doc_offset":{"start":1018,"end":1020},"block_offset":{"start":50,"end":52},"page_num":1,"text":"OF","position":{"top":199,"bottom":242,"left":1891,"right":1945,"bbTop":199,"bbBot":242,"bbLeft":1891,"bbRight":1945},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":262,"end":263},"doc_offset":{"start":1021,"end":1022},"block_offset":{"start":53,"end":54},"page_num":1,"text":"1","position":{"top":197,"bottom":243,"left":1966,"right":1986,"bbTop":197,"bbBot":243,"bbLeft":1966,"bbRight":1986},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":265,"end":266},"doc_offset":{"start":1024,"end":1025},"block_offset":{"start":0,"end":1},"page_num":1,"text":"1","position":{"top":392,"bottom":403,"left":2325,"right":2373,"bbTop":392,"bbBot":403,"bbLeft":2325,"bbRight":2373},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":true,"font_size":null,"text_color":null}},{"page_offset":{"start":267,"end":271},"doc_offset":{"start":1026,"end":1030},"block_offset":{"start":0,"end":4},"page_num":1,"text":"SHIP","position":{"top":335,"bottom":372,"left":1557,"right":1631,"bbTop":335,"bbBot":372,"bbLeft":1557,"bbRight":1631},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":272,"end":274},"doc_offset":{"start":1031,"end":1033},"block_offset":{"start":5,"end":7},"page_num":1,"text":"TO","position":{"top":335,"bottom":373,"left":1647,"right":1686,"bbTop":335,"bbBot":373,"bbLeft":1647,"bbRight":1686},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":275,"end":280},"doc_offset":{"start":1034,"end":1039},"block_offset":{"start":8,"end":13},"page_num":1,"text":"BENCO","position":{"top":388,"bottom":436,"left":1558,"right":1707,"bbTop":388,"bbBot":436,"bbLeft":1558,"bbRight":1707},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":281,"end":287},"doc_offset":{"start":1040,"end":1046},"block_offset":{"start":14,"end":20},"page_num":1,"text":"SCHOOL","position":{"top":388,"bottom":436,"left":1726,"right":1903,"bbTop":388,"bbBot":436,"bbLeft":1726,"bbRight":1903},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":288,"end":292},"doc_offset":{"start":1047,"end":1051},"block_offset":{"start":21,"end":25},"page_num":1,"text":"KITS","position":{"top":386,"bottom":436,"left":1913,"right":2011,"bbTop":386,"bbBot":436,"bbLeft":1913,"bbRight":2011},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":293,"end":296},"doc_offset":{"start":1052,"end":1055},"block_offset":{"start":26,"end":29},"page_num":1,"text":"295","position":{"top":441,"bottom":484,"left":1567,"right":1631,"bbTop":441,"bbBot":484,"bbLeft":1567,"bbRight":1631},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":297,"end":308},"doc_offset":{"start":1056,"end":1067},"block_offset":{"start":30,"end":41},"page_num":1,"text":"CENTERPOINT","position":{"top":439,"bottom":485,"left":1644,"right":1946,"bbTop":439,"bbBot":485,"bbLeft":1644,"bbRight":1946},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":309,"end":313},"doc_offset":{"start":1068,"end":1072},"block_offset":{"start":42,"end":46},"page_num":1,"text":"BLVD","position":{"top":439,"bottom":485,"left":1956,"right":2062,"bbTop":439,"bbBot":485,"bbLeft":1956,"bbRight":2062},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":314,"end":323},"doc_offset":{"start":1073,"end":1082},"block_offset":{"start":47,"end":56},"page_num":1,"text":"PITTSTON,","position":{"top":488,"bottom":537,"left":1561,"right":1782,"bbTop":488,"bbBot":537,"bbLeft":1561,"bbRight":1782},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":324,"end":326},"doc_offset":{"start":1083,"end":1085},"block_offset":{"start":57,"end":59},"page_num":1,"text":"PA","position":{"top":488,"bottom":537,"left":1793,"right":1846,"bbTop":488,"bbBot":537,"bbLeft":1793,"bbRight":1846},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":327,"end":332},"doc_offset":{"start":1086,"end":1091},"block_offset":{"start":60,"end":65},"page_num":1,"text":"18640","position":{"top":488,"bottom":535,"left":1879,"right":1991,"bbTop":488,"bbBot":535,"bbLeft":1879,"bbRight":1991},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":333,"end":336},"doc_offset":{"start":1092,"end":1095},"block_offset":{"start":0,"end":3},"page_num":1,"text":"P/O","position":{"top":737,"bottom":772,"left":128,"right":179,"bbTop":737,"bbBot":772,"bbLeft":128,"bbRight":179},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":337,"end":341},"doc_offset":{"start":1096,"end":1100},"block_offset":{"start":4,"end":8},"page_num":1,"text":"DATE","position":{"top":737,"bottom":772,"left":194,"right":282,"bbTop":737,"bbBot":772,"bbLeft":194,"bbRight":282},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":342,"end":347},"doc_offset":{"start":1101,"end":1106},"block_offset":{"start":9,"end":14},"page_num":1,"text":"BUYER","position":{"top":737,"bottom":772,"left":365,"right":475,"bbTop":737,"bbBot":772,"bbLeft":365,"bbRight":475},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":348,"end":353},"doc_offset":{"start":1107,"end":1112},"block_offset":{"start":15,"end":20},"page_num":1,"text":"86847","position":{"top":740,"bottom":777,"left":750,"right":856,"bbTop":740,"bbBot":777,"bbLeft":750,"bbRight":856},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":354,"end":361},"doc_offset":{"start":1113,"end":1120},"block_offset":{"start":21,"end":28},"page_num":1,"text":"CONTACT","position":{"top":736,"bottom":772,"left":885,"right":1048,"bbTop":736,"bbBot":772,"bbLeft":885,"bbRight":1048},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":362,"end":368},"doc_offset":{"start":1121,"end":1127},"block_offset":{"start":29,"end":35},"page_num":1,"text":"F.O.B.","position":{"top":737,"bottom":772,"left":1628,"right":1730,"bbTop":737,"bbBot":772,"bbLeft":1628,"bbRight":1730},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":369,"end":377},"doc_offset":{"start":1128,"end":1136},"block_offset":{"start":36,"end":44},"page_num":1,"text":"06/16/21","position":{"top":779,"bottom":819,"left":128,"right":287,"bbTop":779,"bbBot":819,"bbLeft":128,"bbRight":287},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":378,"end":386},"doc_offset":{"start":1137,"end":1145},"block_offset":{"start":45,"end":53},"page_num":1,"text":"Michelle","position":{"top":780,"bottom":816,"left":366,"right":505,"bbTop":780,"bbBot":816,"bbLeft":366,"bbRight":505},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":387,"end":391},"doc_offset":{"start":1146,"end":1150},"block_offset":{"start":54,"end":58},"page_num":1,"text":"Amos","position":{"top":780,"bottom":816,"left":518,"right":614,"bbTop":780,"bbBot":816,"bbLeft":518,"bbRight":614},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":392,"end":400},"doc_offset":{"start":1151,"end":1159},"block_offset":{"start":59,"end":67},"page_num":1,"text":"DENTSPLY","position":{"top":776,"bottom":816,"left":883,"right":1101,"bbTop":776,"bbBot":816,"bbLeft":883,"bbRight":1101},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":401,"end":414},"doc_offset":{"start":1160,"end":1173},"block_offset":{"start":68,"end":81},"page_num":1,"text":"CAULK(110900)","position":{"top":774,"bottom":822,"left":1114,"right":1422,"bbTop":774,"bbBot":822,"bbLeft":1114,"bbRight":1422},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":416,"end":420},"doc_offset":{"start":1175,"end":1179},"block_offset":{"start":83,"end":87},"page_num":1,"text":"SHIP","position":{"top":832,"bottom":866,"left":130,"right":201,"bbTop":832,"bbBot":866,"bbLeft":130,"bbRight":201},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":421,"end":424},"doc_offset":{"start":1180,"end":1183},"block_offset":{"start":88,"end":91},"page_num":1,"text":"VIA","position":{"top":830,"bottom":867,"left":216,"right":266,"bbTop":830,"bbBot":867,"bbLeft":216,"bbRight":266},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":426,"end":432},"doc_offset":{"start":1185,"end":1191},"block_offset":{"start":93,"end":99},"page_num":1,"text":"VENDOR","position":{"top":829,"bottom":867,"left":883,"right":1022,"bbTop":829,"bbBot":867,"bbLeft":883,"bbRight":1022},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":433,"end":436},"doc_offset":{"start":1192,"end":1195},"block_offset":{"start":100,"end":103},"page_num":1,"text":"FAX","position":{"top":829,"bottom":867,"left":1035,"right":1103,"bbTop":829,"bbBot":867,"bbLeft":1035,"bbRight":1103},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":437,"end":443},"doc_offset":{"start":1196,"end":1202},"block_offset":{"start":104,"end":110},"page_num":1,"text":"NUMBER","position":{"top":830,"bottom":867,"left":1111,"right":1252,"bbTop":830,"bbBot":867,"bbLeft":1111,"bbRight":1252},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":444,"end":451},"doc_offset":{"start":1203,"end":1210},"block_offset":{"start":111,"end":118},"page_num":1,"text":"PAYMENT","position":{"top":830,"bottom":867,"left":1627,"right":1793,"bbTop":830,"bbBot":867,"bbLeft":1627,"bbRight":1793},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":452,"end":457},"doc_offset":{"start":1211,"end":1216},"block_offset":{"start":119,"end":124},"page_num":1,"text":"TERMS","position":{"top":830,"bottom":867,"left":1803,"right":1918,"bbTop":830,"bbBot":867,"bbLeft":1803,"bbRight":1918},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":458,"end":463},"doc_offset":{"start":1217,"end":1222},"block_offset":{"start":125,"end":130},"page_num":1,"text":"TRUCK","position":{"top":879,"bottom":919,"left":133,"right":265,"bbTop":879,"bbBot":919,"bbLeft":133,"bbRight":265},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":465,"end":478},"doc_offset":{"start":1224,"end":1237},"block_offset":{"start":132,"end":145},"page_num":1,"text":"1800-788-4110","position":{"top":886,"bottom":929,"left":886,"right":1163,"bbTop":886,"bbBot":929,"bbLeft":886,"bbRight":1163},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":479,"end":482},"doc_offset":{"start":1238,"end":1241},"block_offset":{"start":146,"end":149},"page_num":1,"text":"NET","position":{"top":886,"bottom":929,"left":1624,"right":1709,"bbTop":886,"bbBot":929,"bbLeft":1624,"bbRight":1709},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":483,"end":485},"doc_offset":{"start":1242,"end":1244},"block_offset":{"start":150,"end":152},"page_num":1,"text":"30","position":{"top":886,"bottom":929,"left":1720,"right":1766,"bbTop":886,"bbBot":929,"bbLeft":1720,"bbRight":1766},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":486,"end":490},"doc_offset":{"start":1245,"end":1249},"block_offset":{"start":153,"end":157},"page_num":1,"text":"DAYS","position":{"top":886,"bottom":929,"left":1777,"right":1889,"bbTop":886,"bbBot":929,"bbLeft":1777,"bbRight":1889},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":491,"end":499},"doc_offset":{"start":1250,"end":1258},"block_offset":{"start":0,"end":8},"page_num":1,"text":"QUANTITY","position":{"top":962,"bottom":996,"left":140,"right":309,"bbTop":962,"bbBot":996,"bbLeft":140,"bbRight":309},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":500,"end":507},"doc_offset":{"start":1259,"end":1266},"block_offset":{"start":9,"end":16},"page_num":1,"text":"PRODUCT","position":{"top":961,"bottom":999,"left":363,"right":528,"bbTop":961,"bbBot":999,"bbLeft":363,"bbRight":528},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":508,"end":509},"doc_offset":{"start":1267,"end":1268},"block_offset":{"start":17,"end":18},"page_num":1,"text":"/","position":{"top":959,"bottom":999,"left":537,"right":548,"bbTop":959,"bbBot":999,"bbLeft":537,"bbRight":548},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":510,"end":521},"doc_offset":{"start":1269,"end":1280},"block_offset":{"start":19,"end":30},"page_num":1,"text":"DESCRIPTION","position":{"top":959,"bottom":999,"left":557,"right":779,"bbTop":959,"bbBot":999,"bbLeft":557,"bbRight":779},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":522,"end":526},"doc_offset":{"start":1281,"end":1285},"block_offset":{"start":31,"end":35},"page_num":1,"text":"COST","position":{"top":962,"bottom":995,"left":1630,"right":1723,"bbTop":962,"bbBot":995,"bbLeft":1630,"bbRight":1723},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":527,"end":530},"doc_offset":{"start":1286,"end":1289},"block_offset":{"start":36,"end":39},"page_num":1,"text":"U/M","position":{"top":962,"bottom":996,"left":1882,"right":1932,"bbTop":962,"bbBot":996,"bbLeft":1882,"bbRight":1932},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":531,"end":540},"doc_offset":{"start":1290,"end":1299},"block_offset":{"start":40,"end":49},"page_num":1,"text":"EXTENSION","position":{"top":963,"bottom":996,"left":2131,"right":2319,"bbTop":963,"bbBot":996,"bbLeft":2131,"bbRight":2319},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":542,"end":544},"doc_offset":{"start":1301,"end":1303},"block_offset":{"start":51,"end":53},"page_num":1,"text":"60","position":{"top":1048,"bottom":1088,"left":283,"right":329,"bbTop":1048,"bbBot":1088,"bbLeft":283,"bbRight":329},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":545,"end":551},"doc_offset":{"start":1304,"end":1310},"block_offset":{"start":54,"end":60},"page_num":1,"text":"605220","position":{"top":1048,"bottom":1089,"left":359,"right":499,"bbTop":1048,"bbBot":1089,"bbLeft":359,"bbRight":499},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":552,"end":560},"doc_offset":{"start":1311,"end":1319},"block_offset":{"start":61,"end":69},"page_num":1,"text":"JELTRATE","position":{"top":1097,"bottom":1141,"left":398,"right":603,"bbTop":1097,"bbBot":1141,"bbLeft":398,"bbRight":603},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":561,"end":569},"doc_offset":{"start":1320,"end":1328},"block_offset":{"start":70,"end":78},"page_num":1,"text":"DUSTLESS","position":{"top":1095,"bottom":1141,"left":618,"right":838,"bbTop":1095,"bbBot":1141,"bbLeft":618,"bbRight":838},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":570,"end":574},"doc_offset":{"start":1329,"end":1333},"block_offset":{"start":79,"end":83},"page_num":1,"text":"FAST","position":{"top":1095,"bottom":1142,"left":849,"right":961,"bbTop":1095,"bbBot":1142,"bbLeft":849,"bbRight":961},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":575,"end":580},"doc_offset":{"start":1334,"end":1339},"block_offset":{"start":84,"end":89},"page_num":1,"text":"12.00","position":{"top":1049,"bottom":1089,"left":1700,"right":1799,"bbTop":1049,"bbBot":1089,"bbLeft":1700,"bbRight":1799},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":581,"end":583},"doc_offset":{"start":1340,"end":1342},"block_offset":{"start":90,"end":92},"page_num":1,"text":"EA","position":{"top":1048,"bottom":1087,"left":1889,"right":1941,"bbTop":1048,"bbBot":1087,"bbLeft":1889,"bbRight":1941},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":584,"end":590},"doc_offset":{"start":1343,"end":1349},"block_offset":{"start":93,"end":99},"page_num":1,"text":"720.00","position":{"top":1048,"bottom":1088,"left":2283,"right":2406,"bbTop":1048,"bbBot":1088,"bbLeft":2283,"bbRight":2406},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":592,"end":594},"doc_offset":{"start":1351,"end":1353},"block_offset":{"start":101,"end":103},"page_num":1,"text":"60","position":{"top":1195,"bottom":1237,"left":283,"right":329,"bbTop":1195,"bbBot":1237,"bbLeft":283,"bbRight":329},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":595,"end":601},"doc_offset":{"start":1354,"end":1360},"block_offset":{"start":104,"end":110},"page_num":1,"text":"608015","position":{"top":1195,"bottom":1237,"left":361,"right":499,"bbTop":1195,"bbBot":1237,"bbLeft":361,"bbRight":499},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":602,"end":610},"doc_offset":{"start":1361,"end":1369},"block_offset":{"start":111,"end":119},"page_num":1,"text":"JELTRATE","position":{"top":1241,"bottom":1290,"left":396,"right":603,"bbTop":1241,"bbBot":1290,"bbLeft":396,"bbRight":603},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":611,"end":616},"doc_offset":{"start":1370,"end":1375},"block_offset":{"start":120,"end":125},"page_num":1,"text":"SCOOP","position":{"top":1241,"bottom":1290,"left":620,"right":766,"bbTop":1241,"bbBot":1290,"bbLeft":620,"bbRight":766},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":617,"end":618},"doc_offset":{"start":1376,"end":1377},"block_offset":{"start":126,"end":127},"page_num":1,"text":"/","position":{"top":1241,"bottom":1291,"left":777,"right":789,"bbTop":1241,"bbBot":1291,"bbLeft":777,"bbRight":789},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":619,"end":626},"doc_offset":{"start":1378,"end":1385},"block_offset":{"start":128,"end":135},"page_num":1,"text":"MEASURE","position":{"top":1241,"bottom":1291,"left":800,"right":1008,"bbTop":1241,"bbBot":1291,"bbLeft":800,"bbRight":1008},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":627,"end":630},"doc_offset":{"start":1386,"end":1389},"block_offset":{"start":136,"end":139},"page_num":1,"text":"SET","position":{"top":1240,"bottom":1291,"left":1025,"right":1107,"bbTop":1240,"bbBot":1291,"bbLeft":1025,"bbRight":1107},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":631,"end":635},"doc_offset":{"start":1390,"end":1394},"block_offset":{"start":140,"end":144},"page_num":1,"text":"3.05","position":{"top":1197,"bottom":1237,"left":1720,"right":1800,"bbTop":1197,"bbBot":1237,"bbLeft":1720,"bbRight":1800},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":636,"end":638},"doc_offset":{"start":1395,"end":1397},"block_offset":{"start":145,"end":147},"page_num":1,"text":"ST","position":{"top":1193,"bottom":1238,"left":1891,"right":1945,"bbTop":1193,"bbBot":1238,"bbLeft":1891,"bbRight":1945},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":639,"end":645},"doc_offset":{"start":1398,"end":1404},"block_offset":{"start":148,"end":154},"page_num":1,"text":"183.00","position":{"top":1195,"bottom":1236,"left":2286,"right":2408,"bbTop":1195,"bbBot":1236,"bbLeft":2286,"bbRight":2408},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":646,"end":651},"doc_offset":{"start":1405,"end":1410},"block_offset":{"start":0,"end":5},"page_num":1,"text":"TOTAL","position":{"top":2772,"bottom":2820,"left":1690,"right":1825,"bbTop":2772,"bbBot":2820,"bbLeft":1690,"bbRight":1825},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":652,"end":658},"doc_offset":{"start":1411,"end":1417},"block_offset":{"start":0,"end":6},"page_num":1,"text":"903.00","position":{"top":2777,"bottom":2818,"left":2150,"right":2276,"bbTop":2777,"bbBot":2818,"bbLeft":2150,"bbRight":2276},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":659,"end":662},"doc_offset":{"start":1418,"end":1421},"block_offset":{"start":7,"end":10},"page_num":1,"text":"The","position":{"top":2850,"bottom":2891,"left":118,"right":171,"bbTop":2850,"bbBot":2891,"bbLeft":118,"bbRight":171},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":663,"end":669},"doc_offset":{"start":1422,"end":1428},"block_offset":{"start":11,"end":17},"page_num":1,"text":"seller","position":{"top":2850,"bottom":2891,"left":180,"right":263,"bbTop":2850,"bbBot":2891,"bbLeft":180,"bbRight":263},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":670,"end":677},"doc_offset":{"start":1429,"end":1436},"block_offset":{"start":18,"end":25},"page_num":1,"text":"agrees,","position":{"top":2850,"bottom":2891,"left":272,"right":379,"bbTop":2850,"bbBot":2891,"bbLeft":272,"bbRight":379},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":678,"end":680},"doc_offset":{"start":1437,"end":1439},"block_offset":{"start":26,"end":28},"page_num":1,"text":"in","position":{"top":2850,"bottom":2891,"left":388,"right":416,"bbTop":2850,"bbBot":2891,"bbLeft":388,"bbRight":416},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":681,"end":691},"doc_offset":{"start":1440,"end":1450},"block_offset":{"start":29,"end":39},"page_num":1,"text":"connection","position":{"top":2850,"bottom":2891,"left":425,"right":587,"bbTop":2850,"bbBot":2891,"bbLeft":425,"bbRight":587},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":692,"end":696},"doc_offset":{"start":1451,"end":1455},"block_offset":{"start":40,"end":44},"page_num":1,"text":"with","position":{"top":2850,"bottom":2891,"left":595,"right":654,"bbTop":2850,"bbBot":2891,"bbLeft":595,"bbRight":654},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":697,"end":700},"doc_offset":{"start":1456,"end":1459},"block_offset":{"start":45,"end":48},"page_num":1,"text":"the","position":{"top":2850,"bottom":2891,"left":663,"right":710,"bbTop":2850,"bbBot":2891,"bbLeft":663,"bbRight":710},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":701,"end":712},"doc_offset":{"start":1460,"end":1471},"block_offset":{"start":49,"end":60},"page_num":1,"text":"performance","position":{"top":2850,"bottom":2891,"left":719,"right":906,"bbTop":2850,"bbBot":2891,"bbLeft":719,"bbRight":906},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":713,"end":715},"doc_offset":{"start":1472,"end":1474},"block_offset":{"start":61,"end":63},"page_num":1,"text":"of","position":{"top":2850,"bottom":2891,"left":915,"right":945,"bbTop":2850,"bbBot":2891,"bbLeft":915,"bbRight":945},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":716,"end":720},"doc_offset":{"start":1475,"end":1479},"block_offset":{"start":64,"end":68},"page_num":1,"text":"work","position":{"top":2850,"bottom":2891,"left":954,"right":1025,"bbTop":2850,"bbBot":2891,"bbLeft":954,"bbRight":1025},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":721,"end":726},"doc_offset":{"start":1480,"end":1485},"block_offset":{"start":69,"end":74},"page_num":1,"text":"under","position":{"top":2850,"bottom":2891,"left":1034,"right":1117,"bbTop":2850,"bbBot":2891,"bbLeft":1034,"bbRight":1117},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":727,"end":731},"doc_offset":{"start":1486,"end":1490},"block_offset":{"start":75,"end":79},"page_num":1,"text":"this","position":{"top":2850,"bottom":2891,"left":1126,"right":1179,"bbTop":2850,"bbBot":2891,"bbLeft":1126,"bbRight":1179},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":732,"end":738},"doc_offset":{"start":1491,"end":1497},"block_offset":{"start":80,"end":86},"page_num":1,"text":"order,","position":{"top":2850,"bottom":2891,"left":1187,"right":1276,"bbTop":2850,"bbBot":2891,"bbLeft":1187,"bbRight":1276},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":739,"end":742},"doc_offset":{"start":1498,"end":1501},"block_offset":{"start":87,"end":90},"page_num":1,"text":"not","position":{"top":2850,"bottom":2891,"left":1285,"right":1329,"bbTop":2850,"bbBot":2891,"bbLeft":1285,"bbRight":1329},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":743,"end":745},"doc_offset":{"start":1502,"end":1504},"block_offset":{"start":91,"end":93},"page_num":1,"text":"to","position":{"top":2850,"bottom":2891,"left":1338,"right":1370,"bbTop":2850,"bbBot":2891,"bbLeft":1338,"bbRight":1370},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":746,"end":758},"doc_offset":{"start":1505,"end":1517},"block_offset":{"start":94,"end":106},"page_num":1,"text":"discriminate","position":{"top":2850,"bottom":2891,"left":1379,"right":1558,"bbTop":2850,"bbBot":2891,"bbLeft":1379,"bbRight":1558},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":759,"end":766},"doc_offset":{"start":1518,"end":1525},"block_offset":{"start":107,"end":114},"page_num":1,"text":"against","position":{"top":2850,"bottom":2891,"left":1567,"right":1674,"bbTop":2850,"bbBot":2891,"bbLeft":1567,"bbRight":1674},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":767,"end":770},"doc_offset":{"start":1526,"end":1529},"block_offset":{"start":115,"end":118},"page_num":1,"text":"any","position":{"top":2850,"bottom":2891,"left":1683,"right":1736,"bbTop":2850,"bbBot":2891,"bbLeft":1683,"bbRight":1736},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":771,"end":779},"doc_offset":{"start":1530,"end":1538},"block_offset":{"start":119,"end":127},"page_num":1,"text":"employee","position":{"top":2850,"bottom":2891,"left":1744,"right":1891,"bbTop":2850,"bbBot":2891,"bbLeft":1744,"bbRight":1891},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":780,"end":782},"doc_offset":{"start":1539,"end":1541},"block_offset":{"start":128,"end":130},"page_num":1,"text":"or","position":{"top":2851,"bottom":2891,"left":1898,"right":1931,"bbTop":2851,"bbBot":2891,"bbLeft":1898,"bbRight":1931},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":783,"end":792},"doc_offset":{"start":1542,"end":1551},"block_offset":{"start":131,"end":140},"page_num":1,"text":"applicant","position":{"top":2851,"bottom":2891,"left":1939,"right":2071,"bbTop":2851,"bbBot":2891,"bbLeft":1939,"bbRight":2071},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":793,"end":796},"doc_offset":{"start":1552,"end":1555},"block_offset":{"start":141,"end":144},"page_num":1,"text":"for","position":{"top":2851,"bottom":2891,"left":2078,"right":2118,"bbTop":2851,"bbBot":2891,"bbLeft":2078,"bbRight":2118},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":797,"end":807},"doc_offset":{"start":1556,"end":1566},"block_offset":{"start":145,"end":155},"page_num":1,"text":"employment","position":{"top":2851,"bottom":2890,"left":2127,"right":2313,"bbTop":2851,"bbBot":2890,"bbLeft":2127,"bbRight":2313},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":808,"end":815},"doc_offset":{"start":1567,"end":1574},"block_offset":{"start":156,"end":163},"page_num":1,"text":"because","position":{"top":2894,"bottom":2936,"left":114,"right":239,"bbTop":2894,"bbBot":2936,"bbLeft":114,"bbRight":239},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":816,"end":818},"doc_offset":{"start":1575,"end":1577},"block_offset":{"start":164,"end":166},"page_num":1,"text":"of","position":{"top":2894,"bottom":2936,"left":249,"right":277,"bbTop":2894,"bbBot":2936,"bbLeft":249,"bbRight":277},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":819,"end":822},"doc_offset":{"start":1578,"end":1581},"block_offset":{"start":167,"end":170},"page_num":1,"text":"any","position":{"top":2894,"bottom":2936,"left":287,"right":339,"bbTop":2894,"bbBot":2936,"bbLeft":287,"bbRight":339},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":823,"end":828},"doc_offset":{"start":1582,"end":1587},"block_offset":{"start":171,"end":176},"page_num":1,"text":"race,","position":{"top":2894,"bottom":2936,"left":349,"right":424,"bbTop":2894,"bbBot":2936,"bbLeft":349,"bbRight":424},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":829,"end":833},"doc_offset":{"start":1588,"end":1592},"block_offset":{"start":177,"end":181},"page_num":1,"text":"sex,","position":{"top":2894,"bottom":2936,"left":434,"right":491,"bbTop":2894,"bbBot":2936,"bbLeft":434,"bbRight":491},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":834,"end":843},"doc_offset":{"start":1593,"end":1602},"block_offset":{"start":182,"end":191},"page_num":1,"text":"religion,","position":{"top":2894,"bottom":2936,"left":501,"right":618,"bbTop":2894,"bbBot":2936,"bbLeft":501,"bbRight":618},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":844,"end":850},"doc_offset":{"start":1603,"end":1609},"block_offset":{"start":192,"end":198},"page_num":1,"text":"color,","position":{"top":2894,"bottom":2936,"left":628,"right":709,"bbTop":2894,"bbBot":2936,"bbLeft":628,"bbRight":709},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":851,"end":859},"doc_offset":{"start":1610,"end":1618},"block_offset":{"start":199,"end":207},"page_num":1,"text":"national","position":{"top":2894,"bottom":2936,"left":717,"right":838,"bbTop":2894,"bbBot":2936,"bbLeft":717,"bbRight":838},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":860,"end":867},"doc_offset":{"start":1619,"end":1626},"block_offset":{"start":208,"end":215},"page_num":1,"text":"origin,","position":{"top":2894,"bottom":2936,"left":848,"right":935,"bbTop":2894,"bbBot":2936,"bbLeft":848,"bbRight":935},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":868,"end":878},"doc_offset":{"start":1627,"end":1637},"block_offset":{"start":216,"end":226},"page_num":1,"text":"disability","position":{"top":2894,"bottom":2936,"left":945,"right":1074,"bbTop":2894,"bbBot":2936,"bbLeft":945,"bbRight":1074},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":879,"end":881},"doc_offset":{"start":1638,"end":1640},"block_offset":{"start":227,"end":229},"page_num":1,"text":"or","position":{"top":2894,"bottom":2936,"left":1083,"right":1114,"bbTop":2894,"bbBot":2936,"bbLeft":1083,"bbRight":1114},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":882,"end":888},"doc_offset":{"start":1641,"end":1647},"block_offset":{"start":230,"end":236},"page_num":1,"text":"status","position":{"top":2894,"bottom":2936,"left":1123,"right":1211,"bbTop":2894,"bbBot":2936,"bbLeft":1123,"bbRight":1211},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":889,"end":891},"doc_offset":{"start":1648,"end":1650},"block_offset":{"start":237,"end":239},"page_num":1,"text":"as","position":{"top":2894,"bottom":2936,"left":1220,"right":1257,"bbTop":2894,"bbBot":2936,"bbLeft":1220,"bbRight":1257},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":892,"end":893},"doc_offset":{"start":1651,"end":1652},"block_offset":{"start":240,"end":241},"page_num":1,"text":"a","position":{"top":2894,"bottom":2936,"left":1267,"right":1282,"bbTop":2894,"bbBot":2936,"bbLeft":1267,"bbRight":1282},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":894,"end":902},"doc_offset":{"start":1653,"end":1661},"block_offset":{"start":242,"end":250},"page_num":1,"text":"disabled","position":{"top":2894,"bottom":2936,"left":1292,"right":1418,"bbTop":2894,"bbBot":2936,"bbLeft":1292,"bbRight":1418},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":903,"end":910},"doc_offset":{"start":1662,"end":1669},"block_offset":{"start":251,"end":258},"page_num":1,"text":"veteran","position":{"top":2894,"bottom":2936,"left":1426,"right":1537,"bbTop":2894,"bbBot":2936,"bbLeft":1426,"bbRight":1537},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":911,"end":913},"doc_offset":{"start":1670,"end":1672},"block_offset":{"start":259,"end":261},"page_num":1,"text":"or","position":{"top":2894,"bottom":2936,"left":1545,"right":1577,"bbTop":2894,"bbBot":2936,"bbLeft":1545,"bbRight":1577},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":914,"end":921},"doc_offset":{"start":1673,"end":1680},"block_offset":{"start":262,"end":269},"page_num":1,"text":"veteran","position":{"top":2894,"bottom":2936,"left":1587,"right":1697,"bbTop":2894,"bbBot":2936,"bbLeft":1587,"bbRight":1697},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":922,"end":924},"doc_offset":{"start":1681,"end":1683},"block_offset":{"start":270,"end":272},"page_num":1,"text":"of","position":{"top":2894,"bottom":2936,"left":1706,"right":1731,"bbTop":2894,"bbBot":2936,"bbLeft":1706,"bbRight":1731},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":925,"end":928},"doc_offset":{"start":1684,"end":1687},"block_offset":{"start":273,"end":276},"page_num":1,"text":"the","position":{"top":2894,"bottom":2936,"left":1740,"right":1792,"bbTop":2894,"bbBot":2936,"bbLeft":1740,"bbRight":1792},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":929,"end":936},"doc_offset":{"start":1688,"end":1695},"block_offset":{"start":277,"end":284},"page_num":1,"text":"Vietnam","position":{"top":2894,"bottom":2936,"left":1800,"right":1913,"bbTop":2894,"bbBot":2936,"bbLeft":1800,"bbRight":1913},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":937,"end":941},"doc_offset":{"start":1696,"end":1700},"block_offset":{"start":285,"end":289},"page_num":1,"text":"era.","position":{"top":2894,"bottom":2936,"left":1929,"right":1989,"bbTop":2894,"bbBot":2936,"bbLeft":1929,"bbRight":1989},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":942,"end":948},"doc_offset":{"start":1701,"end":1707},"block_offset":{"start":290,"end":296},"page_num":1,"text":"Unless","position":{"top":2894,"bottom":2934,"left":1998,"right":2097,"bbTop":2894,"bbBot":2934,"bbLeft":1998,"bbRight":2097},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":949,"end":958},"doc_offset":{"start":1708,"end":1717},"block_offset":{"start":297,"end":306},"page_num":1,"text":"exempted,","position":{"top":2894,"bottom":2934,"left":2105,"right":2263,"bbTop":2894,"bbBot":2934,"bbLeft":2105,"bbRight":2263},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":959,"end":966},"doc_offset":{"start":1718,"end":1725},"block_offset":{"start":307,"end":314},"page_num":1,"text":"Section","position":{"top":2939,"bottom":2980,"left":116,"right":226,"bbTop":2939,"bbBot":2980,"bbLeft":116,"bbRight":226},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":967,"end":971},"doc_offset":{"start":1726,"end":1730},"block_offset":{"start":315,"end":319},"page_num":1,"text":"202,","position":{"top":2939,"bottom":2980,"left":236,"right":297,"bbTop":2939,"bbBot":2980,"bbLeft":236,"bbRight":297},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":972,"end":982},"doc_offset":{"start":1731,"end":1741},"block_offset":{"start":320,"end":330},"page_num":1,"text":"paragraphs","position":{"top":2939,"bottom":2980,"left":308,"right":481,"bbTop":2939,"bbBot":2980,"bbLeft":308,"bbRight":481},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":983,"end":984},"doc_offset":{"start":1742,"end":1743},"block_offset":{"start":331,"end":332},"page_num":1,"text":"1","position":{"top":2939,"bottom":2980,"left":491,"right":504,"bbTop":2939,"bbBot":2980,"bbLeft":491,"bbRight":504},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":985,"end":992},"doc_offset":{"start":1744,"end":1751},"block_offset":{"start":333,"end":340},"page_num":1,"text":"through","position":{"top":2939,"bottom":2980,"left":512,"right":627,"bbTop":2939,"bbBot":2980,"bbLeft":512,"bbRight":627},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":993,"end":994},"doc_offset":{"start":1752,"end":1753},"block_offset":{"start":341,"end":342},"page_num":1,"text":"7","position":{"top":2939,"bottom":2980,"left":638,"right":654,"bbTop":2939,"bbBot":2980,"bbLeft":638,"bbRight":654},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":995,"end":997},"doc_offset":{"start":1754,"end":1756},"block_offset":{"start":343,"end":345},"page_num":1,"text":"of","position":{"top":2939,"bottom":2980,"left":664,"right":693,"bbTop":2939,"bbBot":2980,"bbLeft":664,"bbRight":693},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":998,"end":1007},"doc_offset":{"start":1757,"end":1766},"block_offset":{"start":346,"end":355},"page_num":1,"text":"Executive","position":{"top":2939,"bottom":2980,"left":703,"right":846,"bbTop":2939,"bbBot":2980,"bbLeft":703,"bbRight":846},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1008,"end":1013},"doc_offset":{"start":1767,"end":1772},"block_offset":{"start":356,"end":361},"page_num":1,"text":"Order","position":{"top":2939,"bottom":2980,"left":856,"right":945,"bbTop":2939,"bbBot":2980,"bbLeft":856,"bbRight":945},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1014,"end":1020},"doc_offset":{"start":1773,"end":1779},"block_offset":{"start":362,"end":368},"page_num":1,"text":"11246,","position":{"top":2939,"bottom":2980,"left":955,"right":1052,"bbTop":2939,"bbBot":2980,"bbLeft":955,"bbRight":1052},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1021,"end":1023},"doc_offset":{"start":1780,"end":1782},"block_offset":{"start":369,"end":371},"page_num":1,"text":"as","position":{"top":2939,"bottom":2980,"left":1061,"right":1098,"bbTop":2939,"bbBot":2980,"bbLeft":1061,"bbRight":1098},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1024,"end":1032},"doc_offset":{"start":1783,"end":1791},"block_offset":{"start":372,"end":380},"page_num":1,"text":"amended,","position":{"top":2939,"bottom":2980,"left":1108,"right":1254,"bbTop":2939,"bbBot":2980,"bbLeft":1108,"bbRight":1254},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1033,"end":1036},"doc_offset":{"start":1792,"end":1795},"block_offset":{"start":381,"end":384},"page_num":1,"text":"and","position":{"top":2939,"bottom":2980,"left":1264,"right":1317,"bbTop":2939,"bbBot":2980,"bbLeft":1264,"bbRight":1317},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1037,"end":1040},"doc_offset":{"start":1796,"end":1799},"block_offset":{"start":385,"end":388},"page_num":1,"text":"the","position":{"top":2939,"bottom":2980,"left":1328,"right":1376,"bbTop":2939,"bbBot":2980,"bbLeft":1328,"bbRight":1376},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1041,"end":1052},"doc_offset":{"start":1800,"end":1811},"block_offset":{"start":389,"end":400},"page_num":1,"text":"affirmative","position":{"top":2939,"bottom":2980,"left":1385,"right":1538,"bbTop":2939,"bbBot":2980,"bbLeft":1385,"bbRight":1538},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1053,"end":1059},"doc_offset":{"start":1812,"end":1818},"block_offset":{"start":401,"end":407},"page_num":1,"text":"action","position":{"top":2939,"bottom":2980,"left":1547,"right":1637,"bbTop":2939,"bbBot":2980,"bbLeft":1547,"bbRight":1637},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1060,"end":1067},"doc_offset":{"start":1819,"end":1826},"block_offset":{"start":408,"end":415},"page_num":1,"text":"clauses","position":{"top":2939,"bottom":2980,"left":1646,"right":1760,"bbTop":2939,"bbBot":2980,"bbLeft":1646,"bbRight":1760},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1068,"end":1070},"doc_offset":{"start":1827,"end":1829},"block_offset":{"start":416,"end":418},"page_num":1,"text":"as","position":{"top":2939,"bottom":2980,"left":1769,"right":1803,"bbTop":2939,"bbBot":2980,"bbLeft":1769,"bbRight":1803},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1071,"end":1074},"doc_offset":{"start":1830,"end":1833},"block_offset":{"start":419,"end":422},"page_num":1,"text":"set","position":{"top":2939,"bottom":2980,"left":1812,"right":1856,"bbTop":2939,"bbBot":2980,"bbLeft":1812,"bbRight":1856},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1075,"end":1080},"doc_offset":{"start":1834,"end":1839},"block_offset":{"start":423,"end":428},"page_num":1,"text":"forth","position":{"top":2939,"bottom":2980,"left":1865,"right":1929,"bbTop":2939,"bbBot":2980,"bbLeft":1865,"bbRight":1929},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1081,"end":1083},"doc_offset":{"start":1840,"end":1842},"block_offset":{"start":429,"end":431},"page_num":1,"text":"in","position":{"top":2939,"bottom":2980,"left":1938,"right":1968,"bbTop":2939,"bbBot":2980,"bbLeft":1938,"bbRight":1968},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1084,"end":1086},"doc_offset":{"start":1843,"end":1845},"block_offset":{"start":432,"end":434},"page_num":1,"text":"41","position":{"top":2939,"bottom":2980,"left":1976,"right":2015,"bbTop":2939,"bbBot":2980,"bbLeft":1976,"bbRight":2015},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1087,"end":1093},"doc_offset":{"start":1846,"end":1852},"block_offset":{"start":435,"end":441},"page_num":1,"text":"C.F.R.","position":{"top":2939,"bottom":2980,"left":2024,"right":2120,"bbTop":2939,"bbBot":2980,"bbLeft":2024,"bbRight":2120},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1094,"end":1102},"doc_offset":{"start":1853,"end":1861},"block_offset":{"start":442,"end":450},"page_num":1,"text":"60-741.4","position":{"top":2939,"bottom":2980,"left":2127,"right":2259,"bbTop":2939,"bbBot":2980,"bbLeft":2127,"bbRight":2259},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1103,"end":1107},"doc_offset":{"start":1862,"end":1866},"block_offset":{"start":451,"end":455},"page_num":1,"text":"(for","position":{"top":2939,"bottom":2979,"left":2267,"right":2326,"bbTop":2939,"bbBot":2979,"bbLeft":2267,"bbRight":2326},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1108,"end":1117},"doc_offset":{"start":1867,"end":1876},"block_offset":{"start":456,"end":465},"page_num":1,"text":"contracts","position":{"top":2986,"bottom":3024,"left":114,"right":247,"bbTop":2986,"bbBot":3024,"bbLeft":114,"bbRight":247},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1118,"end":1120},"doc_offset":{"start":1877,"end":1879},"block_offset":{"start":466,"end":468},"page_num":1,"text":"of","position":{"top":2984,"bottom":3026,"left":257,"right":287,"bbTop":2984,"bbBot":3026,"bbLeft":257,"bbRight":287},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1121,"end":1127},"doc_offset":{"start":1880,"end":1886},"block_offset":{"start":469,"end":475},"page_num":1,"text":"$2,500","position":{"top":2984,"bottom":3026,"left":296,"right":398,"bbTop":2984,"bbBot":3026,"bbLeft":296,"bbRight":398},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1128,"end":1130},"doc_offset":{"start":1887,"end":1889},"block_offset":{"start":476,"end":478},"page_num":1,"text":"or","position":{"top":2984,"bottom":3026,"left":406,"right":434,"bbTop":2984,"bbBot":3026,"bbLeft":406,"bbRight":434},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1131,"end":1136},"doc_offset":{"start":1890,"end":1895},"block_offset":{"start":479,"end":484},"page_num":1,"text":"more)","position":{"top":2984,"bottom":3026,"left":444,"right":534,"bbTop":2984,"bbBot":3026,"bbLeft":444,"bbRight":534},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1137,"end":1140},"doc_offset":{"start":1896,"end":1899},"block_offset":{"start":485,"end":488},"page_num":1,"text":"and","position":{"top":2984,"bottom":3026,"left":542,"right":597,"bbTop":2984,"bbBot":3026,"bbLeft":542,"bbRight":597},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1141,"end":1143},"doc_offset":{"start":1900,"end":1902},"block_offset":{"start":489,"end":491},"page_num":1,"text":"41","position":{"top":2984,"bottom":3026,"left":607,"right":644,"bbTop":2984,"bbBot":3026,"bbLeft":607,"bbRight":644},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1144,"end":1150},"doc_offset":{"start":1903,"end":1909},"block_offset":{"start":492,"end":498},"page_num":1,"text":"C.F.R.","position":{"top":2984,"bottom":3026,"left":654,"right":750,"bbTop":2984,"bbBot":3026,"bbLeft":654,"bbRight":750},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1151,"end":1159},"doc_offset":{"start":1910,"end":1918},"block_offset":{"start":499,"end":507},"page_num":1,"text":"60-250.4","position":{"top":2983,"bottom":3026,"left":759,"right":889,"bbTop":2983,"bbBot":3026,"bbLeft":759,"bbRight":889},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1160,"end":1164},"doc_offset":{"start":1919,"end":1923},"block_offset":{"start":508,"end":512},"page_num":1,"text":"(for","position":{"top":2983,"bottom":3026,"left":898,"right":949,"bbTop":2983,"bbBot":3026,"bbLeft":898,"bbRight":949},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1165,"end":1174},"doc_offset":{"start":1924,"end":1933},"block_offset":{"start":513,"end":522},"page_num":1,"text":"contracts","position":{"top":2983,"bottom":3026,"left":959,"right":1094,"bbTop":2983,"bbBot":3026,"bbLeft":959,"bbRight":1094},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1175,"end":1177},"doc_offset":{"start":1934,"end":1936},"block_offset":{"start":523,"end":525},"page_num":1,"text":"of","position":{"top":2983,"bottom":3026,"left":1103,"right":1130,"bbTop":2983,"bbBot":3026,"bbLeft":1103,"bbRight":1130},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1178,"end":1185},"doc_offset":{"start":1937,"end":1944},"block_offset":{"start":526,"end":533},"page_num":1,"text":"$10,000","position":{"top":2983,"bottom":3026,"left":1138,"right":1260,"bbTop":2983,"bbBot":3026,"bbLeft":1138,"bbRight":1260},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1186,"end":1188},"doc_offset":{"start":1945,"end":1947},"block_offset":{"start":534,"end":536},"page_num":1,"text":"or","position":{"top":2983,"bottom":3027,"left":1269,"right":1299,"bbTop":2983,"bbBot":3027,"bbLeft":1269,"bbRight":1299},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1189,"end":1194},"doc_offset":{"start":1948,"end":1953},"block_offset":{"start":537,"end":542},"page_num":1,"text":"more)","position":{"top":2983,"bottom":3027,"left":1309,"right":1396,"bbTop":2983,"bbBot":3027,"bbLeft":1309,"bbRight":1396},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1195,"end":1198},"doc_offset":{"start":1954,"end":1957},"block_offset":{"start":543,"end":546},"page_num":1,"text":"and","position":{"top":2983,"bottom":3027,"left":1405,"right":1462,"bbTop":2983,"bbBot":3027,"bbLeft":1405,"bbRight":1462},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1199,"end":1201},"doc_offset":{"start":1958,"end":1960},"block_offset":{"start":547,"end":549},"page_num":1,"text":"41","position":{"top":2983,"bottom":3027,"left":1472,"right":1509,"bbTop":2983,"bbBot":3027,"bbLeft":1472,"bbRight":1509},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1202,"end":1208},"doc_offset":{"start":1961,"end":1967},"block_offset":{"start":550,"end":556},"page_num":1,"text":"C.F.R.","position":{"top":2983,"bottom":3027,"left":1519,"right":1613,"bbTop":2983,"bbBot":3027,"bbLeft":1519,"bbRight":1613},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1209,"end":1218},"doc_offset":{"start":1968,"end":1977},"block_offset":{"start":557,"end":566},"page_num":1,"text":"61-250.10","position":{"top":2984,"bottom":3027,"left":1621,"right":1773,"bbTop":2984,"bbBot":3027,"bbLeft":1621,"bbRight":1773},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1219,"end":1229},"doc_offset":{"start":1978,"end":1988},"block_offset":{"start":567,"end":577},"page_num":1,"text":"(requiring","position":{"top":2984,"bottom":3027,"left":1783,"right":1921,"bbTop":2984,"bbBot":3027,"bbLeft":1783,"bbRight":1921},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1230,"end":1233},"doc_offset":{"start":1989,"end":1992},"block_offset":{"start":578,"end":581},"page_num":1,"text":"the","position":{"top":2984,"bottom":3027,"left":1929,"right":1978,"bbTop":2984,"bbBot":3027,"bbLeft":1929,"bbRight":1978},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1234,"end":1240},"doc_offset":{"start":1993,"end":1999},"block_offset":{"start":582,"end":588},"page_num":1,"text":"annual","position":{"top":2984,"bottom":3027,"left":1988,"right":2087,"bbTop":2984,"bbBot":3027,"bbLeft":1988,"bbRight":2087},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1241,"end":1250},"doc_offset":{"start":2000,"end":2009},"block_offset":{"start":589,"end":598},"page_num":1,"text":"reporting","position":{"top":2986,"bottom":3027,"left":2095,"right":2229,"bbTop":2986,"bbBot":3027,"bbLeft":2095,"bbRight":2229},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1251,"end":1253},"doc_offset":{"start":2010,"end":2012},"block_offset":{"start":599,"end":601},"page_num":1,"text":"of","position":{"top":2986,"bottom":3027,"left":2237,"right":2270,"bbTop":2986,"bbBot":3027,"bbLeft":2237,"bbRight":2270},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1254,"end":1261},"doc_offset":{"start":2013,"end":2020},"block_offset":{"start":602,"end":609},"page_num":1,"text":"Vietnam","position":{"top":3030,"bottom":3069,"left":116,"right":229,"bbTop":3030,"bbBot":3069,"bbLeft":116,"bbRight":229},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1262,"end":1265},"doc_offset":{"start":2021,"end":2024},"block_offset":{"start":610,"end":613},"page_num":1,"text":"era","position":{"top":3029,"bottom":3070,"left":246,"right":295,"bbTop":3029,"bbBot":3070,"bbLeft":246,"bbRight":295},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1266,"end":1269},"doc_offset":{"start":2025,"end":2028},"block_offset":{"start":614,"end":617},"page_num":1,"text":"and","position":{"top":3029,"bottom":3072,"left":305,"right":359,"bbTop":3029,"bbBot":3072,"bbLeft":305,"bbRight":359},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1270,"end":1277},"doc_offset":{"start":2029,"end":2036},"block_offset":{"start":618,"end":625},"page_num":1,"text":"special","position":{"top":3029,"bottom":3072,"left":368,"right":472,"bbTop":3029,"bbBot":3072,"bbLeft":368,"bbRight":472},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1278,"end":1286},"doc_offset":{"start":2037,"end":2045},"block_offset":{"start":626,"end":634},"page_num":1,"text":"disabled","position":{"top":3029,"bottom":3072,"left":482,"right":605,"bbTop":3029,"bbBot":3072,"bbLeft":482,"bbRight":605},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1287,"end":1296},"doc_offset":{"start":2046,"end":2055},"block_offset":{"start":635,"end":644},"page_num":1,"text":"veterans)","position":{"top":3029,"bottom":3073,"left":616,"right":756,"bbTop":3029,"bbBot":3073,"bbLeft":616,"bbRight":756},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1297,"end":1300},"doc_offset":{"start":2056,"end":2059},"block_offset":{"start":645,"end":648},"page_num":1,"text":"are","position":{"top":3029,"bottom":3073,"left":765,"right":809,"bbTop":3029,"bbBot":3073,"bbLeft":765,"bbRight":809},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1301,"end":1313},"doc_offset":{"start":2060,"end":2072},"block_offset":{"start":649,"end":661},"page_num":1,"text":"incorporated","position":{"top":3029,"bottom":3072,"left":818,"right":1005,"bbTop":3029,"bbBot":3072,"bbLeft":818,"bbRight":1005},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1314,"end":1320},"doc_offset":{"start":2073,"end":2079},"block_offset":{"start":662,"end":668},"page_num":1,"text":"herein","position":{"top":3029,"bottom":3072,"left":1014,"right":1108,"bbTop":3029,"bbBot":3072,"bbLeft":1014,"bbRight":1108},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1321,"end":1323},"doc_offset":{"start":2080,"end":2082},"block_offset":{"start":669,"end":671},"page_num":1,"text":"by","position":{"top":3029,"bottom":3072,"left":1117,"right":1153,"bbTop":3029,"bbBot":3072,"bbLeft":1117,"bbRight":1153},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}},{"page_offset":{"start":1324,"end":1334},"doc_offset":{"start":2083,"end":2093},"block_offset":{"start":672,"end":682},"page_num":1,"text":"reference.","position":{"top":3030,"bottom":3070,"left":1161,"right":1315,"bbTop":3030,"bbBot":3070,"bbLeft":1161,"bbRight":1315},"style":{"bold":null,"italic":null,"underlined":null,"font_face":null,"background_color":null,"handwriting":false,"font_size":null,"text_color":null}}] \ No newline at end of file diff --git a/tests/data/etloutput/4725/111924/110239/tables_0.json b/tests/data/etloutput/4725/111924/110239/tables_0.json new file mode 100644 index 0000000..e474595 --- /dev/null +++ b/tests/data/etloutput/4725/111924/110239/tables_0.json @@ -0,0 +1 @@ +[{"page_num":0,"position":{"top":1107,"bottom":1464,"left":150,"right":2398},"num_rows":4,"num_columns":6,"cells":[{"position":{"top":1107,"bottom":1209,"left":150,"right":848},"text":"Item","rows":[0],"columns":[0],"cell_type":"header","doc_offsets":[{"start":285,"end":289}],"page_offsets":[{"start":285,"end":289}]},{"position":{"top":1107,"bottom":1209,"left":850,"right":1357},"text":"Billing Frequency","rows":[0],"columns":[1],"cell_type":"header","doc_offsets":[{"start":290,"end":307}],"page_offsets":[{"start":290,"end":307}]},{"position":{"top":1107,"bottom":1209,"left":1359,"right":1648},"text":"Start Date","rows":[0],"columns":[2],"cell_type":"header","doc_offsets":[{"start":308,"end":318}],"page_offsets":[{"start":308,"end":318}]},{"position":{"top":1107,"bottom":1209,"left":1648,"right":1910},"text":"End Date","rows":[0],"columns":[3],"cell_type":"header","doc_offsets":[{"start":319,"end":327}],"page_offsets":[{"start":319,"end":327}]},{"position":{"top":1107,"bottom":1209,"left":1910,"right":2139},"text":"Quantity","rows":[0],"columns":[4],"cell_type":"header","doc_offsets":[{"start":328,"end":336}],"page_offsets":[{"start":328,"end":336}]},{"position":{"top":1107,"bottom":1211,"left":2139,"right":2395},"text":"Line Total","rows":[0],"columns":[5],"cell_type":"header","doc_offsets":[{"start":337,"end":347}],"page_offsets":[{"start":337,"end":347}]},{"position":{"top":1209,"bottom":1295,"left":150,"right":848},"text":"HubSpot Enterprise","rows":[1],"columns":[0],"cell_type":"content","doc_offsets":[{"start":348,"end":366}],"page_offsets":[{"start":348,"end":366}]},{"position":{"top":1209,"bottom":1295,"left":848,"right":1357},"text":"Monthly","rows":[1],"columns":[1],"cell_type":"content","doc_offsets":[{"start":367,"end":374}],"page_offsets":[{"start":367,"end":374}]},{"position":{"top":1209,"bottom":1295,"left":1357,"right":1648},"text":"06/21/2016","rows":[1],"columns":[2],"cell_type":"content","doc_offsets":[{"start":375,"end":385}],"page_offsets":[{"start":375,"end":385}]},{"position":{"top":1209,"bottom":1295,"left":1648,"right":1910},"text":"07/20/2016","rows":[1],"columns":[3],"cell_type":"content","doc_offsets":[{"start":386,"end":396}],"page_offsets":[{"start":386,"end":396}]},{"position":{"top":1211,"bottom":1295,"left":1910,"right":2139},"text":"1","rows":[1],"columns":[4],"cell_type":"content","doc_offsets":[{"start":397,"end":398}],"page_offsets":[{"start":397,"end":398}]},{"position":{"top":1211,"bottom":1295,"left":2139,"right":2398},"text":"$1,200.00","rows":[1],"columns":[5],"cell_type":"content","doc_offsets":[{"start":399,"end":408}],"page_offsets":[{"start":399,"end":408}]},{"position":{"top":1295,"bottom":1378,"left":150,"right":848},"text":"Included Contacts","rows":[2],"columns":[0],"cell_type":"content","doc_offsets":[{"start":409,"end":426}],"page_offsets":[{"start":409,"end":426}]},{"position":{"top":1295,"bottom":1378,"left":848,"right":1357},"text":"Monthly","rows":[2],"columns":[1],"cell_type":"content","doc_offsets":[{"start":427,"end":434}],"page_offsets":[{"start":427,"end":434}]},{"position":{"top":1295,"bottom":1378,"left":1357,"right":1648},"text":"06/21/2016","rows":[2],"columns":[2],"cell_type":"content","doc_offsets":[{"start":435,"end":445}],"page_offsets":[{"start":435,"end":445}]},{"position":{"top":1295,"bottom":1378,"left":1648,"right":1910},"text":"07/20/2016","rows":[2],"columns":[3],"cell_type":"content","doc_offsets":[{"start":446,"end":456}],"page_offsets":[{"start":446,"end":456}]},{"position":{"top":1295,"bottom":1378,"left":1910,"right":2139},"text":"10","rows":[2],"columns":[4],"cell_type":"content","doc_offsets":[{"start":457,"end":459}],"page_offsets":[{"start":457,"end":459}]},{"position":{"top":1295,"bottom":1378,"left":2139,"right":2398},"text":"$0.00","rows":[2],"columns":[5],"cell_type":"content","doc_offsets":[{"start":460,"end":465}],"page_offsets":[{"start":460,"end":465}]},{"position":{"top":1378,"bottom":1464,"left":150,"right":848},"text":"Enterprise Contacts - Per 1000","rows":[3],"columns":[0],"cell_type":"content","doc_offsets":[{"start":466,"end":496}],"page_offsets":[{"start":466,"end":496}]},{"position":{"top":1378,"bottom":1464,"left":848,"right":1357},"text":"Monthly","rows":[3],"columns":[1],"cell_type":"content","doc_offsets":[{"start":497,"end":504}],"page_offsets":[{"start":497,"end":504}]},{"position":{"top":1378,"bottom":1464,"left":1357,"right":1648},"text":"06/21/2016","rows":[3],"columns":[2],"cell_type":"content","doc_offsets":[{"start":505,"end":515}],"page_offsets":[{"start":505,"end":515}]},{"position":{"top":1378,"bottom":1464,"left":1648,"right":1910},"text":"07/20/2016","rows":[3],"columns":[3],"cell_type":"content","doc_offsets":[{"start":516,"end":526}],"page_offsets":[{"start":516,"end":526}]},{"position":{"top":1378,"bottom":1464,"left":1910,"right":2139},"text":"5","rows":[3],"columns":[4],"cell_type":"content","doc_offsets":[{"start":527,"end":528}],"page_offsets":[{"start":527,"end":528}]},{"position":{"top":1378,"bottom":1464,"left":2139,"right":2398},"text":"$25.00","rows":[3],"columns":[5],"cell_type":"content","doc_offsets":[{"start":529,"end":535}],"page_offsets":[{"start":529,"end":535}]}],"doc_offsets":[{"start":285,"end":535}],"page_offsets":[{"start":285,"end":535}],"table_id":0,"table_offset":{"row":0,"column":0}}] \ No newline at end of file diff --git a/tests/data/etloutput/4725/111924/110239/tables_1.json b/tests/data/etloutput/4725/111924/110239/tables_1.json new file mode 100644 index 0000000..71f1e84 --- /dev/null +++ b/tests/data/etloutput/4725/111924/110239/tables_1.json @@ -0,0 +1 @@ +[{"page_num":1,"position":{"top":10,"bottom":244,"left":1604,"right":2313},"num_rows":4,"num_columns":2,"cells":[{"position":{"top":10,"bottom":68,"left":1605,"right":1840},"text":"P/O #","rows":[0],"columns":[0],"cell_type":"content","doc_offsets":[{"start":968,"end":973}],"page_offsets":[{"start":209,"end":214}]},{"position":{"top":10,"bottom":68,"left":1840,"right":2312},"text":"29111525","rows":[0],"columns":[1],"cell_type":"content","doc_offsets":[{"start":974,"end":982}],"page_offsets":[{"start":215,"end":223}]},{"position":{"top":68,"bottom":127,"left":1604,"right":1840},"text":"LOCATION","rows":[1],"columns":[0],"cell_type":"content","doc_offsets":[{"start":983,"end":991}],"page_offsets":[{"start":224,"end":232}]},{"position":{"top":68,"bottom":127,"left":1840,"right":2312},"text":"010","rows":[1],"columns":[1],"cell_type":"content","doc_offsets":[{"start":992,"end":995}],"page_offsets":[{"start":233,"end":236}]},{"position":{"top":127,"bottom":187,"left":1604,"right":1840},"text":"DATE","rows":[2],"columns":[0],"cell_type":"content","doc_offsets":[{"start":997,"end":1001}],"page_offsets":[{"start":238,"end":242}]},{"position":{"top":127,"bottom":187,"left":1840,"right":2312},"text":"06/16/21","rows":[2],"columns":[1],"cell_type":"content","doc_offsets":[{"start":1002,"end":1010}],"page_offsets":[{"start":243,"end":251}]},{"position":{"top":187,"bottom":244,"left":1604,"right":2313},"text":"PAGE 1 OF 1","rows":[3],"columns":[0,1],"cell_type":"content","doc_offsets":[{"start":1011,"end":1022}],"page_offsets":[{"start":252,"end":263}]}],"doc_offsets":[{"start":968,"end":1022}],"page_offsets":[{"start":209,"end":263}],"table_id":1,"table_offset":{"row":0,"column":0}},{"page_num":1,"position":{"top":729,"bottom":940,"left":96,"right":2430},"num_rows":4,"num_columns":4,"cells":[{"position":{"top":729,"bottom":775,"left":96,"right":325},"text":"P/O DATE","rows":[0],"columns":[0],"cell_type":"header","doc_offsets":[{"start":1092,"end":1100}],"page_offsets":[{"start":333,"end":341}]},{"position":{"top":729,"bottom":775,"left":325,"right":873},"text":"BUYER 86847","rows":[0],"columns":[1],"cell_type":"header","doc_offsets":[{"start":1101,"end":1112}],"page_offsets":[{"start":342,"end":353}]},{"position":{"top":729,"bottom":775,"left":873,"right":1617},"text":"CONTACT","rows":[0],"columns":[2],"cell_type":"header","doc_offsets":[{"start":1113,"end":1120}],"page_offsets":[{"start":354,"end":361}]},{"position":{"top":731,"bottom":775,"left":1617,"right":2430},"text":"F.O.B.","rows":[0],"columns":[3],"cell_type":"header","doc_offsets":[{"start":1121,"end":1127}],"page_offsets":[{"start":362,"end":368}]},{"position":{"top":775,"bottom":825,"left":96,"right":325},"text":"06/16/21","rows":[1],"columns":[0],"cell_type":"content","doc_offsets":[{"start":1128,"end":1136}],"page_offsets":[{"start":369,"end":377}]},{"position":{"top":775,"bottom":825,"left":325,"right":871},"text":"Michelle Amos","rows":[1],"columns":[1],"cell_type":"content","doc_offsets":[{"start":1137,"end":1150}],"page_offsets":[{"start":378,"end":391}]},{"position":{"top":775,"bottom":827,"left":873,"right":1614},"text":"DENTSPLY CAULK(110900)","rows":[1],"columns":[2],"cell_type":"content","doc_offsets":[{"start":1151,"end":1173}],"page_offsets":[{"start":392,"end":414}]},{"position":{"top":777,"bottom":827,"left":1617,"right":2430},"text":"","rows":[1],"columns":[3],"cell_type":"content","doc_offsets":[],"page_offsets":[]},{"position":{"top":825,"bottom":875,"left":96,"right":325},"text":"SHIP VIA","rows":[2],"columns":[0],"cell_type":"content","doc_offsets":[{"start":1175,"end":1183}],"page_offsets":[{"start":416,"end":424}]},{"position":{"top":827,"bottom":875,"left":325,"right":871},"text":"","rows":[2],"columns":[1],"cell_type":"content","doc_offsets":[],"page_offsets":[]},{"position":{"top":827,"bottom":875,"left":871,"right":1614},"text":"VENDOR FAX NUMBER","rows":[2],"columns":[2],"cell_type":"content","doc_offsets":[{"start":1185,"end":1202}],"page_offsets":[{"start":426,"end":443}]},{"position":{"top":827,"bottom":878,"left":1614,"right":2430},"text":"PAYMENT TERMS","rows":[2],"columns":[3],"cell_type":"content","doc_offsets":[{"start":1203,"end":1216}],"page_offsets":[{"start":444,"end":457}]},{"position":{"top":875,"bottom":940,"left":96,"right":325},"text":"TRUCK","rows":[3],"columns":[0],"cell_type":"content","doc_offsets":[{"start":1217,"end":1222}],"page_offsets":[{"start":458,"end":463}]},{"position":{"top":875,"bottom":940,"left":325,"right":871},"text":"","rows":[3],"columns":[1],"cell_type":"content","doc_offsets":[],"page_offsets":[]},{"position":{"top":878,"bottom":940,"left":871,"right":1614},"text":"1800-788-4110","rows":[3],"columns":[2],"cell_type":"content","doc_offsets":[{"start":1224,"end":1237}],"page_offsets":[{"start":465,"end":478}]},{"position":{"top":878,"bottom":940,"left":1614,"right":2430},"text":"NET 30 DAYS","rows":[3],"columns":[3],"cell_type":"content","doc_offsets":[{"start":1238,"end":1249}],"page_offsets":[{"start":479,"end":490}]}],"doc_offsets":[{"start":1092,"end":1249}],"page_offsets":[{"start":333,"end":490}],"table_id":2,"table_offset":{"row":0,"column":0}},{"page_num":1,"position":{"top":943,"bottom":1304,"left":99,"right":2437},"num_rows":3,"num_columns":5,"cells":[{"position":{"top":943,"bottom":1016,"left":99,"right":347},"text":"QUANTITY","rows":[0],"columns":[0],"cell_type":"header","doc_offsets":[{"start":1250,"end":1258}],"page_offsets":[{"start":491,"end":499}]},{"position":{"top":946,"bottom":1018,"left":347,"right":1371},"text":"PRODUCT / DESCRIPTION","rows":[0],"columns":[1],"cell_type":"header","doc_offsets":[{"start":1259,"end":1280}],"page_offsets":[{"start":500,"end":521}]},{"position":{"top":946,"bottom":1018,"left":1371,"right":1839},"text":"COST","rows":[0],"columns":[2],"cell_type":"header","doc_offsets":[{"start":1281,"end":1285}],"page_offsets":[{"start":522,"end":526}]},{"position":{"top":946,"bottom":1018,"left":1839,"right":2042},"text":"U/M","rows":[0],"columns":[3],"cell_type":"header","doc_offsets":[{"start":1286,"end":1289}],"page_offsets":[{"start":527,"end":530}]},{"position":{"top":946,"bottom":1018,"left":2042,"right":2434},"text":"EXTENSION","rows":[0],"columns":[4],"cell_type":"header","doc_offsets":[{"start":1290,"end":1299}],"page_offsets":[{"start":531,"end":540}]},{"position":{"top":1018,"bottom":1167,"left":99,"right":347},"text":"60","rows":[1],"columns":[0],"cell_type":"content","doc_offsets":[{"start":1301,"end":1303}],"page_offsets":[{"start":542,"end":544}]},{"position":{"top":1018,"bottom":1167,"left":347,"right":1371},"text":"605220 JELTRATE DUSTLESS FAST","rows":[1],"columns":[1],"cell_type":"content","doc_offsets":[{"start":1304,"end":1333}],"page_offsets":[{"start":545,"end":574}]},{"position":{"top":1018,"bottom":1167,"left":1371,"right":1839},"text":"12.00","rows":[1],"columns":[2],"cell_type":"content","doc_offsets":[{"start":1334,"end":1339}],"page_offsets":[{"start":575,"end":580}]},{"position":{"top":1018,"bottom":1167,"left":1839,"right":2042},"text":"EA","rows":[1],"columns":[3],"cell_type":"content","doc_offsets":[{"start":1340,"end":1342}],"page_offsets":[{"start":581,"end":583}]},{"position":{"top":1018,"bottom":1167,"left":2042,"right":2437},"text":"720.00","rows":[1],"columns":[4],"cell_type":"content","doc_offsets":[{"start":1343,"end":1349}],"page_offsets":[{"start":584,"end":590}]},{"position":{"top":1167,"bottom":1304,"left":99,"right":347},"text":"60","rows":[2],"columns":[0],"cell_type":"content","doc_offsets":[{"start":1351,"end":1353}],"page_offsets":[{"start":592,"end":594}]},{"position":{"top":1167,"bottom":1304,"left":347,"right":1371},"text":"608015 JELTRATE SCOOP / MEASURE SET","rows":[2],"columns":[1],"cell_type":"content","doc_offsets":[{"start":1354,"end":1389}],"page_offsets":[{"start":595,"end":630}]},{"position":{"top":1167,"bottom":1304,"left":1371,"right":1839},"text":"3.05","rows":[2],"columns":[2],"cell_type":"content","doc_offsets":[{"start":1390,"end":1394}],"page_offsets":[{"start":631,"end":635}]},{"position":{"top":1167,"bottom":1304,"left":1842,"right":2042},"text":"ST","rows":[2],"columns":[3],"cell_type":"content","doc_offsets":[{"start":1395,"end":1397}],"page_offsets":[{"start":636,"end":638}]},{"position":{"top":1167,"bottom":1304,"left":2042,"right":2437},"text":"183.00","rows":[2],"columns":[4],"cell_type":"content","doc_offsets":[{"start":1398,"end":1404}],"page_offsets":[{"start":639,"end":645}]}],"doc_offsets":[{"start":1250,"end":1404}],"page_offsets":[{"start":491,"end":645}],"table_id":3,"table_offset":{"row":0,"column":0}}] \ No newline at end of file diff --git a/tests/etloutput/test_files.py b/tests/etloutput/test_files.py index c8bbd3c..4f255b5 100644 --- a/tests/etloutput/test_files.py +++ b/tests/etloutput/test_files.py @@ -8,8 +8,8 @@ data_folder = Path(__file__).parent.parent / "data" / "etloutput" -def read_url(url: str) -> object: - storage_folder_path = url.split("/storage/submission/")[-1] +def read_uri(uri: str) -> object: + storage_folder_path = uri.split("/storage/submission/")[-1] file_path = data_folder / storage_folder_path if file_path.suffix.casefold() == ".json": @@ -20,17 +20,13 @@ def read_url(url: str) -> object: @pytest.mark.parametrize("etl_output_file", list(data_folder.rglob("etl_output.json"))) def test_file_load(etl_output_file: Path) -> None: - try: - etl_output = etloutput.load(str(etl_output_file), reader=read_url, tables=True) - except FileNotFoundError: - etl_output = etloutput.load(str(etl_output_file), reader=read_url, tables=False) - + etl_output = etloutput.load(str(etl_output_file), reader=read_uri) page_count = len(etl_output.text_on_page) char_count = len(etl_output.text) token_count = len(etl_output.tokens) table_count = len(etl_output.tables) - assert page_count == 6 - assert char_count in (6466, 6494) - assert token_count in (948, 978) - assert table_count in (0, 6) + assert page_count == 2 + assert 2090 <= char_count <= 2093 + assert 326 <= token_count <= 331 + assert table_count in (0, 4) From f5f449d3456257749ca914ad160832b85d5af999 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Fri, 6 Jun 2025 10:05:40 -0500 Subject: [PATCH 04/30] Update docstrings --- indico_toolkit/etloutput/__init__.py | 4 ++-- indico_toolkit/etloutput/cell.py | 2 +- indico_toolkit/etloutput/errors.py | 6 +++--- indico_toolkit/etloutput/etloutput.py | 2 +- indico_toolkit/etloutput/range.py | 2 +- indico_toolkit/etloutput/table.py | 2 +- indico_toolkit/etloutput/token.py | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/indico_toolkit/etloutput/__init__.py b/indico_toolkit/etloutput/__init__.py index 0b006a6..fa7f149 100644 --- a/indico_toolkit/etloutput/__init__.py +++ b/indico_toolkit/etloutput/__init__.py @@ -41,7 +41,7 @@ def load( tables: bool = True, ) -> EtlOutput: """ - Load `etl_output_uri` as an ETL Output dataclass. A `reader` function must be + Load `etl_output_uri` as an `EtlOutput` dataclass. A `reader` function must be supplied to read JSON files from disk, storage API, or Indico client. Use `text`, `tokens`, and `tables` to specify what to load. @@ -85,7 +85,7 @@ async def load_async( tables: bool = True, ) -> EtlOutput: """ - Load `etl_output_uri` as an ETL Output dataclass. A `reader` coroutine must be + Load `etl_output_uri` as an `EtlOutput` dataclass. A `reader` coroutine must be supplied to read JSON files from disk, storage API, or Indico client. Use `text`, `tokens`, and `tables` to specify what to load. diff --git a/indico_toolkit/etloutput/cell.py b/indico_toolkit/etloutput/cell.py index 16e00b3..292a78e 100644 --- a/indico_toolkit/etloutput/cell.py +++ b/indico_toolkit/etloutput/cell.py @@ -31,7 +31,7 @@ def span(self) -> Span: @staticmethod def from_dict(cell: object, page: int) -> "Cell": """ - Create a `Cell` from a v1 or v3 cell dictionary. + Create a `Cell` from a cell dictionary. """ get(cell, dict, "position")["page_num"] = page diff --git a/indico_toolkit/etloutput/errors.py b/indico_toolkit/etloutput/errors.py index 1e4ffe0..d468803 100644 --- a/indico_toolkit/etloutput/errors.py +++ b/indico_toolkit/etloutput/errors.py @@ -1,16 +1,16 @@ class EtlOutputError(Exception): """ - Raised when an error occurs while loading an ETL Output file. + Raised when an error occurs accessing `EtlOutput` values. """ class TokenNotFoundError(EtlOutputError): """ - Raised when a Token can't be found for a Prediction. + Raised when a `Token` can't be found for a `Span`. """ class TableCellNotFoundError(EtlOutputError): """ - Raised when a Table Cell can't be found for a Token. + Raised when a `Table` and `Cell` can't be found for a `Token`. """ diff --git a/indico_toolkit/etloutput/etloutput.py b/indico_toolkit/etloutput/etloutput.py index 2086f1a..091c05d 100644 --- a/indico_toolkit/etloutput/etloutput.py +++ b/indico_toolkit/etloutput/etloutput.py @@ -33,7 +33,7 @@ def from_pages( table_dicts_by_page: "Iterable[Iterable[object]]", ) -> "EtlOutput": """ - Create an `EtlOutput` from v1 or v3 page lists. + Create an `EtlOutput` from pages of text, tokens, and tables. """ text_by_page = tuple(text_by_page) tokens_by_page = tuple( diff --git a/indico_toolkit/etloutput/range.py b/indico_toolkit/etloutput/range.py index 674e3b8..efe890a 100644 --- a/indico_toolkit/etloutput/range.py +++ b/indico_toolkit/etloutput/range.py @@ -15,7 +15,7 @@ class Range: @staticmethod def from_dict(cell: object) -> "Range": """ - Create a `Range` from a v1 or v3 cell dictionary. + Create a `Range` from a cell dictionary. """ rows = get(cell, list, "rows") columns = get(cell, list, "columns") diff --git a/indico_toolkit/etloutput/table.py b/indico_toolkit/etloutput/table.py index 4e9b5ae..6e03610 100644 --- a/indico_toolkit/etloutput/table.py +++ b/indico_toolkit/etloutput/table.py @@ -16,7 +16,7 @@ class Table: @staticmethod def from_dict(table: object) -> "Table": """ - Create a `Table` from a v1 or v3 table dictionary. + Create a `Table` from a table dictionary. """ page = get(table, int, "page_num") get(table, dict, "position")["page_num"] = page diff --git a/indico_toolkit/etloutput/token.py b/indico_toolkit/etloutput/token.py index d369e78..9478d39 100644 --- a/indico_toolkit/etloutput/token.py +++ b/indico_toolkit/etloutput/token.py @@ -13,7 +13,7 @@ class Token: @staticmethod def from_dict(token: object) -> "Token": """ - Create a `Token` from a v1 or v3 token dictionary. + Create a `Token` from a token dictionary. """ get(token, dict, "position")["page_num"] = get(token, int, "page_num") get(token, dict, "doc_offset")["page_num"] = get(token, int, "page_num") From bb863bf4690800f2ead9139d2163f6bbe878c573 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Fri, 6 Jun 2025 11:48:16 -0500 Subject: [PATCH 05/30] Add more unit tests --- tests/etloutput/test_files.py | 58 +++++++++++++ tests/etloutput/test_token_table_cell.py | 104 +++++++++++++++++++++++ 2 files changed, 162 insertions(+) create mode 100644 tests/etloutput/test_token_table_cell.py diff --git a/tests/etloutput/test_files.py b/tests/etloutput/test_files.py index 4f255b5..1fd59f6 100644 --- a/tests/etloutput/test_files.py +++ b/tests/etloutput/test_files.py @@ -18,6 +18,10 @@ def read_uri(uri: str) -> object: return file_path.read_text() +async def read_uri_async(uri: str) -> object: + return read_uri(uri) + + @pytest.mark.parametrize("etl_output_file", list(data_folder.rglob("etl_output.json"))) def test_file_load(etl_output_file: Path) -> None: etl_output = etloutput.load(str(etl_output_file), reader=read_uri) @@ -30,3 +34,57 @@ def test_file_load(etl_output_file: Path) -> None: assert 2090 <= char_count <= 2093 assert 326 <= token_count <= 331 assert table_count in (0, 4) + + +@pytest.mark.parametrize("etl_output_file", list(data_folder.rglob("etl_output.json"))) +async def test_file_load_async(etl_output_file: Path) -> None: + etl_output = await etloutput.load_async(str(etl_output_file), reader=read_uri_async) + page_count = len(etl_output.text_on_page) + char_count = len(etl_output.text) + token_count = len(etl_output.tokens) + table_count = len(etl_output.tables) + + assert page_count == 2 + assert 2090 <= char_count <= 2093 + assert 326 <= token_count <= 331 + assert table_count in (0, 4) + + +@pytest.mark.parametrize("etl_output_file", list(data_folder.rglob("etl_output.json"))) +def test_file_load_disable_values(etl_output_file: Path) -> None: + etl_output = etloutput.load( + str(etl_output_file), + reader=read_uri, + text=False, + tokens=False, + tables=False, + ) + page_count = len(etl_output.text_on_page) + char_count = len(etl_output.text) + token_count = len(etl_output.tokens) + table_count = len(etl_output.tables) + + assert page_count == 0 + assert char_count == 0 + assert token_count == 0 + assert table_count == 0 + + +@pytest.mark.parametrize("etl_output_file", list(data_folder.rglob("etl_output.json"))) +async def test_file_load_disable_values_async(etl_output_file: Path) -> None: + etl_output = await etloutput.load_async( + str(etl_output_file), + reader=read_uri_async, + text=False, + tokens=False, + tables=False, + ) + page_count = len(etl_output.text_on_page) + char_count = len(etl_output.text) + token_count = len(etl_output.tokens) + table_count = len(etl_output.tables) + + assert page_count == 0 + assert char_count == 0 + assert token_count == 0 + assert table_count == 0 diff --git a/tests/etloutput/test_token_table_cell.py b/tests/etloutput/test_token_table_cell.py new file mode 100644 index 0000000..1be26e6 --- /dev/null +++ b/tests/etloutput/test_token_table_cell.py @@ -0,0 +1,104 @@ +import json +from dataclasses import replace +from pathlib import Path + +import pytest + +from indico_toolkit import etloutput +from indico_toolkit.etloutput import ( + NULL_SPAN, + CellType, + EtlOutput, + Span, + TableCellNotFoundError, + TokenNotFoundError, +) + +data_folder = Path(__file__).parent.parent / "data" / "etloutput" +etl_output_file = data_folder / "4725" / "111924" / "110239" / "etl_output.json" + + +def read_uri(uri: str) -> object: + storage_folder_path = uri.split("/storage/submission/")[-1] + file_path = data_folder / storage_folder_path + + if file_path.suffix.casefold() == ".json": + return json.loads(file_path.read_text()) + else: + return file_path.read_text() + + +@pytest.fixture(scope="module") +def etl_output() -> EtlOutput: + return etloutput.load(str(etl_output_file), reader=read_uri) + + +@pytest.fixture +def header_span() -> Span: + return Span(page=1, start=1281, end=1285) + + +@pytest.fixture +def content_span() -> Span: + return Span(page=1, start=1343, end=1349) + + +def test_text_slice( + etl_output: EtlOutput, header_span: Span, content_span: Span +) -> None: + assert etl_output.text[header_span.slice] == "COST" + assert etl_output.text[content_span.slice] == "720.00" + + +def test_token(etl_output: EtlOutput, header_span: Span, content_span: Span) -> None: + header_token = etl_output.token_for(header_span) + content_token = etl_output.token_for(content_span) + + assert header_token.span == header_span + assert content_token.span == content_span + + assert header_token.text == "COST" + assert content_token.text == "720.00" + + +def test_token_not_found(etl_output: EtlOutput, header_span: Span) -> None: + with pytest.raises(TokenNotFoundError): + etl_output.token_for(replace(header_span, page=3)) + + +def test_table_cell( + etl_output: EtlOutput, header_span: Span, content_span: Span +) -> None: + header_token = etl_output.token_for(header_span) + content_token = etl_output.token_for(content_span) + + header_table, header_cell = etl_output.table_cell_for(header_token) + content_table, content_cell = etl_output.table_cell_for(content_token) + + assert header_cell.span == header_span + assert content_cell.span == content_span + + assert header_cell.type == CellType.HEADER + assert content_cell.type == CellType.CONTENT + + assert header_cell.text == "COST" + assert content_cell.text == "720.00" + + +def test_table_cell_not_found(etl_output: EtlOutput) -> None: + with pytest.raises(TableCellNotFoundError): + token = etl_output.token_for(Span(page=0, start=0, end=8)) + etl_output.table_cell_for(token) + + +def test_empty_cell(etl_output: EtlOutput) -> None: + table = etl_output.tables[2] + filled_cell = table.rows[1][2] + empty_cell = table.rows[1][3] + + assert filled_cell.text + assert not empty_cell.text + + assert filled_cell.span + assert not empty_cell.span + assert empty_cell.span == NULL_SPAN From 0cbc30271e93f46994fde662a90e3f8fb997e8d6 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Wed, 4 Jun 2025 12:22:26 -0500 Subject: [PATCH 06/30] Remove pre-7.2 normalization and refactor normalization --- indico_toolkit/results/document.py | 10 +- indico_toolkit/results/normalization.py | 136 +- .../results/predictions/__init__.py | 3 + indico_toolkit/results/result.py | 19 +- tests/data/results/2913_v3_unreviewed.json | 482 ---- tests/data/results/2914_v3_accepted.json | 874 ------ tests/data/results/2915_v3_rejected.json | 506 ---- tests/data/results/96127_v3_genai.json | 200 -- .../results/classify_extract_accepted.json | 2526 +++++++++++++++++ .../results/classify_extract_rejected.json | 1938 +++++++++++++ ...on => classify_extract_static_models.json} | 0 .../results/classify_extract_unreviewed.json | 1910 +++++++++++++ tests/results/test_document.py | 6 +- 13 files changed, 6453 insertions(+), 2157 deletions(-) delete mode 100644 tests/data/results/2913_v3_unreviewed.json delete mode 100644 tests/data/results/2914_v3_accepted.json delete mode 100644 tests/data/results/2915_v3_rejected.json delete mode 100644 tests/data/results/96127_v3_genai.json create mode 100644 tests/data/results/classify_extract_accepted.json create mode 100644 tests/data/results/classify_extract_rejected.json rename tests/data/results/{97211_v3_static_models.json => classify_extract_static_models.json} (100%) create mode 100644 tests/data/results/classify_extract_unreviewed.json diff --git a/indico_toolkit/results/document.py b/indico_toolkit/results/document.py index ca3aab6..5aa471b 100644 --- a/indico_toolkit/results/document.py +++ b/indico_toolkit/results/document.py @@ -30,12 +30,11 @@ def from_dict(document: object) -> "Document": component_results = get(document, dict, "component_results", "ORIGINAL") model_ids = frozenset(model_results.keys()) component_ids = frozenset(component_results.keys()) - etl_output_uri = get(document, str, "etl_output") return Document( id=get(document, int, "submissionfile_id"), name=get(document, str, "input_filename"), - etl_output_uri=etl_output_uri, + etl_output_uri=get(document, str, "etl_output"), failed=False, error="", traceback="", @@ -48,16 +47,13 @@ def from_errored_file_dict(errored_file: object) -> "Document": """ Create a `Document` from an errored file dictionary. """ - traceback = get(errored_file, str, "error") - error = traceback.split("\n")[-1].strip() - return Document( id=get(errored_file, int, "submissionfile_id"), name=get(errored_file, str, "input_filename"), etl_output_uri="", failed=True, - error=error, - traceback=traceback, + error=get(errored_file, str, "error"), + traceback=get(errored_file, str, "traceback"), _model_sections=frozenset(), _component_sections=frozenset(), ) diff --git a/indico_toolkit/results/normalization.py b/indico_toolkit/results/normalization.py index d541d55..f6e28be 100644 --- a/indico_toolkit/results/normalization.py +++ b/indico_toolkit/results/normalization.py @@ -1,96 +1,82 @@ import re -from itertools import chain from typing import TYPE_CHECKING +from .model import ModelGroupType from .utils import get, has if TYPE_CHECKING: - from collections.abc import Iterator from typing import Any def normalize_result_dict(result: "Any") -> None: """ - Fix inconsistencies observed in result files. + Fix inconsistencies observed in result file structure. """ - task_type_by_model_group_id = { - model_group_id: model_group["task_type"] - for model_group_id, model_group in chain( - result["modelgroup_metadata"].items(), - result.get("component_metadata", {}).items(), - ) - } - predictions_with_task_type: "Iterator[tuple[Any, str]]" = ( - (prediction, task_type_by_model_group_id.get(model_group_id, "")) - for submission_result in get(result, list, "submission_results") - for review_result in chain( - get(submission_result, dict, "model_results").values(), - get(submission_result, dict, "component_results").values(), - ) - for model_group_id, model_results in review_result.items() - for prediction in model_results - ) + for errored_file in get(result, dict, "errored_files").values(): + # Parse filenames for errored files. + if not has(errored_file, str, "input_filename"): + reason = get(errored_file, str, "reason") + match = re.search(r"file '([^']*)' with id", reason) + errored_file["input_filename"] = match.group(1) if match else "" - for prediction, task_type in predictions_with_task_type: - # Predictions added in review may lack a `confidence` section. - if "confidence" not in prediction: - prediction["confidence"] = {prediction["label"]: 0} + # Parse error from trackback for errored files. + if not has(errored_file, str, "traceback"): + traceback = get(errored_file, str, "error") + error = traceback.split("\n")[-1].strip() + errored_file["traceback"] = traceback + errored_file["error"] = error - # Document Extractions added in review may lack spans. - if ( - task_type in ("annotation", "genai_annotation") - and "spans" not in prediction - ): - prediction["spans"] = [] + # Convert `None` review notes to "". + for review in get(result, dict, "reviews").values(): + if not has(review, str, "review_notes"): + review["review_notes"] = "" - # Form Extractions added in review may lack bounding boxes. - # Set values that will equal `NULL_BOX`. - if task_type == "form_extraction" and "top" not in prediction: - prediction["page_num"] = 0 - prediction["top"] = 0 - prediction["left"] = 0 - prediction["right"] = 0 - prediction["bottom"] = 0 - # Prior to 6.11, some Extractions lack a `normalized` section after - # review. - if ( - task_type in ("annotation", "form_extraction", "genai_annotation") - and "normalized" not in prediction - ): - prediction["normalized"] = {"formatted": prediction["text"]} - - # Document Extractions that didn't go through a linked labels - # transformer lack a `groupings` section. - if ( - task_type in ("annotation", "genai_annotation") - and "groupings" not in prediction - ): - prediction["groupings"] = [] - - # Summarizations may lack citations after review. - if task_type == "summarization" and "citations" not in prediction: - prediction["citations"] = [] +def normalize_prediction_dict(task_type: ModelGroupType, prediction: "Any") -> None: + """ + Fix inconsistencies observed in prediction structure. + """ + # Predictions added in review lack a `confidence` section. + # (And should theoretically have 100% confidence.) + if not has(prediction, dict, "confidence"): + prediction["confidence"] = {get(prediction, str, "label"): 1.0} - # Prior to 7.2, result files don't include a `component_metadata` section. - if not has(result, dict, "component_metadata"): - result["component_metadata"] = {} + # Extractions added in review may lack a `normalized` section. + if task_type in ( + ModelGroupType.DOCUMENT_EXTRACTION, + ModelGroupType.FORM_EXTRACTION, + ModelGroupType.GENAI_EXTRACTION, + ) and not has(prediction, dict, "normalized"): + prediction["normalized"] = {"formatted": get(prediction, str, "text")} - # Prior to 6.8, result files don't include a `reviews` section. - if not has(result, dict, "reviews"): - result["reviews"] = {} + # Document Extractions added in review may lack a `spans` section. + # This value will match `NULL_SPAN`. + if task_type in ( + ModelGroupType.DOCUMENT_EXTRACTION, + ModelGroupType.GENAI_EXTRACTION, + ) and not has(prediction, list, "spans"): + prediction["spans"] = [] - # Review notes are `None` unless the reviewer enters a reason for rejection. - for review_dict in get(result, dict, "reviews").values(): - if not has(review_dict, str, "review_notes"): - review_dict["review_notes"] = "" + # Form Extractions added in review may lack bounding box information. + # These values will match `NULL_BOX`. + if task_type == ModelGroupType.FORM_EXTRACTION and not has(prediction, int, "top"): + prediction["page_num"] = 0 + prediction["top"] = 0 + prediction["left"] = 0 + prediction["right"] = 0 + prediction["bottom"] = 0 - # Prior to 7.0, result files don't include an `errored_files` section. - if not has(result, dict, "errored_files"): - result["errored_files"] = {} + # Document Extractions that didn't go through a linked labels transformer + # lack a `groupings` section. + if task_type in ( + ModelGroupType.DOCUMENT_EXTRACTION, + ModelGroupType.GENAI_EXTRACTION, + ) and not has(prediction, list, "groupings"): + prediction["groupings"] = [] - # Prior to 7.X, errored files may lack filenames. - for file in get(result, dict, "errored_files").values(): - if not has(file, str, "input_filename") and has(file, str, "reason"): - match = re.search(r"file '([^']*)' with id", get(file, str, "reason")) - file["input_filename"] = match.group(1) if match else "" + # Summarizations added in review may lack a `citations` section. + # These values will match `NULL_CITATION`. + if task_type == ModelGroupType.GENAI_SUMMARIZATION and not has( + prediction, list, "citations" + ): + prediction["citations"] = [] diff --git a/indico_toolkit/results/predictions/__init__.py b/indico_toolkit/results/predictions/__init__.py index 2ea64c1..3af7d02 100644 --- a/indico_toolkit/results/predictions/__init__.py +++ b/indico_toolkit/results/predictions/__init__.py @@ -1,6 +1,7 @@ from typing import TYPE_CHECKING from ..model import ModelGroupType +from ..normalization import normalize_prediction_dict from .box import NULL_BOX, Box from .citation import NULL_CITATION, Citation from .classification import Classification @@ -55,6 +56,8 @@ def from_dict( """ Create a `Prediction` subclass from a prediction dictionary. """ + normalize_prediction_dict(model.type, prediction) + if model.type in (CLASSIFICATION, GENAI_CLASSIFICATION): return Classification.from_dict(document, model, review, prediction) elif model.type in (DOCUMENT_EXTRACTION, GENAI_EXTRACTION): diff --git a/indico_toolkit/results/result.py b/indico_toolkit/results/result.py index 8756f77..25e9cb7 100644 --- a/indico_toolkit/results/result.py +++ b/indico_toolkit/results/result.py @@ -127,18 +127,13 @@ def from_dict(result: object) -> "Result": filter(lambda model: model.id == int(component_id), models) ) except StopIteration: - if has(component_metadata, str, component_id, "component_type"): - component_type = get( - component_metadata, str, component_id, "component_type" - ) - raise ResultError( - f"unsupported component type {component_type!r} " - f"for component {component_id}" - ) - else: - raise ResultError( - f"no component metadata for component {component_id}" - ) + component_type = get( + component_metadata, str, component_id, "component_type" + ) + raise ResultError( + f"unsupported component type {component_type!r} " + f"for component {component_id}" + ) predictions.extend( map( diff --git a/tests/data/results/2913_v3_unreviewed.json b/tests/data/results/2913_v3_unreviewed.json deleted file mode 100644 index 620912c..0000000 --- a/tests/data/results/2913_v3_unreviewed.json +++ /dev/null @@ -1,482 +0,0 @@ -{ - "file_version": 3, - "submission_id": 2913, - "modelgroup_metadata": { - "122": { - "id": 122, - "task_type": "annotation", - "name": "1040 Document Extraction", - "selected_model": { - "id": 214, - "model_type": "finetune" - } - }, - "123": { - "id": 123, - "task_type": "form_extraction", - "name": "1040 Form Extraction", - "selected_model": { - "id": 212, - "model_type": "form_extraction" - } - }, - "121": { - "id": 121, - "task_type": "classification", - "name": "Tax Classification", - "selected_model": { - "id": 221, - "model_type": "tfidf_gbt" - } - }, - "124": { - "id": 124, - "task_type": "classification_unbundling", - "name": "Tax Unbundling", - "selected_model": { - "id": 225, - "model_type": "unbundle" - } - } - }, - "submission_results": [ - { - "submissionfile_id": 2922, - "etl_output": "indico-file:///storage/submission/113/2913/2922/etl_output.json", - "input_filename": "1040_filled.tiff", - "input_filepath": "indico-file:///storage/submission/113/2913/2922.tiff", - "input_filesize": 1045469, - "model_results": { - "ORIGINAL": { - "121": [ - { - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - }, - "label": "1040" - } - ], - "124": [ - { - "label": "1040", - "spans": [ - { - "start": 0, - "end": 4072, - "page_num": 0 - }, - { - "start": 4073, - "end": 6929, - "page_num": 1 - } - ], - "span_id": "2926:c:235:idx:0", - "confidence": { - "1040": 0.9745795726776123, - "1099": 0.02542044408619404 - }, - "field_id": 695 - } - ], - "122": [ - { - "label": "First Name", - "spans": [ - { - "start": 352, - "end": 356, - "page_num": 0 - } - ], - "span_id": "2922:c:228:idx:0", - "confidence": { - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: Relationship": 5.558660731708187e-08, - "First Name": 0.9999988079071045, - "Last Name": 4.0229687670034764e-07 - }, - "field_id": 686, - "text": "John", - "normalized": { - "text": "John", - "start": 352, - "end": 356, - "structured": null, - "formatted": "John", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Last Name", - "spans": [ - { - "start": 357, - "end": 360, - "page_num": 0 - } - ], - "span_id": "2922:c:228:idx:1", - "confidence": { - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: Relationship": 1.5769572314638935e-07, - "First Name": 3.913502268915181e-07, - "Last Name": 0.9999991655349731 - }, - "field_id": 687, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 357, - "end": 360, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Dependent: First Name", - "spans": [ - { - "start": 2011, - "end": 2015, - "page_num": 0 - } - ], - "span_id": "2922:c:228:idx:2", - "confidence": { - "Dependent: First Name": 0.9999992847442627, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: Relationship": 1.606294404155051e-07, - "First Name": 9.299924386141356e-08, - "Last Name": 1.4796071923228737e-07 - }, - "field_id": 688, - "text": "Jane", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Jane", - "start": 2011, - "end": 2015, - "structured": null, - "formatted": "Jane", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Dependent: Last Name", - "spans": [ - { - "start": 2016, - "end": 2019, - "page_num": 0 - } - ], - "span_id": "2922:c:228:idx:3", - "confidence": { - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: Relationship": 4.189759295059048e-08, - "First Name": 6.380826533813888e-08, - "Last Name": 1.2290360018596402e-07 - }, - "field_id": 689, - "text": "Doe", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Doe", - "start": 2016, - "end": 2019, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Dependent: Relationship", - "spans": [ - { - "start": 2020, - "end": 2028, - "page_num": 0 - } - ], - "span_id": "2922:c:228:idx:4", - "confidence": { - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: Relationship": 0.9999996423721313, - "First Name": 5.3535529787041014e-08, - "Last Name": 7.563556891909684e-08 - }, - "field_id": 690, - "text": "Daughter", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Daughter", - "start": 2020, - "end": 2028, - "structured": null, - "formatted": "Daughter", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Last Name", - "spans": [ - { - "start": 6438, - "end": 6441, - "page_num": 1 - } - ], - "span_id": "2922:c:228:idx:5", - "confidence": { - "Dependent: First Name": 0.00020139692060183734, - "Dependent: Last Name": 0.10477288067340851, - "Dependent: Relationship": 8.520398841938004e-05, - "First Name": 8.379091741517186e-05, - "Last Name": 0.44778338074684143 - }, - "field_id": 687, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 6438, - "end": 6441, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ], - "123": [ - { - "label": "Filing Status: Single", - "spans": [], - "span_id": "2922:c:230:idx:0", - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "field_id": 691, - "top": 782, - "bottom": 813, - "left": 400, - "right": 434, - "page_num": 0, - "checked": true, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": true - }, - "formatted": "Checked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Filing Status: Married", - "spans": [], - "span_id": "2922:c:230:idx:1", - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "field_id": 692, - "top": 828, - "bottom": 862, - "left": 400, - "right": 434, - "page_num": 0, - "checked": false, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": false - }, - "formatted": "Unchecked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Signature", - "spans": [ - { - "start": 6433, - "end": 6441, - "page_num": 1 - } - ], - "span_id": "2922:c:230:idx:2", - "confidence": { - "Signature": 0.620139473705776 - }, - "field_id": 693, - "top": 1805, - "bottom": 1925, - "left": 357, - "right": 1071, - "page_num": 1, - "type": "signature", - "text": "John Doe", - "signed": true, - "normalized": { - "text": "John Doe", - "start": 6433, - "end": 6441, - "structured": { - "signed": true - }, - "formatted": "Signed", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Date", - "spans": [ - { - "start": 6442, - "end": 6452, - "page_num": 1 - } - ], - "span_id": "2922:c:230:idx:3", - "confidence": { - "Date": 1.0 - }, - "field_id": 694, - "top": 1805, - "bottom": 1924, - "left": 1072, - "right": 1269, - "page_num": 1, - "type": "text", - "text": "2024-04-15", - "normalized": { - "text": "2024-04-15", - "start": 6442, - "end": 6452, - "structured": { - "day": 15, - "month": 4, - "year": 2024 - }, - "formatted": "April 15, 2024", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ] - } - }, - "component_results": { - "ORIGINAL": {} - }, - "rejected": { - "models": { - "121": [], - "122": [], - "123": [] - }, - "components": {} - } - } - ], - "reviews": {} -} diff --git a/tests/data/results/2914_v3_accepted.json b/tests/data/results/2914_v3_accepted.json deleted file mode 100644 index 0565f9f..0000000 --- a/tests/data/results/2914_v3_accepted.json +++ /dev/null @@ -1,874 +0,0 @@ -{ - "file_version": 3, - "submission_id": 2914, - "modelgroup_metadata": { - "122": { - "id": 122, - "task_type": "annotation", - "name": "1040 Document Extraction", - "selected_model": { - "id": 214, - "model_type": "finetune" - } - }, - "123": { - "id": 123, - "task_type": "form_extraction", - "name": "1040 Form Extraction", - "selected_model": { - "id": 212, - "model_type": "form_extraction" - } - }, - "121": { - "id": 121, - "task_type": "classification", - "name": "Tax Classification", - "selected_model": { - "id": 221, - "model_type": "tfidf_gbt" - } - }, - "124": { - "id": 124, - "task_type": "classification_unbundling", - "name": "Tax Unbundling", - "selected_model": { - "id": 225, - "model_type": "unbundle" - } - } - }, - "submission_results": [ - { - "submissionfile_id": 2923, - "etl_output": "indico-file:///storage/submission/113/2914/2923/etl_output.json", - "input_filename": "1040_filled.tiff", - "input_filepath": "indico-file:///storage/submission/113/2914/2923.tiff", - "input_filesize": 1045469, - "model_results": { - "ORIGINAL": { - "123": [ - { - "label": "Filing Status: Single", - "spans": [], - "span_id": "2923:c:230:idx:0", - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "field_id": 691, - "top": 782, - "bottom": 813, - "left": 400, - "right": 434, - "page_num": 0, - "checked": true, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": true - }, - "formatted": "Checked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Filing Status: Married", - "spans": [], - "span_id": "2923:c:230:idx:1", - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "field_id": 692, - "top": 828, - "bottom": 862, - "left": 400, - "right": 434, - "page_num": 0, - "checked": false, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": false - }, - "formatted": "Unchecked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Signature", - "spans": [ - { - "start": 6433, - "end": 6441, - "page_num": 1 - } - ], - "span_id": "2923:c:230:idx:2", - "confidence": { - "Signature": 0.620139473705776 - }, - "field_id": 693, - "top": 1805, - "bottom": 1925, - "left": 357, - "right": 1071, - "page_num": 1, - "type": "signature", - "text": "John Doe", - "signed": true, - "normalized": { - "text": "John Doe", - "start": 6433, - "end": 6441, - "structured": { - "signed": true - }, - "formatted": "Signed", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Date", - "spans": [ - { - "start": 6442, - "end": 6452, - "page_num": 1 - } - ], - "span_id": "2923:c:230:idx:3", - "confidence": { - "Date": 1.0 - }, - "field_id": 694, - "top": 1805, - "bottom": 1924, - "left": 1072, - "right": 1269, - "page_num": 1, - "type": "text", - "text": "2024-04-15", - "normalized": { - "text": "2024-04-15", - "start": 6442, - "end": 6452, - "structured": { - "day": 15, - "month": 4, - "year": 2024 - }, - "formatted": "April 15, 2024", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ], - "122": [ - { - "label": "First Name", - "spans": [ - { - "start": 352, - "end": 356, - "page_num": 0 - } - ], - "span_id": "2923:c:228:idx:0", - "confidence": { - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: Relationship": 5.558660731708187e-08, - "First Name": 0.9999988079071045, - "Last Name": 4.0229687670034764e-07 - }, - "field_id": 686, - "text": "John", - "normalized": { - "text": "John", - "start": 352, - "end": 356, - "structured": null, - "formatted": "John", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Last Name", - "spans": [ - { - "start": 357, - "end": 360, - "page_num": 0 - } - ], - "span_id": "2923:c:228:idx:1", - "confidence": { - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: Relationship": 1.5769572314638935e-07, - "First Name": 3.913502268915181e-07, - "Last Name": 0.9999991655349731 - }, - "field_id": 687, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 357, - "end": 360, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Dependent: First Name", - "spans": [ - { - "start": 2011, - "end": 2015, - "page_num": 0 - } - ], - "span_id": "2923:c:228:idx:2", - "confidence": { - "Dependent: First Name": 0.9999992847442627, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: Relationship": 1.606294404155051e-07, - "First Name": 9.299924386141356e-08, - "Last Name": 1.4796071923228737e-07 - }, - "field_id": 688, - "text": "Jane", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Jane", - "start": 2011, - "end": 2015, - "structured": null, - "formatted": "Jane", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Dependent: Last Name", - "spans": [ - { - "start": 2016, - "end": 2019, - "page_num": 0 - } - ], - "span_id": "2923:c:228:idx:3", - "confidence": { - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: Relationship": 4.189759295059048e-08, - "First Name": 6.380826533813888e-08, - "Last Name": 1.2290360018596402e-07 - }, - "field_id": 689, - "text": "Doe", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Doe", - "start": 2016, - "end": 2019, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Dependent: Relationship", - "spans": [ - { - "start": 2020, - "end": 2028, - "page_num": 0 - } - ], - "span_id": "2923:c:228:idx:4", - "confidence": { - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: Relationship": 0.9999996423721313, - "First Name": 5.3535529787041014e-08, - "Last Name": 7.563556891909684e-08 - }, - "field_id": 690, - "text": "Daughter", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Daughter", - "start": 2020, - "end": 2028, - "structured": null, - "formatted": "Daughter", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Last Name", - "spans": [ - { - "start": 6438, - "end": 6441, - "page_num": 1 - } - ], - "span_id": "2923:c:228:idx:5", - "confidence": { - "Dependent: First Name": 0.00020139692060183734, - "Dependent: Last Name": 0.10477288067340851, - "Dependent: Relationship": 8.520398841938004e-05, - "First Name": 8.379091741517186e-05, - "Last Name": 0.44778338074684143 - }, - "field_id": 687, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 6438, - "end": 6441, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ], - "121": [ - { - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - }, - "label": "1040" - } - ], - "124": [ - { - "label": "1040", - "spans": [ - { - "start": 0, - "end": 4072, - "page_num": 0 - }, - { - "start": 4073, - "end": 6929, - "page_num": 1 - } - ], - "span_id": "2926:c:235:idx:0", - "confidence": { - "1040": 0.9745795726776123, - "1099": 0.02542044408619404 - }, - "field_id": 695 - } - ] - }, - "FINAL": { - "123": [ - { - "top": 1805, - "left": 357, - "text": "John Doe", - "type": "signature", - "label": "Signature", - "right": 1071, - "spans": [ - { - "end": 6441, - "start": 6433, - "page_num": 1 - } - ], - "bottom": 1925, - "span_id": "2923:c:230:idx:2", - "field_id": 693, - "page_num": 1, - "confidence": { - "Signature": 0.620139473705776 - }, - "normalized": { - "text": "John Doe", - "status": "SUCCESS", - "formatted": "Signed", - "structured": { - "signed": true - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "top": 828, - "left": 400, - "text": "", - "type": "checkbox", - "label": "Filing Status: Married", - "right": 434, - "bottom": 862, - "span_id": "2923:c:230:idx:1", - "field_id": 692, - "page_num": 0, - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "normalized": { - "text": "", - "status": "SUCCESS", - "formatted": "Unchecked", - "structured": { - "checked": false - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "top": 782, - "left": 400, - "text": "", - "type": "checkbox", - "label": "Filing Status: Single", - "right": 434, - "bottom": 813, - "span_id": "2923:c:230:idx:0", - "field_id": 691, - "page_num": 0, - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "normalized": { - "text": "", - "status": "SUCCESS", - "formatted": "Checked", - "structured": { - "checked": true - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "top": 1805, - "left": 1072, - "text": "2024-04-15", - "type": "text", - "label": "Date", - "right": 1269, - "spans": [ - { - "end": 6452, - "start": 6442, - "page_num": 1 - } - ], - "bottom": 1924, - "span_id": "2923:c:230:idx:3", - "field_id": 694, - "page_num": 1, - "confidence": { - "Date": 1.0 - }, - "normalized": { - "text": "2024-04-15", - "status": "SUCCESS", - "formatted": "April 15, 2024", - "structured": { - "day": 15, - "year": 2024, - "month": 4 - }, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - } - ], - "124": [ - { - "label": "1040", - "spans": [ - { - "start": 0, - "end": 4072, - "page_num": 0 - }, - { - "start": 4073, - "end": 6929, - "page_num": 1 - } - ], - "span_id": "2926:c:235:idx:0", - "confidence": { - "1040": 0.9745795726776123, - "1099": 0.02542044408619404 - }, - "field_id": 695 - } - ], - "122": [ - { - "text": "John", - "label": "First Name", - "spans": [ - { - "end": 356, - "start": 352, - "page_num": 0 - } - ], - "span_id": "2923:c:228:idx:0", - "field_id": 686, - "page_num": 0, - "confidence": { - "Last Name": 4.0229687670034764e-07, - "First Name": 0.9999988079071045, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Relationship": 5.558660731708187e-08 - }, - "normalized": { - "end": 356, - "text": "John", - "start": 352, - "status": "SUCCESS", - "formatted": "John", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "text": "Doe", - "label": "Last Name", - "spans": [ - { - "end": 360, - "start": 357, - "page_num": 0 - } - ], - "span_id": "2923:c:228:idx:1", - "field_id": 687, - "page_num": 0, - "confidence": { - "Last Name": 0.9999991655349731, - "First Name": 3.913502268915181e-07, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Relationship": 1.5769572314638935e-07 - }, - "normalized": { - "end": 360, - "text": "Doe", - "start": 357, - "status": "SUCCESS", - "formatted": "Doe", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "text": "Jane", - "label": "Dependent: First Name", - "spans": [ - { - "end": 2015, - "start": 2011, - "page_num": 0 - } - ], - "span_id": "2923:c:228:idx:2", - "field_id": 688, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 1 - } - ], - "confidence": { - "Last Name": 1.4796071923228737e-07, - "First Name": 9.299924386141356e-08, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: First Name": 0.9999992847442627, - "Dependent: Relationship": 1.606294404155051e-07 - }, - "normalized": { - "end": 2015, - "text": "Jane", - "start": 2011, - "status": "SUCCESS", - "formatted": "Jane", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "text": "Doe", - "label": "Dependent: Last Name", - "spans": [ - { - "end": 2019, - "start": 2016, - "page_num": 0 - } - ], - "span_id": "2923:c:228:idx:3", - "field_id": 689, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 1 - } - ], - "confidence": { - "Last Name": 1.2290360018596402e-07, - "First Name": 6.380826533813888e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Relationship": 4.189759295059048e-08 - }, - "normalized": { - "end": 2019, - "text": "Doe", - "start": 2016, - "status": "SUCCESS", - "formatted": "Doe", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - }, - { - "text": "Daughter", - "label": "Dependent: Relationship", - "spans": [ - { - "end": 2028, - "start": 2020, - "page_num": 0 - } - ], - "span_id": "2923:c:228:idx:4", - "field_id": 690, - "page_num": 0, - "groupings": [ - { - "group_id": "122:Dependent", - "group_name": "Dependent", - "group_index": 1 - } - ], - "confidence": { - "Last Name": 7.563556891909684e-08, - "First Name": 5.3535529787041014e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Relationship": 0.9999996423721313 - }, - "normalized": { - "end": 2028, - "text": "Daughter", - "start": 2020, - "status": "SUCCESS", - "formatted": "Daughter", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ] - } - } - ], - "121": [ - { - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - }, - "label": "1040" - } - ] - } - }, - "component_results": { - "ORIGINAL": {}, - "FINAL": {} - }, - "rejected": { - "models": { - "123": [], - "122": [], - "121": [] - }, - "components": {} - } - } - ], - "reviews": { - "1308": { - "review_id": 1308, - "reviewer_id": 5, - "review_notes": null, - "review_rejected": false, - "review_type": "manual" - }, - "1306": { - "review_id": 1306, - "reviewer_id": 5, - "review_notes": null, - "review_rejected": false, - "review_type": "auto" - } - } -} diff --git a/tests/data/results/2915_v3_rejected.json b/tests/data/results/2915_v3_rejected.json deleted file mode 100644 index f5db5df..0000000 --- a/tests/data/results/2915_v3_rejected.json +++ /dev/null @@ -1,506 +0,0 @@ -{ - "file_version": 3, - "submission_id": 2915, - "modelgroup_metadata": { - "122": { - "id": 122, - "task_type": "annotation", - "name": "1040 Document Extraction", - "selected_model": { - "id": 214, - "model_type": "finetune" - } - }, - "123": { - "id": 123, - "task_type": "form_extraction", - "name": "1040 Form Extraction", - "selected_model": { - "id": 212, - "model_type": "form_extraction" - } - }, - "121": { - "id": 121, - "task_type": "classification", - "name": "Tax Classification", - "selected_model": { - "id": 221, - "model_type": "tfidf_gbt" - } - }, - "124": { - "id": 124, - "task_type": "classification_unbundling", - "name": "Tax Unbundling", - "selected_model": { - "id": 225, - "model_type": "unbundle" - } - } - }, - "submission_results": [ - { - "submissionfile_id": 2924, - "etl_output": "indico-file:///storage/submission/113/2915/2924/etl_output.json", - "input_filename": "1040_filled.tiff", - "input_filepath": "indico-file:///storage/submission/113/2915/2924.tiff", - "input_filesize": 1045469, - "model_results": { - "ORIGINAL": { - "121": [ - { - "field_id": 685, - "confidence": { - "1040": 0.9999999934617568, - "1099": 6.538243146895298e-09 - }, - "label": "1040" - } - ], - "124": [ - { - "label": "1040", - "spans": [ - { - "start": 0, - "end": 4072, - "page_num": 0 - }, - { - "start": 4073, - "end": 6929, - "page_num": 1 - } - ], - "span_id": "2926:c:235:idx:0", - "confidence": { - "1040": 0.9745795726776123, - "1099": 0.02542044408619404 - }, - "field_id": 695 - } - ], - "123": [ - { - "label": "Filing Status: Single", - "spans": [], - "span_id": "2924:c:230:idx:0", - "confidence": { - "Filing Status: Single": 0.9999926306382703 - }, - "field_id": 691, - "top": 782, - "bottom": 813, - "left": 400, - "right": 434, - "page_num": 0, - "checked": true, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": true - }, - "formatted": "Checked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Filing Status: Married", - "spans": [], - "span_id": "2924:c:230:idx:1", - "confidence": { - "Filing Status: Married": 0.9999999991662036 - }, - "field_id": 692, - "top": 828, - "bottom": 862, - "left": 400, - "right": 434, - "page_num": 0, - "checked": false, - "type": "checkbox", - "normalized": { - "text": "", - "start": null, - "end": null, - "structured": { - "checked": false - }, - "formatted": "Unchecked", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Signature", - "spans": [ - { - "start": 6433, - "end": 6441, - "page_num": 1 - } - ], - "span_id": "2924:c:230:idx:2", - "confidence": { - "Signature": 0.620139473705776 - }, - "field_id": 693, - "top": 1805, - "bottom": 1925, - "left": 357, - "right": 1071, - "page_num": 1, - "type": "signature", - "text": "John Doe", - "signed": true, - "normalized": { - "text": "John Doe", - "start": 6433, - "end": 6441, - "structured": { - "signed": true - }, - "formatted": "Signed", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Date", - "spans": [ - { - "start": 6442, - "end": 6452, - "page_num": 1 - } - ], - "span_id": "2924:c:230:idx:3", - "confidence": { - "Date": 1.0 - }, - "field_id": 694, - "top": 1805, - "bottom": 1924, - "left": 1072, - "right": 1269, - "page_num": 1, - "type": "text", - "text": "2024-04-15", - "normalized": { - "text": "2024-04-15", - "start": 6442, - "end": 6452, - "structured": { - "day": 15, - "month": 4, - "year": 2024 - }, - "formatted": "April 15, 2024", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ], - "122": [ - { - "label": "First Name", - "spans": [ - { - "start": 352, - "end": 356, - "page_num": 0 - } - ], - "span_id": "2924:c:228:idx:0", - "confidence": { - "Dependent: First Name": 4.654210101762146e-07, - "Dependent: Last Name": 2.646714563070418e-07, - "Dependent: Relationship": 5.558660731708187e-08, - "First Name": 0.9999988079071045, - "Last Name": 4.0229687670034764e-07 - }, - "field_id": 686, - "text": "John", - "normalized": { - "text": "John", - "start": 352, - "end": 356, - "structured": null, - "formatted": "John", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Last Name", - "spans": [ - { - "start": 357, - "end": 360, - "page_num": 0 - } - ], - "span_id": "2924:c:228:idx:1", - "confidence": { - "Dependent: First Name": 9.331763806130766e-08, - "Dependent: Last Name": 1.5924327101402014e-07, - "Dependent: Relationship": 1.5769572314638935e-07, - "First Name": 3.913502268915181e-07, - "Last Name": 0.9999991655349731 - }, - "field_id": 687, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 357, - "end": 360, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Dependent: First Name", - "spans": [ - { - "start": 2011, - "end": 2015, - "page_num": 0 - } - ], - "span_id": "2924:c:228:idx:2", - "confidence": { - "Dependent: First Name": 0.9999992847442627, - "Dependent: Last Name": 3.055288857467531e-07, - "Dependent: Relationship": 1.606294404155051e-07, - "First Name": 9.299924386141356e-08, - "Last Name": 1.4796071923228737e-07 - }, - "field_id": 688, - "text": "Jane", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Jane", - "start": 2011, - "end": 2015, - "structured": null, - "formatted": "Jane", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Dependent: Last Name", - "spans": [ - { - "start": 2016, - "end": 2019, - "page_num": 0 - } - ], - "span_id": "2924:c:228:idx:3", - "confidence": { - "Dependent: First Name": 8.4079402995485e-08, - "Dependent: Last Name": 0.9999996423721313, - "Dependent: Relationship": 4.189759295059048e-08, - "First Name": 6.380826533813888e-08, - "Last Name": 1.2290360018596402e-07 - }, - "field_id": 689, - "text": "Doe", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Doe", - "start": 2016, - "end": 2019, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Dependent: Relationship", - "spans": [ - { - "start": 2020, - "end": 2028, - "page_num": 0 - } - ], - "span_id": "2924:c:228:idx:4", - "confidence": { - "Dependent: First Name": 9.17252407361957e-08, - "Dependent: Last Name": 6.139377717317984e-08, - "Dependent: Relationship": 0.9999996423721313, - "First Name": 5.3535529787041014e-08, - "Last Name": 7.563556891909684e-08 - }, - "field_id": 690, - "text": "Daughter", - "groupings": [ - { - "group_name": "Dependent", - "group_index": 2, - "group_id": "122:Dependent" - } - ], - "normalized": { - "text": "Daughter", - "start": 2020, - "end": 2028, - "structured": null, - "formatted": "Daughter", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - }, - { - "label": "Last Name", - "spans": [ - { - "start": 6438, - "end": 6441, - "page_num": 1 - } - ], - "span_id": "2924:c:228:idx:5", - "confidence": { - "Dependent: First Name": 0.00020139692060183734, - "Dependent: Last Name": 0.10477288067340851, - "Dependent: Relationship": 8.520398841938004e-05, - "First Name": 8.379091741517186e-05, - "Last Name": 0.44778338074684143 - }, - "field_id": 687, - "text": "Doe", - "normalized": { - "text": "Doe", - "start": 6438, - "end": 6441, - "structured": null, - "formatted": "Doe", - "status": "SUCCESS", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ] - }, - "FINAL": {} - }, - "component_results": { - "ORIGINAL": {}, - "FINAL": {} - }, - "rejected": { - "models": { - "121": [], - "123": [], - "122": [] - }, - "components": {} - } - } - ], - "reviews": { - "1310": { - "review_id": 1310, - "reviewer_id": 5, - "review_notes": "Reason for admin rejection", - "review_rejected": true, - "review_type": "admin" - }, - "1309": { - "review_id": 1309, - "reviewer_id": 5, - "review_notes": "Reason for rejection", - "review_rejected": true, - "review_type": "manual" - }, - "1307": { - "review_id": 1307, - "reviewer_id": 5, - "review_notes": null, - "review_rejected": false, - "review_type": "auto" - } - } -} diff --git a/tests/data/results/96127_v3_genai.json b/tests/data/results/96127_v3_genai.json deleted file mode 100644 index ab2b1b7..0000000 --- a/tests/data/results/96127_v3_genai.json +++ /dev/null @@ -1,200 +0,0 @@ -{ - "file_version": 3, - "submission_id": 96127, - "modelgroup_metadata": { - "5561": { - "id": 5561, - "task_type": "genai_classification", - "name": "GenAI Classification", - "selected_model": { "id": 9045, "model_type": "genai" } - }, - "5562": { - "id": 5562, - "task_type": "genai_annotation", - "name": "GenAI Invoice Extraction", - "selected_model": { "id": 9048, "model_type": "genai" } - }, - "5563": { - "id": 5563, - "task_type": "summarization", - "name": "GenAI Purchase Order Summarization", - "selected_model": { "id": 9050, "model_type": "summarization" } - } - }, - "submission_results": [ - { - "submissionfile_id": 89243, - "etl_output": "indico-file:///storage/submission/5216/96127/89243/etl_output.json", - "input_filename": "Invoice.pdf", - "input_filepath": "indico-file:///storage/submission/5216/96127/89243.pdf", - "input_filesize": 426157, - "model_results": { - "ORIGINAL": { - "5562": [ - { - "label": "Invoice Number", - "spans": [ - { "start": 113, "end": 119, "page_num": 0 } - ], - "span_id": "89243:c:18030:idx:0", - "confidence": { - "Invoice Number": 0.23762473235648304 - }, - "field_id": 590168, - "location_type": "exact", - "text": "579266", - "normalized": { - "text": "579266", - "start": 113, - "end": 119, - "structured": null, - "formatted": "579266", - "status": "SUCCESS", - "comparison_type": "string", - "comparison_value": "579266", - "validation": [ - { - "validation_type": "TYPE_CONVERSION", - "error_message": null, - "validation_status": "SUCCESS" - } - ] - } - } - ], - "5561": [ - { - "field_id": 590167, - "confidence": { - "Invoice": 0.9999999857970121 - }, - "label": "Invoice" - } - ] - }, - "FINAL": { - "5562": [ - { - "text": "579266", - "label": "Invoice Number", - "field_id": 590168, - "page_num": 0, - "normalized": { - "end": null, - "text": "579266", - "start": null, - "status": "SUCCESS", - "formatted": "579266", - "structured": {}, - "validation": [ - { - "error_message": null, - "validation_type": "TYPE_CONVERSION", - "validation_status": "SUCCESS" - } - ], - "comparison_type": "string", - "comparison_value": "579266" - } - } - ], - "5561": [ - { - "field_id": 590167, - "confidence": { - "Invoice": 0.9999999857970121 - }, - "label": "Invoice" - } - ], - "5563": [] - } - }, - "component_results": { "ORIGINAL": {}, "FINAL": {} }, - "rejected": { - "models": { "5562": [], "5561": [] }, - "components": {} - } - }, - { - "submissionfile_id": 89244, - "etl_output": "indico-file:///storage/submission/5216/96127/89244/etl_output.json", - "input_filename": "purchase_order.pdf", - "input_filepath": "indico-file:///storage/submission/5216/96127/89244.pdf", - "input_filesize": 80950, - "model_results": { - "ORIGINAL": { - "5563": [ - { - "field_id": 590169, - "confidence": { "Purchase Order Number": 1.0 }, - "label": "Purchase Order Number", - "text": "29111525 [1]", - "citations": [ - { - "document": { - "start": 0, - "end": 1329, - "page_num": 0 - }, - "response": { "start": 9, "end": 12 } - } - ] - } - ], - "5561": [ - { - "field_id": 590167, - "confidence": { - "Purchase Order": 0.9999999846134298 - }, - "label": "Purchase Order" - } - ] - }, - "FINAL": { - "5563": [ - { - "text": "29111525", - "label": "Purchase Order Number", - "field_id": 590169, - "page_num": 0, - "confidence": { "Purchase Order Number": 1 } - } - ], - "5561": [ - { - "field_id": 590167, - "confidence": { - "Purchase Order": 0.9999999846134298 - }, - "label": "Purchase Order" - } - ], - "5562": [] - } - }, - "component_results": { "ORIGINAL": {}, "FINAL": {} }, - "rejected": { - "models": { "5563": [], "5561": [] }, - "components": {} - } - } - ], - "reviews": { - "68458": { - "review_id": 68458, - "reviewer_id": 422, - "review_notes": null, - "review_rejected": false, - "review_type": "manual" - } - }, - "errored_files": { - "89245": { - "submissionfile_id": 89245, - "error": "Traceback (most recent call last):\n\n File \"/venv/.venv/lib/python3.10/site-packages/mediocris/pdfconverter/converter.py\", line 92, in libre_to_pdf\n raise FileProcessingFailed()\n\nmediocris.pdfconverter.errors.FileProcessingFailed\n\n\nDuring handling of the above exception, another exception occurred:\n\n\nTraceback (most recent call last):\n\n File \"/venv/.venv/lib/python3.10/site-packages/mediocris/pdfconverter/converter.py\", line 92, in libre_to_pdf\n raise FileProcessingFailed()\n\nmediocris.pdfconverter.errors.FileProcessingFailed\n\n\nDuring handling of the above exception, another exception occurred:\n\n\nTraceback (most recent call last):\n\n File \"/readapi/readapi/celery_tasks/submission.py\", line 87, in _\n readapi_input: dict = await get_readapi_client().prepare_for_ocr(\n\n File \"/readapi/readapi/read/readapi.py\", line 193, in prepare_for_ocr\n pdf_path: str = await async_convert_file(\n\n File \"/readapi/readapi/read/readapi.py\", line 127, in async_convert_file\n filename: str = await asyncio.wait_for(\n\n File \"/usr/lib/python3.10/asyncio/tasks.py\", line 445, in wait_for\n return fut.result()\n\n File \"/usr/lib/python3.10/asyncio/threads.py\", line 25, in to_thread\n return await loop.run_in_executor(None, func_call)\n\n File \"/usr/lib/python3.10/concurrent/futures/thread.py\", line 58, in run\n result = self.fn(*self.args, **self.kwargs)\n\n File \"/venv/.venv/lib/python3.10/site-packages/mediocris/pdfconverter/convert.py\", line 82, in write_and_convert_file\n convert_to_pdf(\n\n File \"/venv/.venv/lib/python3.10/site-packages/mediocris/pdfconverter/convert.py\", line 278, in convert_to_pdf\n libre_to_pdf(file_path, pdf_file_path, timeout=timeout)\n\n File \"/venv/.venv/lib/python3.10/site-packages/mediocris/pdfconverter/converter.py\", line 105, in libre_to_pdf\n result = libre_to_pdf(\n\n File \"/venv/.venv/lib/python3.10/site-packages/mediocris/pdfconverter/converter.py\", line 114, in libre_to_pdf\n raise InvalidFile(\"Failed to process input file.\")\n\nmediocris.pdfconverter.errors.InvalidFile: Failed to process input file.", - "reason": "Error preparing for OCR, skipping submission file 'technical_questions.docx' with id '89245'" - } - } -} diff --git a/tests/data/results/classify_extract_accepted.json b/tests/data/results/classify_extract_accepted.json new file mode 100644 index 0000000..1cc6bc8 --- /dev/null +++ b/tests/data/results/classify_extract_accepted.json @@ -0,0 +1,2526 @@ +{ + "file_version": 3, + "submission_id": 97717, + "modelgroup_metadata": { + "5446": { + "id": 5446, + "task_type": "classification", + "name": "Accounting Classification", + "selected_model": { + "id": 8796, + "model_type": "tfidf_gbt" + } + }, + "5447": { + "id": 5447, + "task_type": "annotation", + "name": "Invoice Document Extraction", + "selected_model": { + "id": 10222, + "model_type": "finetune" + } + }, + "5448": { + "id": 5448, + "task_type": "annotation", + "name": "Purchase Order Extraction", + "selected_model": { + "id": 10223, + "model_type": "finetune" + } + }, + "6118": { + "id": 6118, + "task_type": "form_extraction", + "name": "Acord Form Extraction", + "selected_model": { + "id": 10224, + "model_type": "form_extraction" + } + } + }, + "component_metadata": { + "17680": { + "id": 17680, + "name": null, + "component_type": "input_ocr_extraction", + "task_type": null + }, + "17681": { + "id": 17681, + "name": null, + "component_type": "output_json_formatter", + "task_type": null + }, + "17682": { + "id": 17682, + "name": "Document Classification", + "component_type": "model_group", + "task_type": "classification" + }, + "17683": { + "id": 17683, + "name": "Model Link", + "component_type": "link_classification_model", + "task_type": "classification" + }, + "17684": { + "id": 17684, + "name": "Document Extraction", + "component_type": "model_group", + "task_type": "annotation" + }, + "17685": { + "id": 17685, + "name": "Document Extraction", + "component_type": "model_group", + "task_type": "annotation" + }, + "17687": { + "id": 17687, + "name": "Review", + "component_type": "review", + "task_type": null + }, + "17688": { + "id": 17688, + "name": "Standard Output", + "component_type": "default_output", + "task_type": null + }, + "17689": { + "id": 17689, + "name": "Invoice Line Items", + "component_type": "link_label", + "task_type": "annotation" + }, + "19736": { + "id": 19736, + "name": "Form Extraction", + "component_type": "model_group", + "task_type": "form_extraction" + } + }, + "submission_results": [ + { + "submissionfile_id": 95508, + "etl_output": "indico-file:///storage/submission/5120/97717/95508/etl_output.json", + "input_filename": "acord.pdf", + "input_filepath": "indico-file:///storage/submission/5120/97717/95508.pdf", + "input_filesize": 242331, + "model_results": { + "ORIGINAL": { + "5446": [ + { + "field_id": 554471, + "confidence": { + "Invoice": 0.9983696357001948, + "Purchase Order": 0.0016303642998051805 + }, + "label": "Invoice" + } + ], + "6118": [ + { + "label": "Agency", + "spans": [ + { + "start": 35, + "end": 61, + "page_num": 0 + } + ], + "span_id": "95508:c:19736:idx:0", + "confidence": { + "Agency": 1.0 + }, + "field_id": 876477, + "location_type": "exact", + "top": 201, + "bottom": 448, + "left": 73, + "right": 1266, + "page_num": 0, + "type": "text", + "text": "Indico Data Solutions Inc.", + "normalized": { + "text": "Indico Data Solutions Inc.", + "start": 35, + "end": 61, + "structured": null, + "formatted": "Indico Data Solutions Inc.", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Indico Data Solutions Inc.", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Fire", + "spans": [], + "span_id": "95508:c:19736:idx:1", + "confidence": { + "Fire": 0.9999999964041294 + }, + "field_id": 876470, + "location_type": "exact", + "top": 2352, + "bottom": 2398, + "left": 206, + "right": 264, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Theft", + "spans": [], + "span_id": "95508:c:19736:idx:2", + "confidence": { + "Theft": 0.9999999883911289 + }, + "field_id": 876471, + "location_type": "exact", + "top": 2401, + "bottom": 2446, + "left": 207, + "right": 261, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Lightning", + "spans": [], + "span_id": "95508:c:19736:idx:3", + "confidence": { + "Lightning": 0.9998268387285644 + }, + "field_id": 876472, + "location_type": "exact", + "top": 2351, + "bottom": 2395, + "left": 416, + "right": 472, + "page_num": 0, + "checked": true, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": true + }, + "formatted": "Checked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Hail", + "spans": [], + "span_id": "95508:c:19736:idx:4", + "confidence": { + "Hail": 0.9999999842620407 + }, + "field_id": 876473, + "location_type": "exact", + "top": 2399, + "bottom": 2448, + "left": 416, + "right": 473, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Flood", + "spans": [], + "span_id": "95508:c:19736:idx:5", + "confidence": { + "Flood": 0.9999999985638672 + }, + "field_id": 876474, + "location_type": "exact", + "top": 2352, + "bottom": 2398, + "left": 657, + "right": 714, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Wind", + "spans": [], + "span_id": "95508:c:19736:idx:6", + "confidence": { + "Wind": 0.9999999962468843 + }, + "field_id": 876475, + "location_type": "exact", + "top": 2399, + "bottom": 2449, + "left": 657, + "right": 714, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Reporter Signature", + "spans": [ + { + "start": 1535, + "end": 1543, + "page_num": 0 + } + ], + "span_id": "95508:c:19736:idx:7", + "confidence": { + "Reporter Signature": 0.6324167015617136 + }, + "field_id": 876476, + "location_type": "exact", + "top": 2999, + "bottom": 3097, + "left": 75, + "right": 1270, + "page_num": 0, + "type": "text", + "text": "John Doe", + "signed": false, + "normalized": { + "text": "John Doe", + "start": 1535, + "end": 1543, + "structured": { + "signed": false + }, + "formatted": "Unsigned", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Unsigned", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ], + "5447": [ + { + "label": "Invoice Date", + "spans": [ + { + "start": 1569, + "end": 1570, + "page_num": 0 + } + ], + "span_id": "95508:c:17684:idx:0", + "confidence": { + "Invoice Date": 0.8117260932922363, + "Invoice Number": 9.211415999743622e-06, + "Invoice Subtotal": 6.8906156229786575e-06, + "Invoice Tax": 8.797347254585475e-05, + "Invoice Total": 1.3973905879538506e-05, + "Line Item Name": 3.142923378618434e-05, + "Line Item Quantity": 5.212751148064854e-06, + "Line Item Total": 7.055744845274603e-06, + "Vendor Name": 6.338641014735913e-06 + }, + "field_id": 554473, + "location_type": "exact", + "text": "/", + "groupings": [], + "normalized": { + "text": "/", + "start": 1569, + "end": 1570, + "structured": null, + "formatted": "/", + "status": "INFO", + "comparison_type": "number", + "comparison_value": null, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": "No valid date matches found", + "validation_status": "INFO" + } + ] + } + } + ] + }, + "FINAL": { + "5446": [ + { + "field_id": 554471, + "confidence": { + "Invoice": 0.9983696357001948, + "Purchase Order": 0.0016303642998051805 + }, + "label": "Invoice" + } + ], + "6118": [ + { + "top": 201, + "left": 73, + "text": "Indico Data Solutions Inc.", + "type": "text", + "label": "Agency", + "right": 1266, + "spans": [ + { + "end": 61, + "start": 35, + "page_num": 0 + } + ], + "bottom": 448, + "span_id": "95508:c:19736:idx:0", + "field_id": 876477, + "page_num": 0, + "confidence": { + "Agency": 1 + }, + "normalized": { + "text": "Indico Data Solutions Inc.", + "status": "SUCCESS", + "formatted": "Indico Data Solutions Inc.", + "structured": {}, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + }, + { + "error_message": null, + "validation_type": "MIN_CONFIDENCE", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "Indico Data Solutions Inc." + }, + "location_type": "exact" + }, + { + "top": 2351, + "left": 416, + "text": "", + "type": "checkbox", + "label": "Lightning", + "right": 472, + "bottom": 2395, + "checked": true, + "span_id": "95508:c:19736:idx:3", + "field_id": 876472, + "page_num": 0, + "confidence": { + "Lightning": 0.9998268387285644 + }, + "normalized": { + "text": "", + "status": "SUCCESS", + "formatted": "Checked", + "structured": { + "checked": true + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "number", + "comparison_value": 1 + }, + "location_type": "exact" + }, + { + "top": 2352, + "left": 206, + "text": "", + "type": "checkbox", + "label": "Fire", + "right": 264, + "bottom": 2398, + "checked": true, + "span_id": "95508:c:19736:idx:1", + "field_id": 876470, + "page_num": 0, + "confidence": { + "Fire": 0.9999999964041294 + }, + "normalized": { + "text": "", + "status": "SUCCESS", + "formatted": "Checked", + "structured": { + "checked": true + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "" + }, + "location_type": "exact" + }, + { + "top": 3003, + "left": 73, + "text": "", + "type": "signature", + "label": "Reporter Signature", + "right": 1273, + "bottom": 3101, + "signed": true, + "field_id": 876476, + "page_num": 0, + "normalized": { + "text": "", + "status": "SUCCESS", + "formatted": "Signed", + "structured": { + "signed": true + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "" + } + }, + { + "text": "Manually Added Agency", + "type": "text", + "label": "Agency", + "field_id": 876477, + "page_num": 0, + "normalized": { + "text": "Manually Added Agency", + "status": "SUCCESS", + "formatted": "Manually Added Agency", + "structured": {}, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + }, + { + "error_message": null, + "validation_type": "MIN_CONFIDENCE", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "Manually Added Agency" + } + } + ], + "5447": [], + "5448": [] + } + }, + "component_results": { + "ORIGINAL": {}, + "FINAL": {} + }, + "rejected": { + "models": { + "5446": [], + "6118": [], + "5447": [] + }, + "components": {} + } + }, + { + "submissionfile_id": 95510, + "etl_output": "indico-file:///storage/submission/5120/97717/95510/etl_output.json", + "input_filename": "invoice.pdf", + "input_filepath": "indico-file:///storage/submission/5120/97717/95510.pdf", + "input_filesize": 426157, + "model_results": { + "ORIGINAL": { + "5446": [ + { + "field_id": 554471, + "confidence": { + "Invoice": 0.9999999853918985, + "Purchase Order": 1.4608101511772668e-08 + }, + "label": "Invoice" + } + ], + "6118": [], + "5447": [ + { + "label": "Vendor Name", + "spans": [ + { + "start": 0, + "end": 13, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:0", + "confidence": { + "Invoice Date": 2.400350584963462e-09, + "Invoice Number": 8.615306512638199e-08, + "Invoice Subtotal": 1.574784569413623e-08, + "Invoice Tax": 3.4804223503215326e-08, + "Invoice Total": 3.3525918752275174e-07, + "Line Item Name": 5.377413714313661e-08, + "Line Item Quantity": 4.938188080672035e-09, + "Line Item Total": 3.7823695286931525e-09, + "Vendor Name": 0.9999908208847046 + }, + "field_id": 554472, + "location_type": "exact", + "text": "HubSpot, Inc.", + "groupings": [] + }, + { + "label": "Invoice Date", + "spans": [ + { + "start": 125, + "end": 135, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:1", + "confidence": { + "Invoice Date": 0.9999942779541016, + "Invoice Number": 1.1598333315987475e-07, + "Invoice Subtotal": 2.1972986985474563e-08, + "Invoice Tax": 3.641215243987972e-06, + "Invoice Total": 4.4100261220592074e-07, + "Line Item Name": 9.148626389787751e-08, + "Line Item Quantity": 2.35244641544341e-07, + "Line Item Total": 5.503422784158829e-08, + "Vendor Name": 4.493779215408722e-08 + }, + "field_id": 554473, + "location_type": "exact", + "text": "06/21/2016", + "groupings": [], + "normalized": { + "text": "06/21/2016", + "start": 125, + "end": 135, + "structured": { + "day": 21, + "month": 6, + "year": 2016 + }, + "formatted": "06/21/2016", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1466467200.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Number", + "spans": [ + { + "start": 146, + "end": 153, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:2", + "confidence": { + "Invoice Date": 5.598737473633264e-08, + "Invoice Number": 0.999999463558197, + "Invoice Subtotal": 4.058968272602215e-08, + "Invoice Tax": 6.889321468861453e-08, + "Invoice Total": 1.5093485572492682e-08, + "Line Item Name": 1.1201677807548549e-08, + "Line Item Quantity": 7.595297168982995e-10, + "Line Item Total": 6.70873911978731e-11, + "Vendor Name": 1.8480035279822005e-08 + }, + "field_id": 554474, + "location_type": "exact", + "text": "3927578", + "groupings": [], + "normalized": { + "text": "3927578", + "start": 146, + "end": 153, + "structured": null, + "formatted": "3927578", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "3927578", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Name", + "spans": [ + { + "start": 340, + "end": 407, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:3", + "confidence": { + "Invoice Date": 1.7565442433919998e-08, + "Invoice Number": 2.365634976797537e-08, + "Invoice Subtotal": 3.1575535075489825e-08, + "Invoice Tax": 5.957954574142832e-09, + "Invoice Total": 4.966599576050612e-09, + "Line Item Name": 0.9999649524688721, + "Line Item Quantity": 1.7177193001316482e-08, + "Line Item Total": 7.645165056580083e-10, + "Vendor Name": 5.279783636069624e-06 + }, + "field_id": 554475, + "location_type": "exact", + "text": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "start": 340, + "end": 407, + "structured": null, + "formatted": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 476, + "end": 477, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:4", + "confidence": { + "Invoice Date": 2.0007496459584218e-07, + "Invoice Number": 5.268412373027331e-09, + "Invoice Subtotal": 2.0731549739139155e-06, + "Invoice Tax": 7.271044211165645e-08, + "Invoice Total": 9.540383416606346e-07, + "Line Item Name": 3.446030518716725e-07, + "Line Item Quantity": 0.9992546439170837, + "Line Item Total": 0.0007325292099267244, + "Vendor Name": 9.231066542270128e-07 + }, + "field_id": 554476, + "location_type": "exact", + "text": "1", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "1", + "start": 476, + "end": 477, + "structured": { + "currency": null, + "amount": 1.0, + "currency_symbol": null + }, + "formatted": "$1.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 478, + "end": 487, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:5", + "confidence": { + "Invoice Date": 2.2957024725656083e-08, + "Invoice Number": 4.731684821734916e-09, + "Invoice Subtotal": 3.5948771255789325e-05, + "Invoice Tax": 1.440768215843491e-07, + "Invoice Total": 9.350693375154151e-08, + "Line Item Name": 6.605429803130392e-07, + "Line Item Quantity": 3.4471519029466435e-05, + "Line Item Total": 0.9999279975891113, + "Vendor Name": 7.658569245450053e-08 + }, + "field_id": 554477, + "location_type": "exact", + "text": "$1,200.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "$1,200.00", + "start": 478, + "end": 487, + "structured": { + "currency": "USD", + "amount": 1200.0, + "currency_symbol": "$" + }, + "formatted": "$1,200.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1200.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 499, + "end": 501, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:6", + "confidence": { + "Invoice Date": 1.076231548324813e-08, + "Invoice Number": 1.1603896732381713e-09, + "Invoice Subtotal": 3.864898019401153e-07, + "Invoice Tax": 6.23728979576299e-08, + "Invoice Total": 9.395338906870165e-08, + "Line Item Name": 4.1748722878764966e-07, + "Line Item Quantity": 0.9994648098945618, + "Line Item Total": 0.0005268307868391275, + "Vendor Name": 1.0827177732153359e-07 + }, + "field_id": 554476, + "location_type": "exact", + "text": "10", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 5, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "10", + "start": 499, + "end": 501, + "structured": { + "currency": null, + "amount": 10.0, + "currency_symbol": null + }, + "formatted": "$10.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 10.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 502, + "end": 507, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:7", + "confidence": { + "Invoice Date": 1.5343369907938609e-09, + "Invoice Number": 1.4856093022430628e-09, + "Invoice Subtotal": 1.594042441865895e-05, + "Invoice Tax": 2.384278445788368e-07, + "Invoice Total": 1.1305982638987189e-07, + "Line Item Name": 8.561663662476349e-07, + "Line Item Quantity": 6.795264198444784e-05, + "Line Item Total": 0.9999126195907593, + "Vendor Name": 4.1239573533857765e-07 + }, + "field_id": 554477, + "location_type": "exact", + "text": "$0.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 5, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "$0.00", + "start": 502, + "end": 507, + "structured": { + "currency": "USD", + "amount": 0.0, + "currency_symbol": "$" + }, + "formatted": "$0.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 519, + "end": 520, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:8", + "confidence": { + "Invoice Date": 2.8531161433420493e-08, + "Invoice Number": 4.069365733272434e-09, + "Invoice Subtotal": 6.226035111467354e-06, + "Invoice Tax": 1.6429021343355998e-06, + "Invoice Total": 2.72286882818662e-07, + "Line Item Name": 6.900664288878033e-07, + "Line Item Quantity": 0.9983378648757935, + "Line Item Total": 0.0016476557357236743, + "Vendor Name": 2.637806630900741e-07 + }, + "field_id": 554476, + "location_type": "exact", + "text": "5", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 6, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "5", + "start": 519, + "end": 520, + "structured": { + "currency": null, + "amount": 5.0, + "currency_symbol": null + }, + "formatted": "$5.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 5.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 521, + "end": 527, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:9", + "confidence": { + "Invoice Date": 7.177814786984982e-09, + "Invoice Number": 3.1152287416347235e-09, + "Invoice Subtotal": 4.165806603850797e-05, + "Invoice Tax": 3.2139239465323044e-06, + "Invoice Total": 2.033676160806408e-08, + "Line Item Name": 9.56858912104508e-07, + "Line Item Quantity": 3.715637285495177e-05, + "Line Item Total": 0.9999152421951294, + "Vendor Name": 3.6665915104094893e-07 + }, + "field_id": 554477, + "location_type": "exact", + "text": "$25.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 6, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "$25.00", + "start": 521, + "end": 527, + "structured": { + "currency": "USD", + "amount": 25.0, + "currency_symbol": "$" + }, + "formatted": "$25.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 25.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Subtotal", + "spans": [ + { + "start": 537, + "end": 546, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:10", + "confidence": { + "Invoice Date": 1.2479067557080725e-08, + "Invoice Number": 1.037754504551458e-08, + "Invoice Subtotal": 0.999993622303009, + "Invoice Tax": 1.511050413682824e-06, + "Invoice Total": 1.1302825697612207e-07, + "Line Item Name": 3.7292852539394516e-07, + "Line Item Quantity": 1.6987804940526985e-07, + "Line Item Total": 6.638203444708779e-07, + "Vendor Name": 5.14679413754493e-07 + }, + "field_id": 554478, + "location_type": "exact", + "text": "$1,225.00", + "groupings": [], + "normalized": { + "text": "$1,225.00", + "start": 537, + "end": 546, + "structured": { + "currency": "USD", + "amount": 1225.0, + "currency_symbol": "$" + }, + "formatted": "$1,225.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1225.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Tax", + "spans": [ + { + "start": 557, + "end": 563, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:11", + "confidence": { + "Invoice Date": 4.953463417223247e-09, + "Invoice Number": 6.921577551111113e-07, + "Invoice Subtotal": 5.481627596282124e-08, + "Invoice Tax": 0.9999969005584717, + "Invoice Total": 7.9409846875933e-07, + "Line Item Name": 1.860678366938373e-08, + "Line Item Quantity": 6.929780482778369e-08, + "Line Item Total": 6.931463047976649e-08, + "Vendor Name": 9.391482791443195e-08 + }, + "field_id": 554479, + "location_type": "exact", + "text": "$76.56", + "groupings": [], + "normalized": { + "text": "$76.56", + "start": 557, + "end": 563, + "structured": { + "currency": "USD", + "amount": 76.56, + "currency_symbol": "$" + }, + "formatted": "$76.56", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 76.56, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Total", + "spans": [ + { + "start": 570, + "end": 579, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:12", + "confidence": { + "Invoice Date": 2.4829425626649027e-08, + "Invoice Number": 3.630819733757562e-08, + "Invoice Subtotal": 3.666984014216723e-07, + "Invoice Tax": 1.9052085917792283e-05, + "Invoice Total": 0.9999463558197021, + "Line Item Name": 6.92955914871618e-09, + "Line Item Quantity": 6.221291073416069e-07, + "Line Item Total": 1.4124430514073083e-09, + "Vendor Name": 2.59860030382697e-06 + }, + "field_id": 554480, + "location_type": "exact", + "text": "$1,301.56", + "groupings": [], + "normalized": { + "text": "$1,301.56", + "start": 570, + "end": 579, + "structured": { + "currency": "USD", + "amount": 1301.56, + "currency_symbol": "$" + }, + "formatted": "$1,301.56", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1301.56, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ] + }, + "FINAL": { + "5446": [ + { + "field_id": 554471, + "confidence": { + "Invoice": 0.9999999853918985, + "Purchase Order": 1.4608101511772668e-08 + }, + "label": "Invoice" + } + ], + "6118": [], + "5447": [ + { + "text": "Edited", + "label": "Vendor Name", + "spans": [ + { + "end": 13, + "start": 0, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:0", + "field_id": 554472, + "page_num": 0, + "groupings": [], + "confidence": { + "Invoice Tax": 3.4804223503215326e-08, + "Vendor Name": 0.9999908208847046, + "Invoice Date": 2.400350584963462e-09, + "Invoice Total": 3.3525918752275174e-07, + "Invoice Number": 8.615306512638199e-08, + "Line Item Name": 5.377413714313661e-08, + "Line Item Total": 3.7823695286931525e-09, + "Invoice Subtotal": 1.574784569413623e-08, + "Line Item Quantity": 4.938188080672035e-09 + }, + "normalized": { + "end": 13, + "text": "HubSpot, Inc.", + "start": 0, + "status": "INFO", + "formatted": "HubSpot, Inc.", + "structured": {}, + "validation": [ + { + "error_message": "Failed with error: ", + "validation_type": "TYPE_CONVERSION", + "validation_status": "INFO" + }, + { + "error_message": null, + "validation_type": "MIN_CONFIDENCE", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "HubSpot, Inc." + }, + "location_type": "exact" + }, + { + "text": "06/21/2016", + "label": "Invoice Date", + "spans": [ + { + "end": 135, + "start": 125, + "page_num": 1 + } + ], + "field_id": 554473, + "page_num": 0, + "groupings": [], + "normalized": { + "end": 135, + "text": "06/21/2016", + "start": 125, + "status": "SUCCESS", + "formatted": "06/21/2016", + "structured": { + "day": 21, + "year": 2016, + "month": 6 + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "06/21/2016" + } + }, + { + "text": "HubSpot Enterprise", + "label": "Line Item Name", + "spans": [ + { + "end": 358, + "start": 340, + "page_num": 1 + } + ], + "field_id": 554475, + "page_num": 0, + "groupings": [ + { + "group_id": "5447:Invoice Line Item", + "group_name": "Invoice Line Item", + "group_index": 1 + } + ], + "normalized": { + "end": 358, + "text": "HubSpot Enterprise", + "start": 340, + "status": "SUCCESS", + "formatted": "HubSpot Enterprise", + "structured": {}, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "HubSpot Enterprise" + } + }, + { + "text": "Included Contacts", + "label": "Line Item Name", + "spans": [ + { + "end": 376, + "start": 359, + "page_num": 1 + } + ], + "field_id": 554475, + "page_num": 0, + "groupings": [ + { + "group_id": "5447:Invoice Line Item", + "group_name": "Invoice Line Item", + "group_index": 2 + } + ], + "normalized": { + "end": 376, + "text": "Included Contacts", + "start": 359, + "status": "SUCCESS", + "formatted": "Included Contacts", + "structured": {}, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "Included Contacts" + } + }, + { + "text": "1", + "label": "Line Item Quantity", + "spans": [ + { + "end": 477, + "start": 476, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:4", + "field_id": 554476, + "page_num": 0, + "groupings": [ + { + "group_id": "5447:Invoice Line Item", + "group_name": "Invoice Line Item", + "group_index": 1 + } + ], + "confidence": { + "Invoice Tax": 7.271044211165645e-08, + "Vendor Name": 9.231066542270128e-07, + "Invoice Date": 2.0007496459584218e-07, + "Invoice Total": 9.540383416606346e-07, + "Invoice Number": 5.268412373027331e-09, + "Line Item Name": 3.446030518716725e-07, + "Line Item Total": 0.0007325292099267244, + "Invoice Subtotal": 2.0731549739139155e-06, + "Line Item Quantity": 0.9992546439170837 + }, + "normalized": { + "end": 477, + "text": "1", + "start": 476, + "status": "SUCCESS", + "formatted": "$1.00", + "structured": { + "amount": 1, + "currency": null, + "currencySymbol": null + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "number", + "comparison_value": 1 + }, + "location_type": "exact" + }, + { + "text": "$1,200.00", + "label": "Line Item Total", + "spans": [ + { + "end": 487, + "start": 478, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:5", + "field_id": 554477, + "page_num": 0, + "groupings": [ + { + "group_id": "5447:Invoice Line Item", + "group_name": "Invoice Line Item", + "group_index": 1 + } + ], + "confidence": { + "Invoice Tax": 1.440768215843491e-07, + "Vendor Name": 7.658569245450053e-08, + "Invoice Date": 2.2957024725656083e-08, + "Invoice Total": 9.350693375154151e-08, + "Invoice Number": 4.731684821734916e-09, + "Line Item Name": 6.605429803130392e-07, + "Line Item Total": 0.9999279975891113, + "Invoice Subtotal": 3.5948771255789325e-05, + "Line Item Quantity": 3.4471519029466435e-05 + }, + "normalized": { + "end": 487, + "text": "$1,200.00", + "start": 478, + "status": "SUCCESS", + "formatted": "$1,200.00", + "structured": { + "amount": 1200, + "currency": "USD", + "currencySymbol": "$" + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + }, + { + "error_message": null, + "validation_type": "MIN_CONFIDENCE", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "number", + "comparison_value": 1200 + }, + "location_type": "exact" + }, + { + "text": "10", + "label": "Line Item Quantity", + "spans": [ + { + "end": 501, + "start": 499, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:6", + "field_id": 554476, + "page_num": 0, + "groupings": [ + { + "group_id": "5447:Invoice Line Item", + "group_name": "Invoice Line Item", + "group_index": 2 + } + ], + "confidence": { + "Invoice Tax": 6.23728979576299e-08, + "Vendor Name": 1.0827177732153359e-07, + "Invoice Date": 1.076231548324813e-08, + "Invoice Total": 9.395338906870165e-08, + "Invoice Number": 1.1603896732381713e-09, + "Line Item Name": 4.1748722878764966e-07, + "Line Item Total": 0.0005268307868391275, + "Invoice Subtotal": 3.864898019401153e-07, + "Line Item Quantity": 0.9994648098945618 + }, + "normalized": { + "end": 501, + "text": "10", + "start": 499, + "status": "SUCCESS", + "formatted": "$10.00", + "structured": { + "amount": 10, + "currency": null, + "currencySymbol": null + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "number", + "comparison_value": 10 + }, + "location_type": "exact" + }, + { + "text": "$0.00", + "label": "Line Item Total", + "spans": [ + { + "end": 507, + "start": 502, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:7", + "field_id": 554477, + "page_num": 0, + "groupings": [ + { + "group_id": "5447:Invoice Line Item", + "group_name": "Invoice Line Item", + "group_index": 2 + } + ], + "confidence": { + "Invoice Tax": 2.384278445788368e-07, + "Vendor Name": 4.1239573533857765e-07, + "Invoice Date": 1.5343369907938609e-09, + "Invoice Total": 1.1305982638987189e-07, + "Invoice Number": 1.4856093022430628e-09, + "Line Item Name": 8.561663662476349e-07, + "Line Item Total": 0.9999126195907593, + "Invoice Subtotal": 1.594042441865895e-05, + "Line Item Quantity": 6.795264198444784e-05 + }, + "normalized": { + "end": 507, + "text": "$0.00", + "start": 502, + "status": "SUCCESS", + "formatted": "$0.00", + "structured": { + "amount": 0, + "currency": "USD", + "currencySymbol": "$" + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + }, + { + "error_message": null, + "validation_type": "MIN_CONFIDENCE", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "number", + "comparison_value": "$0.00" + }, + "location_type": "exact" + } + ], + "5448": [] + } + }, + "component_results": { + "ORIGINAL": {}, + "FINAL": {} + }, + "rejected": { + "models": { + "5446": [], + "6118": [], + "5447": [] + }, + "components": {} + } + }, + { + "submissionfile_id": 95511, + "etl_output": "indico-file:///storage/submission/5120/97717/95511/etl_output.json", + "input_filename": "purchase_order.pdf", + "input_filepath": "indico-file:///storage/submission/5120/97717/95511.pdf", + "input_filesize": 80950, + "model_results": { + "ORIGINAL": { + "5446": [ + { + "field_id": 554471, + "confidence": { + "Purchase Order": 0.9999999850173318, + "Invoice": 1.4982668217200512e-08 + }, + "label": "Purchase Order" + } + ], + "5448": [ + { + "label": "PO Number", + "spans": [ + { + "start": 150, + "end": 158, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:0", + "confidence": { + "Buyer ID": 1.2627575642909505e-06, + "Buyer Name": 2.447901010782516e-07, + "PO Date": 1.1118426300527062e-05, + "PO Number": 0.9999815821647644, + "PO Total": 2.3315555708336433e-08, + "Product Code": 3.630110995800351e-06, + "Product Description": 1.4727102204403764e-08, + "Product Quantity": 6.1471610024455e-07, + "Product Total": 1.2719820574602636e-07, + "Product Unit Cost": 1.616589599962026e-07 + }, + "field_id": 554489, + "location_type": "exact", + "text": "29111525", + "normalized": { + "text": "29111525", + "start": 150, + "end": 158, + "structured": null, + "formatted": "29111525", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "29111525", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Buyer Name", + "spans": [ + { + "start": 342, + "end": 355, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:2", + "confidence": { + "Buyer ID": 1.2982777661818545e-06, + "Buyer Name": 0.9999947547912598, + "PO Date": 8.240203186460349e-08, + "PO Number": 7.985746464100885e-08, + "PO Total": 1.7511210259613108e-09, + "Product Code": 1.1287174572771619e-07, + "Product Description": 1.2632793868760928e-06, + "Product Quantity": 1.5098430594662204e-07, + "Product Total": 1.93391009872812e-08, + "Product Unit Cost": 2.2306220870405014e-08 + }, + "field_id": 554482, + "location_type": "exact", + "text": "Michelle Amos", + "normalized": { + "text": "Michelle Amos", + "start": 342, + "end": 355, + "structured": { + "type": "Person", + "full_name": "Michelle Amos", + "title": null, + "first": "Michelle", + "middle": null, + "last": "Amos", + "suffix": null + }, + "formatted": "Michelle Amos", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Michelle Amos", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "PO Date", + "spans": [ + { + "start": 356, + "end": 364, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:3", + "confidence": { + "Buyer ID": 3.822090548055712e-06, + "Buyer Name": 8.714440724588712e-08, + "PO Date": 0.9999903440475464, + "PO Number": 4.136407369514927e-06, + "PO Total": 1.4920766844284117e-09, + "Product Code": 2.1699176500078465e-07, + "Product Description": 8.091866732229391e-09, + "Product Quantity": 3.829829893220449e-07, + "Product Total": 1.9468048151338735e-07, + "Product Unit Cost": 5.011253847442276e-07 + }, + "field_id": 554483, + "location_type": "exact", + "text": "06/16/21", + "normalized": { + "text": "06/16/21", + "start": 356, + "end": 364, + "structured": { + "day": 16, + "month": 6, + "year": 2021 + }, + "formatted": "06/16/2021", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1623801600.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Buyer ID", + "spans": [ + { + "start": 380, + "end": 385, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:4", + "confidence": { + "Buyer ID": 0.9999929070472717, + "Buyer Name": 4.93660820666264e-07, + "PO Date": 3.8837319493723044e-07, + "PO Number": 2.8662989848271536e-07, + "PO Total": 1.0579029208201973e-07, + "Product Code": 7.133622261790151e-07, + "Product Description": 5.113787793220581e-08, + "Product Quantity": 1.0991599310727906e-06, + "Product Total": 5.646242939860713e-08, + "Product Unit Cost": 2.0277305168292514e-07 + }, + "field_id": 554481, + "location_type": "exact", + "text": "86847", + "normalized": { + "text": "86847", + "start": 380, + "end": 385, + "structured": null, + "formatted": "86847", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "86847", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Quantity", + "spans": [ + { + "start": 532, + "end": 534, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:5", + "confidence": { + "Buyer ID": 3.2345758427254623e-06, + "Buyer Name": 4.632624381883943e-07, + "PO Date": 8.714248451724416e-07, + "PO Number": 3.8181426020855724e-07, + "PO Total": 1.0790621729483973e-07, + "Product Code": 5.301757482811809e-06, + "Product Description": 3.633870804264916e-08, + "Product Quantity": 0.9999887943267822, + "Product Total": 1.495936459150471e-07, + "Product Unit Cost": 5.2666379701804544e-08 + }, + "field_id": 554484, + "location_type": "exact", + "text": "60", + "normalized": { + "text": "60", + "start": 532, + "end": 534, + "structured": null, + "formatted": "60", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "60", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Code", + "spans": [ + { + "start": 535, + "end": 541, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:6", + "confidence": { + "Buyer ID": 2.7396484370001417e-07, + "Buyer Name": 1.3114745343045797e-06, + "PO Date": 4.440954626261373e-08, + "PO Number": 3.3387289022357436e-07, + "PO Total": 2.2077864869629593e-08, + "Product Code": 0.9999920129776001, + "Product Description": 3.4629613310244167e-07, + "Product Quantity": 3.294227781225345e-06, + "Product Total": 1.1255536946919165e-06, + "Product Unit Cost": 1.0448789389272406e-08 + }, + "field_id": 554485, + "location_type": "exact", + "text": "605220", + "normalized": { + "text": "605220", + "start": 535, + "end": 541, + "structured": null, + "formatted": "605220", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "605220", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Description", + "spans": [ + { + "start": 542, + "end": 564, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:7", + "confidence": { + "Buyer ID": 3.993866215523667e-08, + "Buyer Name": 1.4608106368996232e-07, + "PO Date": 1.2237320490271486e-08, + "PO Number": 6.42832898023471e-09, + "PO Total": 1.6042527306581178e-09, + "Product Code": 7.234188501570316e-07, + "Product Description": 0.9999908208847046, + "Product Quantity": 1.6196107566202045e-08, + "Product Total": 1.4558002803255476e-08, + "Product Unit Cost": 1.2452557207609516e-08 + }, + "field_id": 554486, + "location_type": "exact", + "text": "JELTRATE DUSTLESS FAST", + "normalized": { + "text": "JELTRATE DUSTLESS FAST", + "start": 542, + "end": 564, + "structured": null, + "formatted": "JELTRATE DUSTLESS FAST", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "JELTRATE DUSTLESS FAST", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Unit Cost", + "spans": [ + { + "start": 565, + "end": 570, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:8", + "confidence": { + "Buyer ID": 2.6427224497638235e-07, + "Buyer Name": 4.014124854734291e-08, + "PO Date": 4.016795003281004e-07, + "PO Number": 2.3258805015302642e-07, + "PO Total": 1.7378805239331996e-07, + "Product Code": 7.95176617884863e-08, + "Product Description": 8.015751973289298e-08, + "Product Quantity": 7.299282600570223e-08, + "Product Total": 5.87092608839157e-06, + "Product Unit Cost": 0.999991238117218 + }, + "field_id": 554487, + "location_type": "exact", + "text": "12.00", + "normalized": { + "text": "12.00", + "start": 565, + "end": 570, + "structured": { + "currency": null, + "amount": 12.0, + "currency_symbol": null + }, + "formatted": "$12.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 12.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Total", + "spans": [ + { + "start": 574, + "end": 580, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:9", + "confidence": { + "Buyer ID": 4.537493225598155e-08, + "Buyer Name": 3.259183358750306e-07, + "PO Date": 7.566043791484844e-07, + "PO Number": 7.37256797833652e-08, + "PO Total": 4.526620159595041e-06, + "Product Code": 3.3305266242678044e-06, + "Product Description": 1.6461865470773773e-07, + "Product Quantity": 1.4980018022470176e-05, + "Product Total": 0.9999709129333496, + "Product Unit Cost": 4.025662292406196e-06 + }, + "field_id": 554488, + "location_type": "exact", + "text": "720.00", + "normalized": { + "text": "720.00", + "start": 574, + "end": 580, + "structured": { + "currency": null, + "amount": 720.0, + "currency_symbol": null + }, + "formatted": "$720.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 720.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Quantity", + "spans": [ + { + "start": 581, + "end": 583, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:10", + "confidence": { + "Buyer ID": 1.0983510492224013e-06, + "Buyer Name": 2.2434529967085837e-07, + "PO Date": 6.200424422786455e-07, + "PO Number": 1.366048678619336e-07, + "PO Total": 1.7799243323679548e-07, + "Product Code": 1.4050222489458974e-05, + "Product Description": 2.552115176968073e-07, + "Product Quantity": 0.9999791383743286, + "Product Total": 3.5455207125778543e-06, + "Product Unit Cost": 4.970032705386984e-07 + }, + "field_id": 554484, + "location_type": "exact", + "text": "60", + "normalized": { + "text": "60", + "start": 581, + "end": 583, + "structured": null, + "formatted": "60", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "60", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Code", + "spans": [ + { + "start": 584, + "end": 590, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:11", + "confidence": { + "Buyer ID": 1.0878926559598767e-06, + "Buyer Name": 7.618435660106115e-08, + "PO Date": 1.7333126933749554e-08, + "PO Number": 8.019516712920449e-07, + "PO Total": 9.104788745162296e-08, + "Product Code": 0.9999862909317017, + "Product Description": 7.504857421736233e-06, + "Product Quantity": 2.091606575049809e-06, + "Product Total": 1.6547481891393545e-06, + "Product Unit Cost": 2.0974837866560847e-07 + }, + "field_id": 554485, + "location_type": "exact", + "text": "608015", + "normalized": { + "text": "608015", + "start": 584, + "end": 590, + "structured": null, + "formatted": "608015", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "608015", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Description", + "spans": [ + { + "start": 591, + "end": 619, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:12", + "confidence": { + "Buyer ID": 8.465552703285084e-09, + "Buyer Name": 2.5433310568701017e-08, + "PO Date": 6.951509146091439e-09, + "PO Number": 6.641318051059386e-10, + "PO Total": 8.700578035814033e-10, + "Product Code": 1.9124070149700856e-07, + "Product Description": 0.9999961256980896, + "Product Quantity": 5.855104845409187e-09, + "Product Total": 2.7109662070756713e-08, + "Product Unit Cost": 9.049230698110478e-09 + }, + "field_id": 554486, + "location_type": "exact", + "text": "JELTRATE SCOOP / MEASURE SET", + "normalized": { + "text": "JELTRATE SCOOP / MEASURE SET", + "start": 591, + "end": 619, + "structured": null, + "formatted": "JELTRATE SCOOP / MEASURE SET", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "JELTRATE SCOOP / MEASURE SET", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Unit Cost", + "spans": [ + { + "start": 620, + "end": 624, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:13", + "confidence": { + "Buyer ID": 1.2182437103547272e-07, + "Buyer Name": 1.8778500532334874e-08, + "PO Date": 1.3097340456624806e-07, + "PO Number": 2.0941644152117078e-07, + "PO Total": 7.584417858197412e-07, + "Product Code": 4.6080171500761935e-07, + "Product Description": 3.293564532214077e-07, + "Product Quantity": 5.5458997394453036e-08, + "Product Total": 1.0070839380205143e-05, + "Product Unit Cost": 0.9999850392341614 + }, + "field_id": 554487, + "location_type": "exact", + "text": "3.05", + "normalized": { + "text": "3.05", + "start": 620, + "end": 624, + "structured": { + "currency": null, + "amount": 3.05, + "currency_symbol": null + }, + "formatted": "$3.05", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 3.05, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Total", + "spans": [ + { + "start": 628, + "end": 634, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:14", + "confidence": { + "Buyer ID": 2.3236003343640732e-08, + "Buyer Name": 2.3211507382825403e-08, + "PO Date": 4.50823876008144e-08, + "PO Number": 6.25630391937193e-08, + "PO Total": 5.013069767301204e-06, + "Product Code": 9.836236358751194e-08, + "Product Description": 5.516259804494439e-08, + "Product Quantity": 5.189342573430622e-07, + "Product Total": 0.9999917149543762, + "Product Unit Cost": 1.7762935158316395e-06 + }, + "field_id": 554488, + "location_type": "exact", + "text": "183.00", + "normalized": { + "text": "183.00", + "start": 628, + "end": 634, + "structured": { + "currency": null, + "amount": 183.0, + "currency_symbol": null + }, + "formatted": "$183.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 183.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "PO Total", + "spans": [ + { + "start": 641, + "end": 647, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:15", + "confidence": { + "Buyer ID": 2.1331260313672828e-07, + "Buyer Name": 4.117542751203018e-09, + "PO Date": 6.391702722652326e-09, + "PO Number": 5.190192098325497e-08, + "PO Total": 0.9999980926513672, + "Product Code": 1.0232552227762426e-07, + "Product Description": 5.355866417033894e-09, + "Product Quantity": 2.2604419669391973e-08, + "Product Total": 7.359597589129407e-07, + "Product Unit Cost": 1.0356086477258941e-07 + }, + "field_id": 554490, + "location_type": "exact", + "text": "903.00", + "normalized": { + "text": "903.00", + "start": 641, + "end": 647, + "structured": { + "currency": null, + "amount": 903.0, + "currency_symbol": null + }, + "formatted": "$903.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 903.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ], + "6118": [] + }, + "FINAL": { + "5446": [ + { + "field_id": 554471, + "confidence": { + "Purchase Order": 0.9999999850173318, + "Invoice": 1.4982668217200512e-08 + }, + "label": "Purchase Order" + } + ], + "5448": [], + "6118": [], + "5447": [] + } + }, + "component_results": { + "ORIGINAL": {}, + "FINAL": {} + }, + "rejected": { + "models": { + "5446": [], + "5448": [ + { + "label": "PO Date", + "spans": [ + { + "start": 177, + "end": 185, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:1", + "confidence": { + "Buyer ID": 1.976757175725652e-06, + "Buyer Name": 2.7853705120151062e-08, + "PO Date": 0.9999796748161316, + "PO Number": 6.943222160771256e-06, + "PO Total": 2.2437840030420375e-08, + "Product Code": 6.111208676884416e-07, + "Product Description": 1.825127959875772e-08, + "Product Quantity": 2.546036284911679e-06, + "Product Total": 1.9051916524404078e-06, + "Product Unit Cost": 1.0712782341215643e-06 + }, + "field_id": 554483, + "location_type": "exact", + "text": "06/16/21" + } + ], + "6118": [] + }, + "components": {} + } + } + ], + "reviews": { + "69561": { + "review_id": 69561, + "reviewer_id": 422, + "review_notes": null, + "review_rejected": false, + "review_type": "manual" + }, + "69560": { + "review_id": 69560, + "reviewer_id": 422, + "review_notes": null, + "review_rejected": false, + "review_type": "auto" + } + }, + "errored_files": { + "95509": { + "submissionfile_id": 95509, + "error": "Traceback (most recent call last):\n\n File \"/readapi/readapi/celery_tasks/submission.py\", line 87, in _\n readapi_input: dict = await get_readapi_client().prepare_for_ocr(\n\n File \"/readapi/readapi/read/readapi.py\", line 202, in prepare_for_ocr\n num_pages: int = pdf_get_num_pages(pdf_path)\n\n File \"/venv/.venv/lib/python3.10/site-packages/mediocris/pdfconverter/convert.py\", line 465, in pdf_get_num_pages\n pdf = pdfium.PdfDocument(file_or_bytes)\n\n File \"/venv/.venv/lib/python3.10/site-packages/pypdfium2/_helpers/document.py\", line 78, in __init__\n self.raw, to_hold, to_close = _open_pdf(self._input, self._password, self._autoclose)\n\n File \"/venv/.venv/lib/python3.10/site-packages/pypdfium2/_helpers/document.py\", line 678, in _open_pdf\n raise PdfiumError(f\"Failed to load document (PDFium: {pdfium_i.ErrorToStr.get(err_code)}).\")\n\npypdfium2._helpers.misc.PdfiumError: Failed to load document (PDFium: Data format error).", + "reason": "Error preparing for OCR, skipping submission file 'corrupted.pdf' with id '95509'" + } + } +} diff --git a/tests/data/results/classify_extract_rejected.json b/tests/data/results/classify_extract_rejected.json new file mode 100644 index 0000000..c7c2bbf --- /dev/null +++ b/tests/data/results/classify_extract_rejected.json @@ -0,0 +1,1938 @@ +{ + "file_version": 3, + "submission_id": 97718, + "modelgroup_metadata": { + "5446": { + "id": 5446, + "task_type": "classification", + "name": "Accounting Classification", + "selected_model": { + "id": 8796, + "model_type": "tfidf_gbt" + } + }, + "5447": { + "id": 5447, + "task_type": "annotation", + "name": "Invoice Document Extraction", + "selected_model": { + "id": 10222, + "model_type": "finetune" + } + }, + "5448": { + "id": 5448, + "task_type": "annotation", + "name": "Purchase Order Extraction", + "selected_model": { + "id": 10223, + "model_type": "finetune" + } + }, + "6118": { + "id": 6118, + "task_type": "form_extraction", + "name": "Acord Form Extraction", + "selected_model": { + "id": 10224, + "model_type": "form_extraction" + } + } + }, + "component_metadata": { + "17680": { + "id": 17680, + "name": null, + "component_type": "input_ocr_extraction", + "task_type": null + }, + "17681": { + "id": 17681, + "name": null, + "component_type": "output_json_formatter", + "task_type": null + }, + "17682": { + "id": 17682, + "name": "Document Classification", + "component_type": "model_group", + "task_type": "classification" + }, + "17683": { + "id": 17683, + "name": "Model Link", + "component_type": "link_classification_model", + "task_type": "classification" + }, + "17684": { + "id": 17684, + "name": "Document Extraction", + "component_type": "model_group", + "task_type": "annotation" + }, + "17685": { + "id": 17685, + "name": "Document Extraction", + "component_type": "model_group", + "task_type": "annotation" + }, + "17687": { + "id": 17687, + "name": "Review", + "component_type": "review", + "task_type": null + }, + "17688": { + "id": 17688, + "name": "Standard Output", + "component_type": "default_output", + "task_type": null + }, + "17689": { + "id": 17689, + "name": "Invoice Line Items", + "component_type": "link_label", + "task_type": "annotation" + }, + "19736": { + "id": 19736, + "name": "Form Extraction", + "component_type": "model_group", + "task_type": "form_extraction" + } + }, + "submission_results": [ + { + "submissionfile_id": 95512, + "etl_output": "indico-file:///storage/submission/5120/97718/95512/etl_output.json", + "input_filename": "acord.pdf", + "input_filepath": "indico-file:///storage/submission/5120/97718/95512.pdf", + "input_filesize": 242331, + "model_results": { + "ORIGINAL": { + "5447": [ + { + "label": "Invoice Date", + "spans": [ + { + "start": 1569, + "end": 1570, + "page_num": 0 + } + ], + "span_id": "95512:c:17684:idx:0", + "confidence": { + "Invoice Date": 0.8117260932922363, + "Invoice Number": 9.211415999743622e-06, + "Invoice Subtotal": 6.8906156229786575e-06, + "Invoice Tax": 8.797347254585475e-05, + "Invoice Total": 1.3973905879538506e-05, + "Line Item Name": 3.142923378618434e-05, + "Line Item Quantity": 5.212751148064854e-06, + "Line Item Total": 7.055744845274603e-06, + "Vendor Name": 6.338641014735913e-06 + }, + "field_id": 554473, + "location_type": "exact", + "text": "/", + "groupings": [], + "normalized": { + "text": "/", + "start": 1569, + "end": 1570, + "structured": null, + "formatted": "/", + "status": "INFO", + "comparison_type": "number", + "comparison_value": null, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": "No valid date matches found", + "validation_status": "INFO" + } + ] + } + } + ], + "5446": [ + { + "field_id": 554471, + "confidence": { + "Invoice": 0.9983696357001948, + "Purchase Order": 0.0016303642998051805 + }, + "label": "Invoice" + } + ], + "6118": [ + { + "label": "Agency", + "spans": [ + { + "start": 35, + "end": 61, + "page_num": 0 + } + ], + "span_id": "95512:c:19736:idx:0", + "confidence": { + "Agency": 1.0 + }, + "field_id": 876477, + "location_type": "exact", + "top": 201, + "bottom": 448, + "left": 73, + "right": 1266, + "page_num": 0, + "type": "text", + "text": "Indico Data Solutions Inc.", + "normalized": { + "text": "Indico Data Solutions Inc.", + "start": 35, + "end": 61, + "structured": null, + "formatted": "Indico Data Solutions Inc.", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Indico Data Solutions Inc.", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Fire", + "spans": [], + "span_id": "95512:c:19736:idx:1", + "confidence": { + "Fire": 0.9999999964041294 + }, + "field_id": 876470, + "location_type": "exact", + "top": 2352, + "bottom": 2398, + "left": 206, + "right": 264, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Theft", + "spans": [], + "span_id": "95512:c:19736:idx:2", + "confidence": { + "Theft": 0.9999999883911289 + }, + "field_id": 876471, + "location_type": "exact", + "top": 2401, + "bottom": 2446, + "left": 207, + "right": 261, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Lightning", + "spans": [], + "span_id": "95512:c:19736:idx:3", + "confidence": { + "Lightning": 0.9998268387285644 + }, + "field_id": 876472, + "location_type": "exact", + "top": 2351, + "bottom": 2395, + "left": 416, + "right": 472, + "page_num": 0, + "checked": true, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": true + }, + "formatted": "Checked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Hail", + "spans": [], + "span_id": "95512:c:19736:idx:4", + "confidence": { + "Hail": 0.9999999842620407 + }, + "field_id": 876473, + "location_type": "exact", + "top": 2399, + "bottom": 2448, + "left": 416, + "right": 473, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Flood", + "spans": [], + "span_id": "95512:c:19736:idx:5", + "confidence": { + "Flood": 0.9999999985638672 + }, + "field_id": 876474, + "location_type": "exact", + "top": 2352, + "bottom": 2398, + "left": 657, + "right": 714, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Wind", + "spans": [], + "span_id": "95512:c:19736:idx:6", + "confidence": { + "Wind": 0.9999999962468843 + }, + "field_id": 876475, + "location_type": "exact", + "top": 2399, + "bottom": 2449, + "left": 657, + "right": 714, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Reporter Signature", + "spans": [ + { + "start": 1535, + "end": 1543, + "page_num": 0 + } + ], + "span_id": "95512:c:19736:idx:7", + "confidence": { + "Reporter Signature": 0.6324167015617136 + }, + "field_id": 876476, + "location_type": "exact", + "top": 2999, + "bottom": 3097, + "left": 75, + "right": 1270, + "page_num": 0, + "type": "text", + "text": "John Doe", + "signed": false, + "normalized": { + "text": "John Doe", + "start": 1535, + "end": 1543, + "structured": { + "signed": false + }, + "formatted": "Unsigned", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Unsigned", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ] + }, + "FINAL": {} + }, + "component_results": { + "ORIGINAL": {}, + "FINAL": {} + }, + "rejected": { + "models": { + "5447": [], + "5446": [], + "6118": [] + }, + "components": {} + } + }, + { + "submissionfile_id": 95514, + "etl_output": "indico-file:///storage/submission/5120/97718/95514/etl_output.json", + "input_filename": "invoice.pdf", + "input_filepath": "indico-file:///storage/submission/5120/97718/95514.pdf", + "input_filesize": 426157, + "model_results": { + "ORIGINAL": { + "5447": [ + { + "label": "Vendor Name", + "spans": [ + { + "start": 0, + "end": 13, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:0", + "confidence": { + "Invoice Date": 2.400350584963462e-09, + "Invoice Number": 8.615306512638199e-08, + "Invoice Subtotal": 1.574784569413623e-08, + "Invoice Tax": 3.4804223503215326e-08, + "Invoice Total": 3.3525918752275174e-07, + "Line Item Name": 5.377413714313661e-08, + "Line Item Quantity": 4.938188080672035e-09, + "Line Item Total": 3.7823695286931525e-09, + "Vendor Name": 0.9999908208847046 + }, + "field_id": 554472, + "location_type": "exact", + "text": "HubSpot, Inc.", + "groupings": [] + }, + { + "label": "Invoice Date", + "spans": [ + { + "start": 125, + "end": 135, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:1", + "confidence": { + "Invoice Date": 0.9999942779541016, + "Invoice Number": 1.1598333315987475e-07, + "Invoice Subtotal": 2.1972986985474563e-08, + "Invoice Tax": 3.641215243987972e-06, + "Invoice Total": 4.4100261220592074e-07, + "Line Item Name": 9.148626389787751e-08, + "Line Item Quantity": 2.35244641544341e-07, + "Line Item Total": 5.503422784158829e-08, + "Vendor Name": 4.493779215408722e-08 + }, + "field_id": 554473, + "location_type": "exact", + "text": "06/21/2016", + "groupings": [], + "normalized": { + "text": "06/21/2016", + "start": 125, + "end": 135, + "structured": { + "day": 21, + "month": 6, + "year": 2016 + }, + "formatted": "06/21/2016", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1466467200.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Number", + "spans": [ + { + "start": 146, + "end": 153, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:2", + "confidence": { + "Invoice Date": 5.598737473633264e-08, + "Invoice Number": 0.999999463558197, + "Invoice Subtotal": 4.058968272602215e-08, + "Invoice Tax": 6.889321468861453e-08, + "Invoice Total": 1.5093485572492682e-08, + "Line Item Name": 1.1201677807548549e-08, + "Line Item Quantity": 7.595297168982995e-10, + "Line Item Total": 6.70873911978731e-11, + "Vendor Name": 1.8480035279822005e-08 + }, + "field_id": 554474, + "location_type": "exact", + "text": "3927578", + "groupings": [], + "normalized": { + "text": "3927578", + "start": 146, + "end": 153, + "structured": null, + "formatted": "3927578", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "3927578", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Name", + "spans": [ + { + "start": 340, + "end": 407, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:3", + "confidence": { + "Invoice Date": 1.7565442433919998e-08, + "Invoice Number": 2.365634976797537e-08, + "Invoice Subtotal": 3.1575535075489825e-08, + "Invoice Tax": 5.957954574142832e-09, + "Invoice Total": 4.966599576050612e-09, + "Line Item Name": 0.9999649524688721, + "Line Item Quantity": 1.7177193001316482e-08, + "Line Item Total": 7.645165056580083e-10, + "Vendor Name": 5.279783636069624e-06 + }, + "field_id": 554475, + "location_type": "exact", + "text": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "start": 340, + "end": 407, + "structured": null, + "formatted": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 476, + "end": 477, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:4", + "confidence": { + "Invoice Date": 2.0007496459584218e-07, + "Invoice Number": 5.268412373027331e-09, + "Invoice Subtotal": 2.0731549739139155e-06, + "Invoice Tax": 7.271044211165645e-08, + "Invoice Total": 9.540383416606346e-07, + "Line Item Name": 3.446030518716725e-07, + "Line Item Quantity": 0.9992546439170837, + "Line Item Total": 0.0007325292099267244, + "Vendor Name": 9.231066542270128e-07 + }, + "field_id": 554476, + "location_type": "exact", + "text": "1", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "1", + "start": 476, + "end": 477, + "structured": { + "currency": null, + "amount": 1.0, + "currency_symbol": null + }, + "formatted": "$1.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 478, + "end": 487, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:5", + "confidence": { + "Invoice Date": 2.2957024725656083e-08, + "Invoice Number": 4.731684821734916e-09, + "Invoice Subtotal": 3.5948771255789325e-05, + "Invoice Tax": 1.440768215843491e-07, + "Invoice Total": 9.350693375154151e-08, + "Line Item Name": 6.605429803130392e-07, + "Line Item Quantity": 3.4471519029466435e-05, + "Line Item Total": 0.9999279975891113, + "Vendor Name": 7.658569245450053e-08 + }, + "field_id": 554477, + "location_type": "exact", + "text": "$1,200.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "$1,200.00", + "start": 478, + "end": 487, + "structured": { + "currency": "USD", + "amount": 1200.0, + "currency_symbol": "$" + }, + "formatted": "$1,200.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1200.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 499, + "end": 501, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:6", + "confidence": { + "Invoice Date": 1.076231548324813e-08, + "Invoice Number": 1.1603896732381713e-09, + "Invoice Subtotal": 3.864898019401153e-07, + "Invoice Tax": 6.23728979576299e-08, + "Invoice Total": 9.395338906870165e-08, + "Line Item Name": 4.1748722878764966e-07, + "Line Item Quantity": 0.9994648098945618, + "Line Item Total": 0.0005268307868391275, + "Vendor Name": 1.0827177732153359e-07 + }, + "field_id": 554476, + "location_type": "exact", + "text": "10", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 5, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "10", + "start": 499, + "end": 501, + "structured": { + "currency": null, + "amount": 10.0, + "currency_symbol": null + }, + "formatted": "$10.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 10.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 502, + "end": 507, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:7", + "confidence": { + "Invoice Date": 1.5343369907938609e-09, + "Invoice Number": 1.4856093022430628e-09, + "Invoice Subtotal": 1.594042441865895e-05, + "Invoice Tax": 2.384278445788368e-07, + "Invoice Total": 1.1305982638987189e-07, + "Line Item Name": 8.561663662476349e-07, + "Line Item Quantity": 6.795264198444784e-05, + "Line Item Total": 0.9999126195907593, + "Vendor Name": 4.1239573533857765e-07 + }, + "field_id": 554477, + "location_type": "exact", + "text": "$0.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 5, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "$0.00", + "start": 502, + "end": 507, + "structured": { + "currency": "USD", + "amount": 0.0, + "currency_symbol": "$" + }, + "formatted": "$0.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 519, + "end": 520, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:8", + "confidence": { + "Invoice Date": 2.8531161433420493e-08, + "Invoice Number": 4.069365733272434e-09, + "Invoice Subtotal": 6.226035111467354e-06, + "Invoice Tax": 1.6429021343355998e-06, + "Invoice Total": 2.72286882818662e-07, + "Line Item Name": 6.900664288878033e-07, + "Line Item Quantity": 0.9983378648757935, + "Line Item Total": 0.0016476557357236743, + "Vendor Name": 2.637806630900741e-07 + }, + "field_id": 554476, + "location_type": "exact", + "text": "5", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 6, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "5", + "start": 519, + "end": 520, + "structured": { + "currency": null, + "amount": 5.0, + "currency_symbol": null + }, + "formatted": "$5.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 5.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 521, + "end": 527, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:9", + "confidence": { + "Invoice Date": 7.177814786984982e-09, + "Invoice Number": 3.1152287416347235e-09, + "Invoice Subtotal": 4.165806603850797e-05, + "Invoice Tax": 3.2139239465323044e-06, + "Invoice Total": 2.033676160806408e-08, + "Line Item Name": 9.56858912104508e-07, + "Line Item Quantity": 3.715637285495177e-05, + "Line Item Total": 0.9999152421951294, + "Vendor Name": 3.6665915104094893e-07 + }, + "field_id": 554477, + "location_type": "exact", + "text": "$25.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 6, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "$25.00", + "start": 521, + "end": 527, + "structured": { + "currency": "USD", + "amount": 25.0, + "currency_symbol": "$" + }, + "formatted": "$25.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 25.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Subtotal", + "spans": [ + { + "start": 537, + "end": 546, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:10", + "confidence": { + "Invoice Date": 1.2479067557080725e-08, + "Invoice Number": 1.037754504551458e-08, + "Invoice Subtotal": 0.999993622303009, + "Invoice Tax": 1.511050413682824e-06, + "Invoice Total": 1.1302825697612207e-07, + "Line Item Name": 3.7292852539394516e-07, + "Line Item Quantity": 1.6987804940526985e-07, + "Line Item Total": 6.638203444708779e-07, + "Vendor Name": 5.14679413754493e-07 + }, + "field_id": 554478, + "location_type": "exact", + "text": "$1,225.00", + "groupings": [], + "normalized": { + "text": "$1,225.00", + "start": 537, + "end": 546, + "structured": { + "currency": "USD", + "amount": 1225.0, + "currency_symbol": "$" + }, + "formatted": "$1,225.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1225.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Tax", + "spans": [ + { + "start": 557, + "end": 563, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:11", + "confidence": { + "Invoice Date": 4.953463417223247e-09, + "Invoice Number": 6.921577551111113e-07, + "Invoice Subtotal": 5.481627596282124e-08, + "Invoice Tax": 0.9999969005584717, + "Invoice Total": 7.9409846875933e-07, + "Line Item Name": 1.860678366938373e-08, + "Line Item Quantity": 6.929780482778369e-08, + "Line Item Total": 6.931463047976649e-08, + "Vendor Name": 9.391482791443195e-08 + }, + "field_id": 554479, + "location_type": "exact", + "text": "$76.56", + "groupings": [], + "normalized": { + "text": "$76.56", + "start": 557, + "end": 563, + "structured": { + "currency": "USD", + "amount": 76.56, + "currency_symbol": "$" + }, + "formatted": "$76.56", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 76.56, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Total", + "spans": [ + { + "start": 570, + "end": 579, + "page_num": 0 + } + ], + "span_id": "95514:c:17684:idx:12", + "confidence": { + "Invoice Date": 2.4829425626649027e-08, + "Invoice Number": 3.630819733757562e-08, + "Invoice Subtotal": 3.666984014216723e-07, + "Invoice Tax": 1.9052085917792283e-05, + "Invoice Total": 0.9999463558197021, + "Line Item Name": 6.92955914871618e-09, + "Line Item Quantity": 6.221291073416069e-07, + "Line Item Total": 1.4124430514073083e-09, + "Vendor Name": 2.59860030382697e-06 + }, + "field_id": 554480, + "location_type": "exact", + "text": "$1,301.56", + "groupings": [], + "normalized": { + "text": "$1,301.56", + "start": 570, + "end": 579, + "structured": { + "currency": "USD", + "amount": 1301.56, + "currency_symbol": "$" + }, + "formatted": "$1,301.56", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1301.56, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ], + "5446": [ + { + "field_id": 554471, + "confidence": { + "Invoice": 0.9999999853918985, + "Purchase Order": 1.4608101511772668e-08 + }, + "label": "Invoice" + } + ], + "6118": [] + }, + "FINAL": {} + }, + "component_results": { + "ORIGINAL": {}, + "FINAL": {} + }, + "rejected": { + "models": { + "5447": [], + "5446": [], + "6118": [] + }, + "components": {} + } + }, + { + "submissionfile_id": 95515, + "etl_output": "indico-file:///storage/submission/5120/97718/95515/etl_output.json", + "input_filename": "purchase_order.pdf", + "input_filepath": "indico-file:///storage/submission/5120/97718/95515.pdf", + "input_filesize": 80950, + "model_results": { + "ORIGINAL": { + "5448": [ + { + "label": "PO Number", + "spans": [ + { + "start": 150, + "end": 158, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:0", + "confidence": { + "Buyer ID": 1.2627575642909505e-06, + "Buyer Name": 2.447901010782516e-07, + "PO Date": 1.1118426300527062e-05, + "PO Number": 0.9999815821647644, + "PO Total": 2.3315555708336433e-08, + "Product Code": 3.630110995800351e-06, + "Product Description": 1.4727102204403764e-08, + "Product Quantity": 6.1471610024455e-07, + "Product Total": 1.2719820574602636e-07, + "Product Unit Cost": 1.616589599962026e-07 + }, + "field_id": 554489, + "location_type": "exact", + "text": "29111525", + "normalized": { + "text": "29111525", + "start": 150, + "end": 158, + "structured": null, + "formatted": "29111525", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "29111525", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Buyer Name", + "spans": [ + { + "start": 342, + "end": 355, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:2", + "confidence": { + "Buyer ID": 1.2982777661818545e-06, + "Buyer Name": 0.9999947547912598, + "PO Date": 8.240203186460349e-08, + "PO Number": 7.985746464100885e-08, + "PO Total": 1.7511210259613108e-09, + "Product Code": 1.1287174572771619e-07, + "Product Description": 1.2632793868760928e-06, + "Product Quantity": 1.5098430594662204e-07, + "Product Total": 1.93391009872812e-08, + "Product Unit Cost": 2.2306220870405014e-08 + }, + "field_id": 554482, + "location_type": "exact", + "text": "Michelle Amos", + "normalized": { + "text": "Michelle Amos", + "start": 342, + "end": 355, + "structured": { + "type": "Person", + "full_name": "Michelle Amos", + "title": null, + "first": "Michelle", + "middle": null, + "last": "Amos", + "suffix": null + }, + "formatted": "Michelle Amos", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Michelle Amos", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "PO Date", + "spans": [ + { + "start": 356, + "end": 364, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:3", + "confidence": { + "Buyer ID": 3.822090548055712e-06, + "Buyer Name": 8.714440724588712e-08, + "PO Date": 0.9999903440475464, + "PO Number": 4.136407369514927e-06, + "PO Total": 1.4920766844284117e-09, + "Product Code": 2.1699176500078465e-07, + "Product Description": 8.091866732229391e-09, + "Product Quantity": 3.829829893220449e-07, + "Product Total": 1.9468048151338735e-07, + "Product Unit Cost": 5.011253847442276e-07 + }, + "field_id": 554483, + "location_type": "exact", + "text": "06/16/21", + "normalized": { + "text": "06/16/21", + "start": 356, + "end": 364, + "structured": { + "day": 16, + "month": 6, + "year": 2021 + }, + "formatted": "06/16/2021", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1623801600.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Buyer ID", + "spans": [ + { + "start": 380, + "end": 385, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:4", + "confidence": { + "Buyer ID": 0.9999929070472717, + "Buyer Name": 4.93660820666264e-07, + "PO Date": 3.8837319493723044e-07, + "PO Number": 2.8662989848271536e-07, + "PO Total": 1.0579029208201973e-07, + "Product Code": 7.133622261790151e-07, + "Product Description": 5.113787793220581e-08, + "Product Quantity": 1.0991599310727906e-06, + "Product Total": 5.646242939860713e-08, + "Product Unit Cost": 2.0277305168292514e-07 + }, + "field_id": 554481, + "location_type": "exact", + "text": "86847", + "normalized": { + "text": "86847", + "start": 380, + "end": 385, + "structured": null, + "formatted": "86847", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "86847", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Quantity", + "spans": [ + { + "start": 532, + "end": 534, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:5", + "confidence": { + "Buyer ID": 3.2345758427254623e-06, + "Buyer Name": 4.632624381883943e-07, + "PO Date": 8.714248451724416e-07, + "PO Number": 3.8181426020855724e-07, + "PO Total": 1.0790621729483973e-07, + "Product Code": 5.301757482811809e-06, + "Product Description": 3.633870804264916e-08, + "Product Quantity": 0.9999887943267822, + "Product Total": 1.495936459150471e-07, + "Product Unit Cost": 5.2666379701804544e-08 + }, + "field_id": 554484, + "location_type": "exact", + "text": "60", + "normalized": { + "text": "60", + "start": 532, + "end": 534, + "structured": null, + "formatted": "60", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "60", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Code", + "spans": [ + { + "start": 535, + "end": 541, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:6", + "confidence": { + "Buyer ID": 2.7396484370001417e-07, + "Buyer Name": 1.3114745343045797e-06, + "PO Date": 4.440954626261373e-08, + "PO Number": 3.3387289022357436e-07, + "PO Total": 2.2077864869629593e-08, + "Product Code": 0.9999920129776001, + "Product Description": 3.4629613310244167e-07, + "Product Quantity": 3.294227781225345e-06, + "Product Total": 1.1255536946919165e-06, + "Product Unit Cost": 1.0448789389272406e-08 + }, + "field_id": 554485, + "location_type": "exact", + "text": "605220", + "normalized": { + "text": "605220", + "start": 535, + "end": 541, + "structured": null, + "formatted": "605220", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "605220", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Description", + "spans": [ + { + "start": 542, + "end": 564, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:7", + "confidence": { + "Buyer ID": 3.993866215523667e-08, + "Buyer Name": 1.4608106368996232e-07, + "PO Date": 1.2237320490271486e-08, + "PO Number": 6.42832898023471e-09, + "PO Total": 1.6042527306581178e-09, + "Product Code": 7.234188501570316e-07, + "Product Description": 0.9999908208847046, + "Product Quantity": 1.6196107566202045e-08, + "Product Total": 1.4558002803255476e-08, + "Product Unit Cost": 1.2452557207609516e-08 + }, + "field_id": 554486, + "location_type": "exact", + "text": "JELTRATE DUSTLESS FAST", + "normalized": { + "text": "JELTRATE DUSTLESS FAST", + "start": 542, + "end": 564, + "structured": null, + "formatted": "JELTRATE DUSTLESS FAST", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "JELTRATE DUSTLESS FAST", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Unit Cost", + "spans": [ + { + "start": 565, + "end": 570, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:8", + "confidence": { + "Buyer ID": 2.6427224497638235e-07, + "Buyer Name": 4.014124854734291e-08, + "PO Date": 4.016795003281004e-07, + "PO Number": 2.3258805015302642e-07, + "PO Total": 1.7378805239331996e-07, + "Product Code": 7.95176617884863e-08, + "Product Description": 8.015751973289298e-08, + "Product Quantity": 7.299282600570223e-08, + "Product Total": 5.87092608839157e-06, + "Product Unit Cost": 0.999991238117218 + }, + "field_id": 554487, + "location_type": "exact", + "text": "12.00", + "normalized": { + "text": "12.00", + "start": 565, + "end": 570, + "structured": { + "currency": null, + "amount": 12.0, + "currency_symbol": null + }, + "formatted": "$12.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 12.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Total", + "spans": [ + { + "start": 574, + "end": 580, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:9", + "confidence": { + "Buyer ID": 4.537493225598155e-08, + "Buyer Name": 3.259183358750306e-07, + "PO Date": 7.566043791484844e-07, + "PO Number": 7.37256797833652e-08, + "PO Total": 4.526620159595041e-06, + "Product Code": 3.3305266242678044e-06, + "Product Description": 1.6461865470773773e-07, + "Product Quantity": 1.4980018022470176e-05, + "Product Total": 0.9999709129333496, + "Product Unit Cost": 4.025662292406196e-06 + }, + "field_id": 554488, + "location_type": "exact", + "text": "720.00", + "normalized": { + "text": "720.00", + "start": 574, + "end": 580, + "structured": { + "currency": null, + "amount": 720.0, + "currency_symbol": null + }, + "formatted": "$720.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 720.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Quantity", + "spans": [ + { + "start": 581, + "end": 583, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:10", + "confidence": { + "Buyer ID": 1.0983510492224013e-06, + "Buyer Name": 2.2434529967085837e-07, + "PO Date": 6.200424422786455e-07, + "PO Number": 1.366048678619336e-07, + "PO Total": 1.7799243323679548e-07, + "Product Code": 1.4050222489458974e-05, + "Product Description": 2.552115176968073e-07, + "Product Quantity": 0.9999791383743286, + "Product Total": 3.5455207125778543e-06, + "Product Unit Cost": 4.970032705386984e-07 + }, + "field_id": 554484, + "location_type": "exact", + "text": "60", + "normalized": { + "text": "60", + "start": 581, + "end": 583, + "structured": null, + "formatted": "60", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "60", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Code", + "spans": [ + { + "start": 584, + "end": 590, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:11", + "confidence": { + "Buyer ID": 1.0878926559598767e-06, + "Buyer Name": 7.618435660106115e-08, + "PO Date": 1.7333126933749554e-08, + "PO Number": 8.019516712920449e-07, + "PO Total": 9.104788745162296e-08, + "Product Code": 0.9999862909317017, + "Product Description": 7.504857421736233e-06, + "Product Quantity": 2.091606575049809e-06, + "Product Total": 1.6547481891393545e-06, + "Product Unit Cost": 2.0974837866560847e-07 + }, + "field_id": 554485, + "location_type": "exact", + "text": "608015", + "normalized": { + "text": "608015", + "start": 584, + "end": 590, + "structured": null, + "formatted": "608015", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "608015", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Description", + "spans": [ + { + "start": 591, + "end": 619, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:12", + "confidence": { + "Buyer ID": 8.465552703285084e-09, + "Buyer Name": 2.5433310568701017e-08, + "PO Date": 6.951509146091439e-09, + "PO Number": 6.641318051059386e-10, + "PO Total": 8.700578035814033e-10, + "Product Code": 1.9124070149700856e-07, + "Product Description": 0.9999961256980896, + "Product Quantity": 5.855104845409187e-09, + "Product Total": 2.7109662070756713e-08, + "Product Unit Cost": 9.049230698110478e-09 + }, + "field_id": 554486, + "location_type": "exact", + "text": "JELTRATE SCOOP / MEASURE SET", + "normalized": { + "text": "JELTRATE SCOOP / MEASURE SET", + "start": 591, + "end": 619, + "structured": null, + "formatted": "JELTRATE SCOOP / MEASURE SET", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "JELTRATE SCOOP / MEASURE SET", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Unit Cost", + "spans": [ + { + "start": 620, + "end": 624, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:13", + "confidence": { + "Buyer ID": 1.2182437103547272e-07, + "Buyer Name": 1.8778500532334874e-08, + "PO Date": 1.3097340456624806e-07, + "PO Number": 2.0941644152117078e-07, + "PO Total": 7.584417858197412e-07, + "Product Code": 4.6080171500761935e-07, + "Product Description": 3.293564532214077e-07, + "Product Quantity": 5.5458997394453036e-08, + "Product Total": 1.0070839380205143e-05, + "Product Unit Cost": 0.9999850392341614 + }, + "field_id": 554487, + "location_type": "exact", + "text": "3.05", + "normalized": { + "text": "3.05", + "start": 620, + "end": 624, + "structured": { + "currency": null, + "amount": 3.05, + "currency_symbol": null + }, + "formatted": "$3.05", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 3.05, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Total", + "spans": [ + { + "start": 628, + "end": 634, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:14", + "confidence": { + "Buyer ID": 2.3236003343640732e-08, + "Buyer Name": 2.3211507382825403e-08, + "PO Date": 4.50823876008144e-08, + "PO Number": 6.25630391937193e-08, + "PO Total": 5.013069767301204e-06, + "Product Code": 9.836236358751194e-08, + "Product Description": 5.516259804494439e-08, + "Product Quantity": 5.189342573430622e-07, + "Product Total": 0.9999917149543762, + "Product Unit Cost": 1.7762935158316395e-06 + }, + "field_id": 554488, + "location_type": "exact", + "text": "183.00", + "normalized": { + "text": "183.00", + "start": 628, + "end": 634, + "structured": { + "currency": null, + "amount": 183.0, + "currency_symbol": null + }, + "formatted": "$183.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 183.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "PO Total", + "spans": [ + { + "start": 641, + "end": 647, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:15", + "confidence": { + "Buyer ID": 2.1331260313672828e-07, + "Buyer Name": 4.117542751203018e-09, + "PO Date": 6.391702722652326e-09, + "PO Number": 5.190192098325497e-08, + "PO Total": 0.9999980926513672, + "Product Code": 1.0232552227762426e-07, + "Product Description": 5.355866417033894e-09, + "Product Quantity": 2.2604419669391973e-08, + "Product Total": 7.359597589129407e-07, + "Product Unit Cost": 1.0356086477258941e-07 + }, + "field_id": 554490, + "location_type": "exact", + "text": "903.00", + "normalized": { + "text": "903.00", + "start": 641, + "end": 647, + "structured": { + "currency": null, + "amount": 903.0, + "currency_symbol": null + }, + "formatted": "$903.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 903.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ], + "5446": [ + { + "field_id": 554471, + "confidence": { + "Purchase Order": 0.9999999850173318, + "Invoice": 1.4982668217200512e-08 + }, + "label": "Purchase Order" + } + ], + "6118": [] + }, + "FINAL": {} + }, + "component_results": { + "ORIGINAL": {}, + "FINAL": {} + }, + "rejected": { + "models": { + "5448": [ + { + "label": "PO Date", + "spans": [ + { + "start": 177, + "end": 185, + "page_num": 0 + } + ], + "span_id": "95515:c:17685:idx:1", + "confidence": { + "Buyer ID": 1.976757175725652e-06, + "Buyer Name": 2.7853705120151062e-08, + "PO Date": 0.9999796748161316, + "PO Number": 6.943222160771256e-06, + "PO Total": 2.2437840030420375e-08, + "Product Code": 6.111208676884416e-07, + "Product Description": 1.825127959875772e-08, + "Product Quantity": 2.546036284911679e-06, + "Product Total": 1.9051916524404078e-06, + "Product Unit Cost": 1.0712782341215643e-06 + }, + "field_id": 554483, + "location_type": "exact", + "text": "06/16/21" + } + ], + "5446": [], + "6118": [] + }, + "components": {} + } + } + ], + "reviews": { + "69564": { + "review_id": 69564, + "reviewer_id": 422, + "review_notes": null, + "review_rejected": true, + "review_type": "admin" + }, + "69563": { + "review_id": 69563, + "reviewer_id": 422, + "review_notes": "Rejection Reason", + "review_rejected": true, + "review_type": "manual" + }, + "69562": { + "review_id": 69562, + "reviewer_id": 422, + "review_notes": null, + "review_rejected": false, + "review_type": "auto" + } + }, + "errored_files": { + "95513": { + "submissionfile_id": 95513, + "error": "Traceback (most recent call last):\n\n File \"/readapi/readapi/celery_tasks/submission.py\", line 87, in _\n readapi_input: dict = await get_readapi_client().prepare_for_ocr(\n\n File \"/readapi/readapi/read/readapi.py\", line 202, in prepare_for_ocr\n num_pages: int = pdf_get_num_pages(pdf_path)\n\n File \"/venv/.venv/lib/python3.10/site-packages/mediocris/pdfconverter/convert.py\", line 465, in pdf_get_num_pages\n pdf = pdfium.PdfDocument(file_or_bytes)\n\n File \"/venv/.venv/lib/python3.10/site-packages/pypdfium2/_helpers/document.py\", line 78, in __init__\n self.raw, to_hold, to_close = _open_pdf(self._input, self._password, self._autoclose)\n\n File \"/venv/.venv/lib/python3.10/site-packages/pypdfium2/_helpers/document.py\", line 678, in _open_pdf\n raise PdfiumError(f\"Failed to load document (PDFium: {pdfium_i.ErrorToStr.get(err_code)}).\")\n\npypdfium2._helpers.misc.PdfiumError: Failed to load document (PDFium: Data format error).", + "reason": "Error preparing for OCR, skipping submission file 'corrupted.pdf' with id '95513'" + } + } +} diff --git a/tests/data/results/97211_v3_static_models.json b/tests/data/results/classify_extract_static_models.json similarity index 100% rename from tests/data/results/97211_v3_static_models.json rename to tests/data/results/classify_extract_static_models.json diff --git a/tests/data/results/classify_extract_unreviewed.json b/tests/data/results/classify_extract_unreviewed.json new file mode 100644 index 0000000..3652076 --- /dev/null +++ b/tests/data/results/classify_extract_unreviewed.json @@ -0,0 +1,1910 @@ +{ + "file_version": 3, + "submission_id": 97717, + "modelgroup_metadata": { + "5446": { + "id": 5446, + "task_type": "classification", + "name": "Accounting Classification", + "selected_model": { + "id": 8796, + "model_type": "tfidf_gbt" + } + }, + "5447": { + "id": 5447, + "task_type": "annotation", + "name": "Invoice Document Extraction", + "selected_model": { + "id": 10222, + "model_type": "finetune" + } + }, + "5448": { + "id": 5448, + "task_type": "annotation", + "name": "Purchase Order Extraction", + "selected_model": { + "id": 10223, + "model_type": "finetune" + } + }, + "6118": { + "id": 6118, + "task_type": "form_extraction", + "name": "Acord Form Extraction", + "selected_model": { + "id": 10224, + "model_type": "form_extraction" + } + } + }, + "component_metadata": { + "17680": { + "id": 17680, + "name": null, + "component_type": "input_ocr_extraction", + "task_type": null + }, + "17681": { + "id": 17681, + "name": null, + "component_type": "output_json_formatter", + "task_type": null + }, + "17682": { + "id": 17682, + "name": "Document Classification", + "component_type": "model_group", + "task_type": "classification" + }, + "17683": { + "id": 17683, + "name": "Model Link", + "component_type": "link_classification_model", + "task_type": "classification" + }, + "17684": { + "id": 17684, + "name": "Document Extraction", + "component_type": "model_group", + "task_type": "annotation" + }, + "17685": { + "id": 17685, + "name": "Document Extraction", + "component_type": "model_group", + "task_type": "annotation" + }, + "17687": { + "id": 17687, + "name": "Review", + "component_type": "review", + "task_type": null + }, + "17688": { + "id": 17688, + "name": "Standard Output", + "component_type": "default_output", + "task_type": null + }, + "17689": { + "id": 17689, + "name": "Invoice Line Items", + "component_type": "link_label", + "task_type": "annotation" + }, + "19736": { + "id": 19736, + "name": "Form Extraction", + "component_type": "model_group", + "task_type": "form_extraction" + } + }, + "submission_results": [ + { + "submissionfile_id": 95508, + "etl_output": "indico-file:///storage/submission/5120/97717/95508/etl_output.json", + "input_filename": "acord.pdf", + "input_filepath": "indico-file:///storage/submission/5120/97717/95508.pdf", + "input_filesize": 242331, + "model_results": { + "ORIGINAL": { + "5446": [ + { + "field_id": 554471, + "confidence": { + "Invoice": 0.9983696357001948, + "Purchase Order": 0.0016303642998051805 + }, + "label": "Invoice" + } + ], + "6118": [ + { + "label": "Agency", + "spans": [ + { + "start": 35, + "end": 61, + "page_num": 0 + } + ], + "span_id": "95508:c:19736:idx:0", + "confidence": { + "Agency": 1.0 + }, + "field_id": 876477, + "location_type": "exact", + "top": 201, + "bottom": 448, + "left": 73, + "right": 1266, + "page_num": 0, + "type": "text", + "text": "Indico Data Solutions Inc.", + "normalized": { + "text": "Indico Data Solutions Inc.", + "start": 35, + "end": 61, + "structured": null, + "formatted": "Indico Data Solutions Inc.", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Indico Data Solutions Inc.", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Fire", + "spans": [], + "span_id": "95508:c:19736:idx:1", + "confidence": { + "Fire": 0.9999999964041294 + }, + "field_id": 876470, + "location_type": "exact", + "top": 2352, + "bottom": 2398, + "left": 206, + "right": 264, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Theft", + "spans": [], + "span_id": "95508:c:19736:idx:2", + "confidence": { + "Theft": 0.9999999883911289 + }, + "field_id": 876471, + "location_type": "exact", + "top": 2401, + "bottom": 2446, + "left": 207, + "right": 261, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Lightning", + "spans": [], + "span_id": "95508:c:19736:idx:3", + "confidence": { + "Lightning": 0.9998268387285644 + }, + "field_id": 876472, + "location_type": "exact", + "top": 2351, + "bottom": 2395, + "left": 416, + "right": 472, + "page_num": 0, + "checked": true, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": true + }, + "formatted": "Checked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Hail", + "spans": [], + "span_id": "95508:c:19736:idx:4", + "confidence": { + "Hail": 0.9999999842620407 + }, + "field_id": 876473, + "location_type": "exact", + "top": 2399, + "bottom": 2448, + "left": 416, + "right": 473, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Flood", + "spans": [], + "span_id": "95508:c:19736:idx:5", + "confidence": { + "Flood": 0.9999999985638672 + }, + "field_id": 876474, + "location_type": "exact", + "top": 2352, + "bottom": 2398, + "left": 657, + "right": 714, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Wind", + "spans": [], + "span_id": "95508:c:19736:idx:6", + "confidence": { + "Wind": 0.9999999962468843 + }, + "field_id": 876475, + "location_type": "exact", + "top": 2399, + "bottom": 2449, + "left": 657, + "right": 714, + "page_num": 0, + "checked": false, + "type": "checkbox", + "normalized": { + "text": "", + "start": null, + "end": null, + "structured": { + "checked": false + }, + "formatted": "Unchecked", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Reporter Signature", + "spans": [ + { + "start": 1535, + "end": 1543, + "page_num": 0 + } + ], + "span_id": "95508:c:19736:idx:7", + "confidence": { + "Reporter Signature": 0.6324167015617136 + }, + "field_id": 876476, + "location_type": "exact", + "top": 2999, + "bottom": 3097, + "left": 75, + "right": 1270, + "page_num": 0, + "type": "text", + "text": "John Doe", + "signed": false, + "normalized": { + "text": "John Doe", + "start": 1535, + "end": 1543, + "structured": { + "signed": false + }, + "formatted": "Unsigned", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Unsigned", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ], + "5447": [ + { + "label": "Invoice Date", + "spans": [ + { + "start": 1569, + "end": 1570, + "page_num": 0 + } + ], + "span_id": "95508:c:17684:idx:0", + "confidence": { + "Invoice Date": 0.8117260932922363, + "Invoice Number": 9.211415999743622e-06, + "Invoice Subtotal": 6.8906156229786575e-06, + "Invoice Tax": 8.797347254585475e-05, + "Invoice Total": 1.3973905879538506e-05, + "Line Item Name": 3.142923378618434e-05, + "Line Item Quantity": 5.212751148064854e-06, + "Line Item Total": 7.055744845274603e-06, + "Vendor Name": 6.338641014735913e-06 + }, + "field_id": 554473, + "location_type": "exact", + "text": "/", + "groupings": [], + "normalized": { + "text": "/", + "start": 1569, + "end": 1570, + "structured": null, + "formatted": "/", + "status": "INFO", + "comparison_type": "number", + "comparison_value": null, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": "No valid date matches found", + "validation_status": "INFO" + } + ] + } + } + ] + } + }, + "component_results": { + "ORIGINAL": {} + }, + "rejected": { + "models": { + "5446": [], + "6118": [], + "5447": [] + }, + "components": {} + } + }, + { + "submissionfile_id": 95510, + "etl_output": "indico-file:///storage/submission/5120/97717/95510/etl_output.json", + "input_filename": "invoice.pdf", + "input_filepath": "indico-file:///storage/submission/5120/97717/95510.pdf", + "input_filesize": 426157, + "model_results": { + "ORIGINAL": { + "5446": [ + { + "field_id": 554471, + "confidence": { + "Invoice": 0.9999999853918985, + "Purchase Order": 1.4608101511772668e-08 + }, + "label": "Invoice" + } + ], + "6118": [], + "5447": [ + { + "label": "Vendor Name", + "spans": [ + { + "start": 0, + "end": 13, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:0", + "confidence": { + "Invoice Date": 2.400350584963462e-09, + "Invoice Number": 8.615306512638199e-08, + "Invoice Subtotal": 1.574784569413623e-08, + "Invoice Tax": 3.4804223503215326e-08, + "Invoice Total": 3.3525918752275174e-07, + "Line Item Name": 5.377413714313661e-08, + "Line Item Quantity": 4.938188080672035e-09, + "Line Item Total": 3.7823695286931525e-09, + "Vendor Name": 0.9999908208847046 + }, + "field_id": 554472, + "location_type": "exact", + "text": "HubSpot, Inc.", + "groupings": [] + }, + { + "label": "Invoice Date", + "spans": [ + { + "start": 125, + "end": 135, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:1", + "confidence": { + "Invoice Date": 0.9999942779541016, + "Invoice Number": 1.1598333315987475e-07, + "Invoice Subtotal": 2.1972986985474563e-08, + "Invoice Tax": 3.641215243987972e-06, + "Invoice Total": 4.4100261220592074e-07, + "Line Item Name": 9.148626389787751e-08, + "Line Item Quantity": 2.35244641544341e-07, + "Line Item Total": 5.503422784158829e-08, + "Vendor Name": 4.493779215408722e-08 + }, + "field_id": 554473, + "location_type": "exact", + "text": "06/21/2016", + "groupings": [], + "normalized": { + "text": "06/21/2016", + "start": 125, + "end": 135, + "structured": { + "day": 21, + "month": 6, + "year": 2016 + }, + "formatted": "06/21/2016", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1466467200.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Number", + "spans": [ + { + "start": 146, + "end": 153, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:2", + "confidence": { + "Invoice Date": 5.598737473633264e-08, + "Invoice Number": 0.999999463558197, + "Invoice Subtotal": 4.058968272602215e-08, + "Invoice Tax": 6.889321468861453e-08, + "Invoice Total": 1.5093485572492682e-08, + "Line Item Name": 1.1201677807548549e-08, + "Line Item Quantity": 7.595297168982995e-10, + "Line Item Total": 6.70873911978731e-11, + "Vendor Name": 1.8480035279822005e-08 + }, + "field_id": 554474, + "location_type": "exact", + "text": "3927578", + "groupings": [], + "normalized": { + "text": "3927578", + "start": 146, + "end": 153, + "structured": null, + "formatted": "3927578", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "3927578", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Name", + "spans": [ + { + "start": 340, + "end": 407, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:3", + "confidence": { + "Invoice Date": 1.7565442433919998e-08, + "Invoice Number": 2.365634976797537e-08, + "Invoice Subtotal": 3.1575535075489825e-08, + "Invoice Tax": 5.957954574142832e-09, + "Invoice Total": 4.966599576050612e-09, + "Line Item Name": 0.9999649524688721, + "Line Item Quantity": 1.7177193001316482e-08, + "Line Item Total": 7.645165056580083e-10, + "Vendor Name": 5.279783636069624e-06 + }, + "field_id": 554475, + "location_type": "exact", + "text": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "start": 340, + "end": 407, + "structured": null, + "formatted": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 476, + "end": 477, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:4", + "confidence": { + "Invoice Date": 2.0007496459584218e-07, + "Invoice Number": 5.268412373027331e-09, + "Invoice Subtotal": 2.0731549739139155e-06, + "Invoice Tax": 7.271044211165645e-08, + "Invoice Total": 9.540383416606346e-07, + "Line Item Name": 3.446030518716725e-07, + "Line Item Quantity": 0.9992546439170837, + "Line Item Total": 0.0007325292099267244, + "Vendor Name": 9.231066542270128e-07 + }, + "field_id": 554476, + "location_type": "exact", + "text": "1", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "1", + "start": 476, + "end": 477, + "structured": { + "currency": null, + "amount": 1.0, + "currency_symbol": null + }, + "formatted": "$1.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 478, + "end": 487, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:5", + "confidence": { + "Invoice Date": 2.2957024725656083e-08, + "Invoice Number": 4.731684821734916e-09, + "Invoice Subtotal": 3.5948771255789325e-05, + "Invoice Tax": 1.440768215843491e-07, + "Invoice Total": 9.350693375154151e-08, + "Line Item Name": 6.605429803130392e-07, + "Line Item Quantity": 3.4471519029466435e-05, + "Line Item Total": 0.9999279975891113, + "Vendor Name": 7.658569245450053e-08 + }, + "field_id": 554477, + "location_type": "exact", + "text": "$1,200.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "$1,200.00", + "start": 478, + "end": 487, + "structured": { + "currency": "USD", + "amount": 1200.0, + "currency_symbol": "$" + }, + "formatted": "$1,200.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1200.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 499, + "end": 501, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:6", + "confidence": { + "Invoice Date": 1.076231548324813e-08, + "Invoice Number": 1.1603896732381713e-09, + "Invoice Subtotal": 3.864898019401153e-07, + "Invoice Tax": 6.23728979576299e-08, + "Invoice Total": 9.395338906870165e-08, + "Line Item Name": 4.1748722878764966e-07, + "Line Item Quantity": 0.9994648098945618, + "Line Item Total": 0.0005268307868391275, + "Vendor Name": 1.0827177732153359e-07 + }, + "field_id": 554476, + "location_type": "exact", + "text": "10", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 5, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "10", + "start": 499, + "end": 501, + "structured": { + "currency": null, + "amount": 10.0, + "currency_symbol": null + }, + "formatted": "$10.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 10.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 502, + "end": 507, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:7", + "confidence": { + "Invoice Date": 1.5343369907938609e-09, + "Invoice Number": 1.4856093022430628e-09, + "Invoice Subtotal": 1.594042441865895e-05, + "Invoice Tax": 2.384278445788368e-07, + "Invoice Total": 1.1305982638987189e-07, + "Line Item Name": 8.561663662476349e-07, + "Line Item Quantity": 6.795264198444784e-05, + "Line Item Total": 0.9999126195907593, + "Vendor Name": 4.1239573533857765e-07 + }, + "field_id": 554477, + "location_type": "exact", + "text": "$0.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 5, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "$0.00", + "start": 502, + "end": 507, + "structured": { + "currency": "USD", + "amount": 0.0, + "currency_symbol": "$" + }, + "formatted": "$0.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 0.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 519, + "end": 520, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:8", + "confidence": { + "Invoice Date": 2.8531161433420493e-08, + "Invoice Number": 4.069365733272434e-09, + "Invoice Subtotal": 6.226035111467354e-06, + "Invoice Tax": 1.6429021343355998e-06, + "Invoice Total": 2.72286882818662e-07, + "Line Item Name": 6.900664288878033e-07, + "Line Item Quantity": 0.9983378648757935, + "Line Item Total": 0.0016476557357236743, + "Vendor Name": 2.637806630900741e-07 + }, + "field_id": 554476, + "location_type": "exact", + "text": "5", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 6, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "5", + "start": 519, + "end": 520, + "structured": { + "currency": null, + "amount": 5.0, + "currency_symbol": null + }, + "formatted": "$5.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 5.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 521, + "end": 527, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:9", + "confidence": { + "Invoice Date": 7.177814786984982e-09, + "Invoice Number": 3.1152287416347235e-09, + "Invoice Subtotal": 4.165806603850797e-05, + "Invoice Tax": 3.2139239465323044e-06, + "Invoice Total": 2.033676160806408e-08, + "Line Item Name": 9.56858912104508e-07, + "Line Item Quantity": 3.715637285495177e-05, + "Line Item Total": 0.9999152421951294, + "Vendor Name": 3.6665915104094893e-07 + }, + "field_id": 554477, + "location_type": "exact", + "text": "$25.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 6, + "group_id": "5447:Invoice Line Item" + } + ], + "normalized": { + "text": "$25.00", + "start": 521, + "end": 527, + "structured": { + "currency": "USD", + "amount": 25.0, + "currency_symbol": "$" + }, + "formatted": "$25.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 25.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Subtotal", + "spans": [ + { + "start": 537, + "end": 546, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:10", + "confidence": { + "Invoice Date": 1.2479067557080725e-08, + "Invoice Number": 1.037754504551458e-08, + "Invoice Subtotal": 0.999993622303009, + "Invoice Tax": 1.511050413682824e-06, + "Invoice Total": 1.1302825697612207e-07, + "Line Item Name": 3.7292852539394516e-07, + "Line Item Quantity": 1.6987804940526985e-07, + "Line Item Total": 6.638203444708779e-07, + "Vendor Name": 5.14679413754493e-07 + }, + "field_id": 554478, + "location_type": "exact", + "text": "$1,225.00", + "groupings": [], + "normalized": { + "text": "$1,225.00", + "start": 537, + "end": 546, + "structured": { + "currency": "USD", + "amount": 1225.0, + "currency_symbol": "$" + }, + "formatted": "$1,225.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1225.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Tax", + "spans": [ + { + "start": 557, + "end": 563, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:11", + "confidence": { + "Invoice Date": 4.953463417223247e-09, + "Invoice Number": 6.921577551111113e-07, + "Invoice Subtotal": 5.481627596282124e-08, + "Invoice Tax": 0.9999969005584717, + "Invoice Total": 7.9409846875933e-07, + "Line Item Name": 1.860678366938373e-08, + "Line Item Quantity": 6.929780482778369e-08, + "Line Item Total": 6.931463047976649e-08, + "Vendor Name": 9.391482791443195e-08 + }, + "field_id": 554479, + "location_type": "exact", + "text": "$76.56", + "groupings": [], + "normalized": { + "text": "$76.56", + "start": 557, + "end": 563, + "structured": { + "currency": "USD", + "amount": 76.56, + "currency_symbol": "$" + }, + "formatted": "$76.56", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 76.56, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Total", + "spans": [ + { + "start": 570, + "end": 579, + "page_num": 0 + } + ], + "span_id": "95510:c:17684:idx:12", + "confidence": { + "Invoice Date": 2.4829425626649027e-08, + "Invoice Number": 3.630819733757562e-08, + "Invoice Subtotal": 3.666984014216723e-07, + "Invoice Tax": 1.9052085917792283e-05, + "Invoice Total": 0.9999463558197021, + "Line Item Name": 6.92955914871618e-09, + "Line Item Quantity": 6.221291073416069e-07, + "Line Item Total": 1.4124430514073083e-09, + "Vendor Name": 2.59860030382697e-06 + }, + "field_id": 554480, + "location_type": "exact", + "text": "$1,301.56", + "groupings": [], + "normalized": { + "text": "$1,301.56", + "start": 570, + "end": 579, + "structured": { + "currency": "USD", + "amount": 1301.56, + "currency_symbol": "$" + }, + "formatted": "$1,301.56", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1301.56, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ] + } + }, + "component_results": { + "ORIGINAL": {} + }, + "rejected": { + "models": { + "5446": [], + "6118": [], + "5447": [] + }, + "components": {} + } + }, + { + "submissionfile_id": 95511, + "etl_output": "indico-file:///storage/submission/5120/97717/95511/etl_output.json", + "input_filename": "purchase_order.pdf", + "input_filepath": "indico-file:///storage/submission/5120/97717/95511.pdf", + "input_filesize": 80950, + "model_results": { + "ORIGINAL": { + "5446": [ + { + "field_id": 554471, + "confidence": { + "Purchase Order": 0.9999999850173318, + "Invoice": 1.4982668217200512e-08 + }, + "label": "Purchase Order" + } + ], + "5448": [ + { + "label": "PO Number", + "spans": [ + { + "start": 150, + "end": 158, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:0", + "confidence": { + "Buyer ID": 1.2627575642909505e-06, + "Buyer Name": 2.447901010782516e-07, + "PO Date": 1.1118426300527062e-05, + "PO Number": 0.9999815821647644, + "PO Total": 2.3315555708336433e-08, + "Product Code": 3.630110995800351e-06, + "Product Description": 1.4727102204403764e-08, + "Product Quantity": 6.1471610024455e-07, + "Product Total": 1.2719820574602636e-07, + "Product Unit Cost": 1.616589599962026e-07 + }, + "field_id": 554489, + "location_type": "exact", + "text": "29111525", + "normalized": { + "text": "29111525", + "start": 150, + "end": 158, + "structured": null, + "formatted": "29111525", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "29111525", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Buyer Name", + "spans": [ + { + "start": 342, + "end": 355, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:2", + "confidence": { + "Buyer ID": 1.2982777661818545e-06, + "Buyer Name": 0.9999947547912598, + "PO Date": 8.240203186460349e-08, + "PO Number": 7.985746464100885e-08, + "PO Total": 1.7511210259613108e-09, + "Product Code": 1.1287174572771619e-07, + "Product Description": 1.2632793868760928e-06, + "Product Quantity": 1.5098430594662204e-07, + "Product Total": 1.93391009872812e-08, + "Product Unit Cost": 2.2306220870405014e-08 + }, + "field_id": 554482, + "location_type": "exact", + "text": "Michelle Amos", + "normalized": { + "text": "Michelle Amos", + "start": 342, + "end": 355, + "structured": { + "type": "Person", + "full_name": "Michelle Amos", + "title": null, + "first": "Michelle", + "middle": null, + "last": "Amos", + "suffix": null + }, + "formatted": "Michelle Amos", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Michelle Amos", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "PO Date", + "spans": [ + { + "start": 356, + "end": 364, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:3", + "confidence": { + "Buyer ID": 3.822090548055712e-06, + "Buyer Name": 8.714440724588712e-08, + "PO Date": 0.9999903440475464, + "PO Number": 4.136407369514927e-06, + "PO Total": 1.4920766844284117e-09, + "Product Code": 2.1699176500078465e-07, + "Product Description": 8.091866732229391e-09, + "Product Quantity": 3.829829893220449e-07, + "Product Total": 1.9468048151338735e-07, + "Product Unit Cost": 5.011253847442276e-07 + }, + "field_id": 554483, + "location_type": "exact", + "text": "06/16/21", + "normalized": { + "text": "06/16/21", + "start": 356, + "end": 364, + "structured": { + "day": 16, + "month": 6, + "year": 2021 + }, + "formatted": "06/16/2021", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 1623801600.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Buyer ID", + "spans": [ + { + "start": 380, + "end": 385, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:4", + "confidence": { + "Buyer ID": 0.9999929070472717, + "Buyer Name": 4.93660820666264e-07, + "PO Date": 3.8837319493723044e-07, + "PO Number": 2.8662989848271536e-07, + "PO Total": 1.0579029208201973e-07, + "Product Code": 7.133622261790151e-07, + "Product Description": 5.113787793220581e-08, + "Product Quantity": 1.0991599310727906e-06, + "Product Total": 5.646242939860713e-08, + "Product Unit Cost": 2.0277305168292514e-07 + }, + "field_id": 554481, + "location_type": "exact", + "text": "86847", + "normalized": { + "text": "86847", + "start": 380, + "end": 385, + "structured": null, + "formatted": "86847", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "86847", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Quantity", + "spans": [ + { + "start": 532, + "end": 534, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:5", + "confidence": { + "Buyer ID": 3.2345758427254623e-06, + "Buyer Name": 4.632624381883943e-07, + "PO Date": 8.714248451724416e-07, + "PO Number": 3.8181426020855724e-07, + "PO Total": 1.0790621729483973e-07, + "Product Code": 5.301757482811809e-06, + "Product Description": 3.633870804264916e-08, + "Product Quantity": 0.9999887943267822, + "Product Total": 1.495936459150471e-07, + "Product Unit Cost": 5.2666379701804544e-08 + }, + "field_id": 554484, + "location_type": "exact", + "text": "60", + "normalized": { + "text": "60", + "start": 532, + "end": 534, + "structured": null, + "formatted": "60", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "60", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Code", + "spans": [ + { + "start": 535, + "end": 541, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:6", + "confidence": { + "Buyer ID": 2.7396484370001417e-07, + "Buyer Name": 1.3114745343045797e-06, + "PO Date": 4.440954626261373e-08, + "PO Number": 3.3387289022357436e-07, + "PO Total": 2.2077864869629593e-08, + "Product Code": 0.9999920129776001, + "Product Description": 3.4629613310244167e-07, + "Product Quantity": 3.294227781225345e-06, + "Product Total": 1.1255536946919165e-06, + "Product Unit Cost": 1.0448789389272406e-08 + }, + "field_id": 554485, + "location_type": "exact", + "text": "605220", + "normalized": { + "text": "605220", + "start": 535, + "end": 541, + "structured": null, + "formatted": "605220", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "605220", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Description", + "spans": [ + { + "start": 542, + "end": 564, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:7", + "confidence": { + "Buyer ID": 3.993866215523667e-08, + "Buyer Name": 1.4608106368996232e-07, + "PO Date": 1.2237320490271486e-08, + "PO Number": 6.42832898023471e-09, + "PO Total": 1.6042527306581178e-09, + "Product Code": 7.234188501570316e-07, + "Product Description": 0.9999908208847046, + "Product Quantity": 1.6196107566202045e-08, + "Product Total": 1.4558002803255476e-08, + "Product Unit Cost": 1.2452557207609516e-08 + }, + "field_id": 554486, + "location_type": "exact", + "text": "JELTRATE DUSTLESS FAST", + "normalized": { + "text": "JELTRATE DUSTLESS FAST", + "start": 542, + "end": 564, + "structured": null, + "formatted": "JELTRATE DUSTLESS FAST", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "JELTRATE DUSTLESS FAST", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Unit Cost", + "spans": [ + { + "start": 565, + "end": 570, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:8", + "confidence": { + "Buyer ID": 2.6427224497638235e-07, + "Buyer Name": 4.014124854734291e-08, + "PO Date": 4.016795003281004e-07, + "PO Number": 2.3258805015302642e-07, + "PO Total": 1.7378805239331996e-07, + "Product Code": 7.95176617884863e-08, + "Product Description": 8.015751973289298e-08, + "Product Quantity": 7.299282600570223e-08, + "Product Total": 5.87092608839157e-06, + "Product Unit Cost": 0.999991238117218 + }, + "field_id": 554487, + "location_type": "exact", + "text": "12.00", + "normalized": { + "text": "12.00", + "start": 565, + "end": 570, + "structured": { + "currency": null, + "amount": 12.0, + "currency_symbol": null + }, + "formatted": "$12.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 12.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Total", + "spans": [ + { + "start": 574, + "end": 580, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:9", + "confidence": { + "Buyer ID": 4.537493225598155e-08, + "Buyer Name": 3.259183358750306e-07, + "PO Date": 7.566043791484844e-07, + "PO Number": 7.37256797833652e-08, + "PO Total": 4.526620159595041e-06, + "Product Code": 3.3305266242678044e-06, + "Product Description": 1.6461865470773773e-07, + "Product Quantity": 1.4980018022470176e-05, + "Product Total": 0.9999709129333496, + "Product Unit Cost": 4.025662292406196e-06 + }, + "field_id": 554488, + "location_type": "exact", + "text": "720.00", + "normalized": { + "text": "720.00", + "start": 574, + "end": 580, + "structured": { + "currency": null, + "amount": 720.0, + "currency_symbol": null + }, + "formatted": "$720.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 720.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Quantity", + "spans": [ + { + "start": 581, + "end": 583, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:10", + "confidence": { + "Buyer ID": 1.0983510492224013e-06, + "Buyer Name": 2.2434529967085837e-07, + "PO Date": 6.200424422786455e-07, + "PO Number": 1.366048678619336e-07, + "PO Total": 1.7799243323679548e-07, + "Product Code": 1.4050222489458974e-05, + "Product Description": 2.552115176968073e-07, + "Product Quantity": 0.9999791383743286, + "Product Total": 3.5455207125778543e-06, + "Product Unit Cost": 4.970032705386984e-07 + }, + "field_id": 554484, + "location_type": "exact", + "text": "60", + "normalized": { + "text": "60", + "start": 581, + "end": 583, + "structured": null, + "formatted": "60", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "60", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Code", + "spans": [ + { + "start": 584, + "end": 590, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:11", + "confidence": { + "Buyer ID": 1.0878926559598767e-06, + "Buyer Name": 7.618435660106115e-08, + "PO Date": 1.7333126933749554e-08, + "PO Number": 8.019516712920449e-07, + "PO Total": 9.104788745162296e-08, + "Product Code": 0.9999862909317017, + "Product Description": 7.504857421736233e-06, + "Product Quantity": 2.091606575049809e-06, + "Product Total": 1.6547481891393545e-06, + "Product Unit Cost": 2.0974837866560847e-07 + }, + "field_id": 554485, + "location_type": "exact", + "text": "608015", + "normalized": { + "text": "608015", + "start": 584, + "end": 590, + "structured": null, + "formatted": "608015", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "608015", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Description", + "spans": [ + { + "start": 591, + "end": 619, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:12", + "confidence": { + "Buyer ID": 8.465552703285084e-09, + "Buyer Name": 2.5433310568701017e-08, + "PO Date": 6.951509146091439e-09, + "PO Number": 6.641318051059386e-10, + "PO Total": 8.700578035814033e-10, + "Product Code": 1.9124070149700856e-07, + "Product Description": 0.9999961256980896, + "Product Quantity": 5.855104845409187e-09, + "Product Total": 2.7109662070756713e-08, + "Product Unit Cost": 9.049230698110478e-09 + }, + "field_id": 554486, + "location_type": "exact", + "text": "JELTRATE SCOOP / MEASURE SET", + "normalized": { + "text": "JELTRATE SCOOP / MEASURE SET", + "start": 591, + "end": 619, + "structured": null, + "formatted": "JELTRATE SCOOP / MEASURE SET", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "JELTRATE SCOOP / MEASURE SET", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Unit Cost", + "spans": [ + { + "start": 620, + "end": 624, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:13", + "confidence": { + "Buyer ID": 1.2182437103547272e-07, + "Buyer Name": 1.8778500532334874e-08, + "PO Date": 1.3097340456624806e-07, + "PO Number": 2.0941644152117078e-07, + "PO Total": 7.584417858197412e-07, + "Product Code": 4.6080171500761935e-07, + "Product Description": 3.293564532214077e-07, + "Product Quantity": 5.5458997394453036e-08, + "Product Total": 1.0070839380205143e-05, + "Product Unit Cost": 0.9999850392341614 + }, + "field_id": 554487, + "location_type": "exact", + "text": "3.05", + "normalized": { + "text": "3.05", + "start": 620, + "end": 624, + "structured": { + "currency": null, + "amount": 3.05, + "currency_symbol": null + }, + "formatted": "$3.05", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 3.05, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Total", + "spans": [ + { + "start": 628, + "end": 634, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:14", + "confidence": { + "Buyer ID": 2.3236003343640732e-08, + "Buyer Name": 2.3211507382825403e-08, + "PO Date": 4.50823876008144e-08, + "PO Number": 6.25630391937193e-08, + "PO Total": 5.013069767301204e-06, + "Product Code": 9.836236358751194e-08, + "Product Description": 5.516259804494439e-08, + "Product Quantity": 5.189342573430622e-07, + "Product Total": 0.9999917149543762, + "Product Unit Cost": 1.7762935158316395e-06 + }, + "field_id": 554488, + "location_type": "exact", + "text": "183.00", + "normalized": { + "text": "183.00", + "start": 628, + "end": 634, + "structured": { + "currency": null, + "amount": 183.0, + "currency_symbol": null + }, + "formatted": "$183.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 183.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "PO Total", + "spans": [ + { + "start": 641, + "end": 647, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:15", + "confidence": { + "Buyer ID": 2.1331260313672828e-07, + "Buyer Name": 4.117542751203018e-09, + "PO Date": 6.391702722652326e-09, + "PO Number": 5.190192098325497e-08, + "PO Total": 0.9999980926513672, + "Product Code": 1.0232552227762426e-07, + "Product Description": 5.355866417033894e-09, + "Product Quantity": 2.2604419669391973e-08, + "Product Total": 7.359597589129407e-07, + "Product Unit Cost": 1.0356086477258941e-07 + }, + "field_id": 554490, + "location_type": "exact", + "text": "903.00", + "normalized": { + "text": "903.00", + "start": 641, + "end": 647, + "structured": { + "currency": null, + "amount": 903.0, + "currency_symbol": null + }, + "formatted": "$903.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 903.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ], + "6118": [] + } + }, + "component_results": { + "ORIGINAL": {} + }, + "rejected": { + "models": { + "5446": [], + "5448": [ + { + "label": "PO Date", + "spans": [ + { + "start": 177, + "end": 185, + "page_num": 0 + } + ], + "span_id": "95511:c:17685:idx:1", + "confidence": { + "Buyer ID": 1.976757175725652e-06, + "Buyer Name": 2.7853705120151062e-08, + "PO Date": 0.9999796748161316, + "PO Number": 6.943222160771256e-06, + "PO Total": 2.2437840030420375e-08, + "Product Code": 6.111208676884416e-07, + "Product Description": 1.825127959875772e-08, + "Product Quantity": 2.546036284911679e-06, + "Product Total": 1.9051916524404078e-06, + "Product Unit Cost": 1.0712782341215643e-06 + }, + "field_id": 554483, + "location_type": "exact", + "text": "06/16/21" + } + ], + "6118": [] + }, + "components": {} + } + } + ], + "reviews": {}, + "errored_files": { + "95509": { + "submissionfile_id": 95509, + "error": "Traceback (most recent call last):\n\n File \"/readapi/readapi/celery_tasks/submission.py\", line 87, in _\n readapi_input: dict = await get_readapi_client().prepare_for_ocr(\n\n File \"/readapi/readapi/read/readapi.py\", line 202, in prepare_for_ocr\n num_pages: int = pdf_get_num_pages(pdf_path)\n\n File \"/venv/.venv/lib/python3.10/site-packages/mediocris/pdfconverter/convert.py\", line 465, in pdf_get_num_pages\n pdf = pdfium.PdfDocument(file_or_bytes)\n\n File \"/venv/.venv/lib/python3.10/site-packages/pypdfium2/_helpers/document.py\", line 78, in __init__\n self.raw, to_hold, to_close = _open_pdf(self._input, self._password, self._autoclose)\n\n File \"/venv/.venv/lib/python3.10/site-packages/pypdfium2/_helpers/document.py\", line 678, in _open_pdf\n raise PdfiumError(f\"Failed to load document (PDFium: {pdfium_i.ErrorToStr.get(err_code)}).\")\n\npypdfium2._helpers.misc.PdfiumError: Failed to load document (PDFium: Data format error).", + "reason": "Error preparing for OCR, skipping submission file 'corrupted.pdf' with id '95509'" + } + } +} diff --git a/tests/results/test_document.py b/tests/results/test_document.py index 75c5ca5..cac3c7e 100644 --- a/tests/results/test_document.py +++ b/tests/results/test_document.py @@ -42,7 +42,11 @@ def test_empty_sections() -> None: } } } - ] + ], + "reviews": { + }, + "errored_files": { + } } """ ) From f84c0691c6d27e24ab12a8fdef78a50db91f5e3c Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Wed, 4 Jun 2025 12:28:30 -0500 Subject: [PATCH 07/30] Rename `model_sections` and `component_sections` to `*_ids` It's not unambiguously a v3 string ID, where before it could have been a v1 string name. --- indico_toolkit/results/document.py | 16 +++++++--------- indico_toolkit/results/predictionlist.py | 8 ++++---- tests/results/test_predictionlist.py | 4 ++-- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/indico_toolkit/results/document.py b/indico_toolkit/results/document.py index 5aa471b..15afe37 100644 --- a/indico_toolkit/results/document.py +++ b/indico_toolkit/results/document.py @@ -16,10 +16,10 @@ class Document: # present in the original result file. This may not be possible from the # predictions alone--if a model or component had an empty section because it didn't # produce predictions or if all of the predictions for that section were dropped. - # As such, the models and components seen when parsing a result file are tracked + # As such, the model and component IDs seen when parsing a result file are tracked # per-document so that the empty sections can be reproduced later. - _model_sections: "frozenset[str]" - _component_sections: "frozenset[str]" + _model_ids: "frozenset[str]" + _component_ids: "frozenset[str]" @staticmethod def from_dict(document: object) -> "Document": @@ -28,8 +28,6 @@ def from_dict(document: object) -> "Document": """ model_results = get(document, dict, "model_results", "ORIGINAL") component_results = get(document, dict, "component_results", "ORIGINAL") - model_ids = frozenset(model_results.keys()) - component_ids = frozenset(component_results.keys()) return Document( id=get(document, int, "submissionfile_id"), @@ -38,8 +36,8 @@ def from_dict(document: object) -> "Document": failed=False, error="", traceback="", - _model_sections=model_ids, - _component_sections=component_ids, + _model_ids=frozenset(model_results.keys()), + _component_ids=frozenset(component_results.keys()), ) @staticmethod @@ -54,6 +52,6 @@ def from_errored_file_dict(errored_file: object) -> "Document": failed=True, error=get(errored_file, str, "error"), traceback=get(errored_file, str, "traceback"), - _model_sections=frozenset(), - _component_sections=frozenset(), + _model_ids=frozenset(), + _component_ids=frozenset(), ) diff --git a/indico_toolkit/results/predictionlist.py b/indico_toolkit/results/predictionlist.py index 7e43f24..32302a2 100644 --- a/indico_toolkit/results/predictionlist.py +++ b/indico_toolkit/results/predictionlist.py @@ -351,16 +351,16 @@ def to_changes(self, result: "Result") -> "list[dict[str, Any]]": model_id = str(model.id) prediction_dicts = [prediction.to_dict() for prediction in predictions] - if model_id in document._model_sections: + if model_id in document._model_ids: model_results[model_id] = prediction_dicts - elif model_id in document._component_sections: + elif model_id in document._component_ids: component_results[model_id] = prediction_dicts - for model_id in document._model_sections: + for model_id in document._model_ids: if model_id not in model_results: model_results[model_id] = [] - for component_id in document._component_sections: + for component_id in document._component_ids: if component_id not in component_results: component_results[component_id] = [] diff --git a/tests/results/test_predictionlist.py b/tests/results/test_predictionlist.py index 4f15cfa..0bd9930 100644 --- a/tests/results/test_predictionlist.py +++ b/tests/results/test_predictionlist.py @@ -26,8 +26,8 @@ def document() -> Document: failed=False, error="", traceback="", - _model_sections=frozenset({"124", "123", "122", "121"}), - _component_sections=frozenset(), + _model_ids=frozenset({"124", "123", "122", "121"}), + _component_ids=frozenset(), ) From 88f025a365c984b79e34d43b137b15afc619e97a Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Wed, 4 Jun 2025 14:00:15 -0500 Subject: [PATCH 08/30] Rename `ModelGroup` and `ModelGroupType` to `Task` and `TaskType` --- examples/results_autoreview.py | 4 +- examples/results_dataclasses.py | 14 ++--- examples/results_to_csv.py | 6 +-- indico_toolkit/results/__init__.py | 6 +-- indico_toolkit/results/normalization.py | 22 ++++---- indico_toolkit/results/predictionlist.py | 46 ++++++++-------- .../results/predictions/__init__.py | 38 ++++++------- .../results/predictions/classification.py | 6 +-- .../results/predictions/documentextraction.py | 6 +-- .../results/predictions/formextraction.py | 6 +-- .../results/predictions/prediction.py | 4 +- .../results/predictions/summarization.py | 6 +-- .../results/predictions/unbundling.py | 6 +-- indico_toolkit/results/result.py | 26 +++++---- indico_toolkit/results/{model.py => task.py} | 18 +++---- tests/results/test_predictionlist.py | 54 +++++++++---------- tests/results/test_predictions.py | 6 +-- tests/results/test_result.py | 4 +- 18 files changed, 132 insertions(+), 146 deletions(-) rename indico_toolkit/results/{model.py => task.py} (56%) diff --git a/examples/results_autoreview.py b/examples/results_autoreview.py index 9069d65..0b51a3a 100644 --- a/examples/results_autoreview.py +++ b/examples/results_autoreview.py @@ -20,8 +20,8 @@ def autoreview(result: results.Result) -> Any: pre_review = result.pre_review extractions = pre_review.extractions - # Downselect all labels from all models based on highest confidence. - for model, extractions in extractions.groupby(attrgetter("model")).items(): + # Downselect all labels from all tasks based on highest confidence. + for task, extractions in extractions.groupby(attrgetter("task")).items(): for label, extractions in extractions.groupby(attrgetter("label")).items(): # Order extractions by confidence descending. ordered = extractions.orderby(attrgetter("confidence"), reverse=True) diff --git a/examples/results_dataclasses.py b/examples/results_dataclasses.py index e43f184..60f0a13 100644 --- a/examples/results_dataclasses.py +++ b/examples/results_dataclasses.py @@ -40,8 +40,8 @@ invoice_number = invoice_numbers.orderby(attrgetter("confidence"), reverse=True)[0] invoice_number.text -# Get all auto review predictions grouped by model. -predictions_by_model = result.auto_review.groupby(attrgetter("model")) +# Get all auto reviewed predictions grouped by task. +predictions_by_task = result.auto_review.groupby(attrgetter("task")) # Get all final extractions on page 5. result.final.extractions.where(predicate=lambda pred: pred.page == 5) @@ -57,12 +57,12 @@ result.submission_id # Submission ID result.version # Result file version result.documents # List of documents in this submission -result.models # List of documents in this submission +result.tasks # List of tasks in this submission result.reviews # List of reviews for this submission result.rejected # Whether this submission was rejected in review -result.predictions # List of all model predictions -result.pre_review # List of raw model predictions +result.predictions # List of all predictions +result.pre_review # List of raw predictions result.auto_review # List of predictions for auto review result.manual_review # List of predictions for manual review result.admin_review # List of predictions for admin review @@ -99,7 +99,7 @@ predictions.groupby() # Sort predictions by some attribute (e.g. confidence) predictions.orderby() -# Filter predictions by some predicate (e.g. model, label, confidence) +# Filter predictions by some predicate (e.g. task, label, confidence) predictions.where() # Get this list of predictions as changes for `SubmitReview` predictions.to_changes(result) @@ -117,7 +117,7 @@ # Prediction Dataclass prediction = predictions[0] prediction.document -prediction.model +prediction.task prediction.label prediction.confidence # Confidence of the predicted label prediction.confidences # Confidences of all labels diff --git a/examples/results_to_csv.py b/examples/results_to_csv.py index f4c2f26..5afaf6b 100644 --- a/examples/results_to_csv.py +++ b/examples/results_to_csv.py @@ -17,7 +17,7 @@ def final_predictions(result: results.Result) -> Iterator[dict[str, object]]: yield { "submission_id": result.submission_id, "document_id": prediction.document.id, - "model": prediction.model.name, + "task": prediction.task.name, "field": "Classification", "value": prediction.label, "confidence": prediction.confidence, @@ -26,7 +26,7 @@ def final_predictions(result: results.Result) -> Iterator[dict[str, object]]: yield { "submission_id": result.submission_id, "document_id": prediction.document.id, - "model": prediction.model.name, + "task": prediction.task.name, "field": prediction.label, "value": prediction.text, "confidence": prediction.confidence, @@ -53,7 +53,7 @@ def convert_to_csv( fieldnames=[ "submission_id", "document_id", - "model", + "task", "field", "value", "confidence", diff --git a/indico_toolkit/results/__init__.py b/indico_toolkit/results/__init__.py index 54d7aa5..5b68c45 100644 --- a/indico_toolkit/results/__init__.py +++ b/indico_toolkit/results/__init__.py @@ -3,7 +3,6 @@ from .document import Document from .errors import ResultError -from .model import ModelGroup, ModelGroupType from .predictionlist import PredictionList from .predictions import ( NULL_BOX, @@ -23,6 +22,7 @@ ) from .result import Result from .review import Review, ReviewType +from .task import Task, TaskType from .utils import get if TYPE_CHECKING: @@ -40,8 +40,6 @@ "Group", "load", "load_async", - "ModelGroup", - "ModelGroupType", "NULL_BOX", "NULL_CITATION", "NULL_SPAN", @@ -53,6 +51,8 @@ "ReviewType", "Span", "Summarization", + "Task", + "TaskType", "Unbundling", ) diff --git a/indico_toolkit/results/normalization.py b/indico_toolkit/results/normalization.py index f6e28be..c1bc0e8 100644 --- a/indico_toolkit/results/normalization.py +++ b/indico_toolkit/results/normalization.py @@ -1,7 +1,7 @@ import re from typing import TYPE_CHECKING -from .model import ModelGroupType +from .task import TaskType from .utils import get, has if TYPE_CHECKING: @@ -32,7 +32,7 @@ def normalize_result_dict(result: "Any") -> None: review["review_notes"] = "" -def normalize_prediction_dict(task_type: ModelGroupType, prediction: "Any") -> None: +def normalize_prediction_dict(task_type: TaskType, prediction: "Any") -> None: """ Fix inconsistencies observed in prediction structure. """ @@ -43,23 +43,23 @@ def normalize_prediction_dict(task_type: ModelGroupType, prediction: "Any") -> N # Extractions added in review may lack a `normalized` section. if task_type in ( - ModelGroupType.DOCUMENT_EXTRACTION, - ModelGroupType.FORM_EXTRACTION, - ModelGroupType.GENAI_EXTRACTION, + TaskType.DOCUMENT_EXTRACTION, + TaskType.FORM_EXTRACTION, + TaskType.GENAI_EXTRACTION, ) and not has(prediction, dict, "normalized"): prediction["normalized"] = {"formatted": get(prediction, str, "text")} # Document Extractions added in review may lack a `spans` section. # This value will match `NULL_SPAN`. if task_type in ( - ModelGroupType.DOCUMENT_EXTRACTION, - ModelGroupType.GENAI_EXTRACTION, + TaskType.DOCUMENT_EXTRACTION, + TaskType.GENAI_EXTRACTION, ) and not has(prediction, list, "spans"): prediction["spans"] = [] # Form Extractions added in review may lack bounding box information. # These values will match `NULL_BOX`. - if task_type == ModelGroupType.FORM_EXTRACTION and not has(prediction, int, "top"): + if task_type == TaskType.FORM_EXTRACTION and not has(prediction, int, "top"): prediction["page_num"] = 0 prediction["top"] = 0 prediction["left"] = 0 @@ -69,14 +69,14 @@ def normalize_prediction_dict(task_type: ModelGroupType, prediction: "Any") -> N # Document Extractions that didn't go through a linked labels transformer # lack a `groupings` section. if task_type in ( - ModelGroupType.DOCUMENT_EXTRACTION, - ModelGroupType.GENAI_EXTRACTION, + TaskType.DOCUMENT_EXTRACTION, + TaskType.GENAI_EXTRACTION, ) and not has(prediction, list, "groupings"): prediction["groupings"] = [] # Summarizations added in review may lack a `citations` section. # These values will match `NULL_CITATION`. - if task_type == ModelGroupType.GENAI_SUMMARIZATION and not has( + if task_type == TaskType.GENAI_SUMMARIZATION and not has( prediction, list, "citations" ): prediction["citations"] = [] diff --git a/indico_toolkit/results/predictionlist.py b/indico_toolkit/results/predictionlist.py index 32302a2..fb45470 100644 --- a/indico_toolkit/results/predictionlist.py +++ b/indico_toolkit/results/predictionlist.py @@ -2,7 +2,6 @@ from operator import attrgetter from typing import TYPE_CHECKING, List, TypeVar, overload -from .model import ModelGroupType from .predictions import ( Classification, DocumentExtraction, @@ -13,6 +12,7 @@ Unbundling, ) from .review import Review, ReviewType +from .task import TaskType from .utils import nfilter if TYPE_CHECKING: @@ -22,8 +22,8 @@ from typing_extensions import Self from .document import Document - from .model import ModelGroup from .result import Result + from .task import Task PredictionType = TypeVar("PredictionType", bound=Prediction) OfType = TypeVar("OfType", bound=Prediction) @@ -88,7 +88,7 @@ def groupby( ) -> "dict[KeyType, Self]": """ Group predictions into a dictionary using `key` to derive each prediction's key. - E.g. `key=attrgetter("label")` or `key=attrgetter("model")`. + E.g. `key=attrgetter("label")` or `key=attrgetter("task")`. If a derived key is an unhashable mutable collection (like set), it's automatically converted to its hashable immutable variant (like frozenset). @@ -149,8 +149,8 @@ def where( *, document: "Document | None" = None, document_in: "Container[Document] | None" = None, - model: "ModelGroup | ModelGroupType | str | None" = None, - model_in: "Container[ModelGroup | ModelGroupType | str] | None" = None, + task: "Task | TaskType | str | None" = None, + task_in: "Container[Task | TaskType | str] | None" = None, review: "Review | ReviewType | None" = REVIEW_UNSPECIFIED, review_in: "Container[Review | ReviewType | None]" = {REVIEW_UNSPECIFIED}, label: "str | None" = None, @@ -171,8 +171,8 @@ def where( predicate: predictions for which this function returns True, document: predictions from this document, document_in: predictions from these documents, - model: predictions from this model, task type, or name, - model_in: predictions from these models, task types, or names, + task: predictions from this task, task type, or task name, + task_in: predictions from these models, task types, or names, review: predictions from this review or review type, review_in: predictions from these reviews or review types, label: predictions with this label, @@ -197,21 +197,21 @@ def where( if document_in is not None: predicates.append(lambda prediction: prediction.document in document_in) - if model is not None: + if task is not None: predicates.append( lambda prediction: ( - prediction.model == model - or prediction.model.type == model - or prediction.model.name == model + prediction.task == task + or prediction.task.type == task + or prediction.task.name == task ) ) - if model_in is not None: + if task_in is not None: predicates.append( lambda prediction: ( - prediction.model in model_in - or prediction.model.type in model_in - or prediction.model.name in model_in + prediction.task in task_in + or prediction.task.type in task_in + or prediction.task.name in task_in ) ) @@ -341,20 +341,20 @@ def to_changes(self, result: "Result") -> "list[dict[str, Any]]": model_results: "dict[str, Any]" = {} component_results: "dict[str, Any]" = {} - predictions_by_model = self.where( + predictions_by_task = self.where( document=document, ).groupby( - attrgetter("model"), + attrgetter("task"), ) - for model, predictions in predictions_by_model.items(): - model_id = str(model.id) + for task, predictions in predictions_by_task.items(): + task_id = str(task.id) prediction_dicts = [prediction.to_dict() for prediction in predictions] - if model_id in document._model_ids: - model_results[model_id] = prediction_dicts - elif model_id in document._component_ids: - component_results[model_id] = prediction_dicts + if task_id in document._model_ids: + model_results[task_id] = prediction_dicts + elif task_id in document._component_ids: + component_results[task_id] = prediction_dicts for model_id in document._model_ids: if model_id not in model_results: diff --git a/indico_toolkit/results/predictions/__init__.py b/indico_toolkit/results/predictions/__init__.py index 3af7d02..e578f35 100644 --- a/indico_toolkit/results/predictions/__init__.py +++ b/indico_toolkit/results/predictions/__init__.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING -from ..model import ModelGroupType from ..normalization import normalize_prediction_dict +from ..task import TaskType from .box import NULL_BOX, Box from .citation import NULL_CITATION, Citation from .classification import Classification @@ -17,8 +17,8 @@ if TYPE_CHECKING: from ..document import Document from ..errors import ResultError - from ..model import ModelGroup from ..review import Review + from ..task import Task __all__ = ( "Box", @@ -38,35 +38,27 @@ "Unbundling", ) -CLASSIFICATION = ModelGroupType.CLASSIFICATION -DOCUMENT_EXTRACTION = ModelGroupType.DOCUMENT_EXTRACTION -FORM_EXTRACTION = ModelGroupType.FORM_EXTRACTION -GENAI_CLASSIFICATION = ModelGroupType.GENAI_CLASSIFICATION -GENAI_EXTRACTION = ModelGroupType.GENAI_EXTRACTION -GENAI_SUMMARIZATION = ModelGroupType.GENAI_SUMMARIZATION -UNBUNDLING = ModelGroupType.UNBUNDLING - def from_dict( document: "Document", - model: "ModelGroup", + task: "Task", review: "Review | None", prediction: object, ) -> "Prediction": """ Create a `Prediction` subclass from a prediction dictionary. """ - normalize_prediction_dict(model.type, prediction) + normalize_prediction_dict(task.type, prediction) - if model.type in (CLASSIFICATION, GENAI_CLASSIFICATION): - return Classification.from_dict(document, model, review, prediction) - elif model.type in (DOCUMENT_EXTRACTION, GENAI_EXTRACTION): - return DocumentExtraction.from_dict(document, model, review, prediction) - elif model.type == FORM_EXTRACTION: - return FormExtraction.from_dict(document, model, review, prediction) - elif model.type == GENAI_SUMMARIZATION: - return Summarization.from_dict(document, model, review, prediction) - elif model.type == UNBUNDLING: - return Unbundling.from_dict(document, model, review, prediction) + if task.type in (TaskType.CLASSIFICATION, TaskType.GENAI_CLASSIFICATION): + return Classification.from_dict(document, task, review, prediction) + elif task.type in (TaskType.DOCUMENT_EXTRACTION, TaskType.GENAI_EXTRACTION): + return DocumentExtraction.from_dict(document, task, review, prediction) + elif task.type == TaskType.FORM_EXTRACTION: + return FormExtraction.from_dict(document, task, review, prediction) + elif task.type == TaskType.GENAI_SUMMARIZATION: + return Summarization.from_dict(document, task, review, prediction) + elif task.type == TaskType.UNBUNDLING: + return Unbundling.from_dict(document, task, review, prediction) else: - raise ResultError(f"unsupported model type {model.type!r}") + raise ResultError(f"unsupported task type {task.type!r}") diff --git a/indico_toolkit/results/predictions/classification.py b/indico_toolkit/results/predictions/classification.py index 1cf3171..8ef33ea 100644 --- a/indico_toolkit/results/predictions/classification.py +++ b/indico_toolkit/results/predictions/classification.py @@ -9,7 +9,7 @@ from typing import Any from ..document import Document - from ..model import ModelGroup + from ..task import Task @dataclass @@ -17,7 +17,7 @@ class Classification(Prediction): @staticmethod def from_dict( document: "Document", - model: "ModelGroup", + task: "Task", review: "Review | None", prediction: object, ) -> "Classification": @@ -26,7 +26,7 @@ def from_dict( """ return Classification( document=document, - model=model, + task=task, review=review, label=get(prediction, str, "label"), confidences=get(prediction, dict, "confidence"), diff --git a/indico_toolkit/results/predictions/documentextraction.py b/indico_toolkit/results/predictions/documentextraction.py index 58f769e..fad2519 100644 --- a/indico_toolkit/results/predictions/documentextraction.py +++ b/indico_toolkit/results/predictions/documentextraction.py @@ -11,7 +11,7 @@ from typing import Any from ..document import Document - from ..model import ModelGroup + from ..task import Task @dataclass @@ -42,7 +42,7 @@ def span(self, span: Span) -> None: @staticmethod def from_dict( document: "Document", - model: "ModelGroup", + task: "Task", review: "Review | None", prediction: object, ) -> "DocumentExtraction": @@ -51,7 +51,7 @@ def from_dict( """ return DocumentExtraction( document=document, - model=model, + task=task, review=review, label=get(prediction, str, "label"), confidences=get(prediction, dict, "confidence"), diff --git a/indico_toolkit/results/predictions/formextraction.py b/indico_toolkit/results/predictions/formextraction.py index 57a0a40..3266ac4 100644 --- a/indico_toolkit/results/predictions/formextraction.py +++ b/indico_toolkit/results/predictions/formextraction.py @@ -11,7 +11,7 @@ from typing import Any from ..document import Document - from ..model import ModelGroup + from ..task import Task class FormExtractionType(Enum): @@ -30,7 +30,7 @@ class FormExtraction(Extraction): @staticmethod def from_dict( document: "Document", - model: "ModelGroup", + task: "Task", review: "Review | None", prediction: object, ) -> "FormExtraction": @@ -39,7 +39,7 @@ def from_dict( """ return FormExtraction( document=document, - model=model, + task=task, review=review, label=get(prediction, str, "label"), confidences=get(prediction, dict, "confidence"), diff --git a/indico_toolkit/results/predictions/prediction.py b/indico_toolkit/results/predictions/prediction.py index 9e00ce4..216e070 100644 --- a/indico_toolkit/results/predictions/prediction.py +++ b/indico_toolkit/results/predictions/prediction.py @@ -7,13 +7,13 @@ from typing import Any from ..document import Document - from ..model import ModelGroup + from ..task import Task @dataclass class Prediction: document: "Document" - model: "ModelGroup" + task: "Task" review: "Review | None" label: str diff --git a/indico_toolkit/results/predictions/summarization.py b/indico_toolkit/results/predictions/summarization.py index 4a723ef..ea93c99 100644 --- a/indico_toolkit/results/predictions/summarization.py +++ b/indico_toolkit/results/predictions/summarization.py @@ -10,7 +10,7 @@ from typing import Any from ..document import Document - from ..model import ModelGroup + from ..task import Task from .span import Span @@ -49,7 +49,7 @@ def span(self, span: "Span") -> None: @staticmethod def from_dict( document: "Document", - model: "ModelGroup", + task: "Task", review: "Review | None", prediction: object, ) -> "Summarization": @@ -58,7 +58,7 @@ def from_dict( """ return Summarization( document=document, - model=model, + task=task, review=review, label=get(prediction, str, "label"), confidences=get(prediction, dict, "confidence"), diff --git a/indico_toolkit/results/predictions/unbundling.py b/indico_toolkit/results/predictions/unbundling.py index 5466a61..4e15042 100644 --- a/indico_toolkit/results/predictions/unbundling.py +++ b/indico_toolkit/results/predictions/unbundling.py @@ -10,7 +10,7 @@ from typing import Any from ..document import Document - from ..model import ModelGroup + from ..task import Task @dataclass @@ -27,7 +27,7 @@ def pages(self) -> "tuple[int, ...]": @staticmethod def from_dict( document: "Document", - model: "ModelGroup", + task: "Task", review: "Review | None", prediction: object, ) -> "Unbundling": @@ -36,7 +36,7 @@ def from_dict( """ return Unbundling( document=document, - model=model, + task=task, review=review, label=get(prediction, str, "label"), confidences=get(prediction, dict, "confidence"), diff --git a/indico_toolkit/results/result.py b/indico_toolkit/results/result.py index 25e9cb7..5ad5b95 100644 --- a/indico_toolkit/results/result.py +++ b/indico_toolkit/results/result.py @@ -6,12 +6,12 @@ from . import predictions as prediction from .document import Document from .errors import ResultError -from .model import ModelGroup from .normalization import normalize_result_dict from .predictionlist import PredictionList from .predictions import Prediction from .review import Review, ReviewType -from .utils import get, has +from .task import Task +from .utils import get if TYPE_CHECKING: from typing import Any @@ -22,7 +22,7 @@ class Result: version: int submission_id: int documents: "tuple[Document, ...]" - models: "tuple[ModelGroup, ...]" + tasks: "tuple[Task, ...]" predictions: "PredictionList[Prediction]" reviews: "tuple[Review, ...]" @@ -78,10 +78,10 @@ def from_dict(result: object) -> "Result": map(Document.from_errored_file_dict, errored_files), ) ) - models = sorted( + tasks = sorted( chain( - map(ModelGroup.from_dict, modelgroup_metadata.values()), - map(ModelGroup.from_dict, static_model_components), + map(Task.from_dict, modelgroup_metadata.values()), + map(Task.from_dict, static_model_components), ) ) reviews = sorted(map(Review.from_dict, review_metadata.values())) @@ -110,12 +110,10 @@ def from_dict(result: object) -> "Result": for review, model_section in reviewed_model_predictions: for model_id, model_predictions in model_section.items(): - model = next( - filter(lambda model: model.id == int(model_id), models) - ) + task = next(filter(lambda task: task.id == int(model_id), tasks)) predictions.extend( map( - partial(prediction.from_dict, document, model, review), + partial(prediction.from_dict, document, task, review), model_predictions, ) ) @@ -123,8 +121,8 @@ def from_dict(result: object) -> "Result": for review, component_section in reviewed_component_predictions: for component_id, component_predictions in component_section.items(): try: - model = next( - filter(lambda model: model.id == int(component_id), models) + task = next( + filter(lambda task: task.id == int(component_id), tasks) ) except StopIteration: component_type = get( @@ -137,7 +135,7 @@ def from_dict(result: object) -> "Result": predictions.extend( map( - partial(prediction.from_dict, document, model, review), + partial(prediction.from_dict, document, task, review), component_predictions, ) ) @@ -146,7 +144,7 @@ def from_dict(result: object) -> "Result": version=version, submission_id=submission_id, documents=tuple(documents), - models=tuple(models), + tasks=tuple(tasks), predictions=predictions, reviews=tuple(reviews), ) diff --git a/indico_toolkit/results/model.py b/indico_toolkit/results/task.py similarity index 56% rename from indico_toolkit/results/model.py rename to indico_toolkit/results/task.py index c111c55..dab9c77 100644 --- a/indico_toolkit/results/model.py +++ b/indico_toolkit/results/task.py @@ -4,7 +4,7 @@ from .utils import get -class ModelGroupType(Enum): +class TaskType(Enum): CLASSIFICATION = "classification" DOCUMENT_EXTRACTION = "annotation" FORM_EXTRACTION = "form_extraction" @@ -15,18 +15,18 @@ class ModelGroupType(Enum): @dataclass(frozen=True, order=True) -class ModelGroup: +class Task: id: int name: str - type: ModelGroupType + type: TaskType @staticmethod - def from_dict(model_group: object) -> "ModelGroup": + def from_dict(metadata: object) -> "Task": """ - Create a `ModelGroup` from a model group dictionary. + Create a `Task` from a model group or component metadata dictionary. """ - return ModelGroup( - id=get(model_group, int, "id"), - name=get(model_group, str, "name"), - type=ModelGroupType(get(model_group, str, "task_type")), + return Task( + id=get(metadata, int, "id"), + name=get(metadata, str, "name"), + type=TaskType(get(metadata, str, "task_type")), ) diff --git a/tests/results/test_predictionlist.py b/tests/results/test_predictionlist.py index 0bd9930..a0449c7 100644 --- a/tests/results/test_predictionlist.py +++ b/tests/results/test_predictionlist.py @@ -7,13 +7,13 @@ Document, DocumentExtraction, Group, - ModelGroup, - ModelGroupType, Prediction, PredictionList, Review, ReviewType, Span, + Task, + TaskType, ) @@ -32,16 +32,14 @@ def document() -> Document: @pytest.fixture -def classification_model() -> ModelGroup: - return ModelGroup( - id=121, name="Tax Classification", type=ModelGroupType.CLASSIFICATION - ) +def classification_task() -> Task: + return Task(id=121, name="Tax Classification", type=TaskType.CLASSIFICATION) @pytest.fixture -def extraction_model() -> ModelGroup: - return ModelGroup( - id=122, name="1040 Document Extraction", type=ModelGroupType.DOCUMENT_EXTRACTION +def extraction_task() -> Task: + return Task( + id=122, name="1040 Document Extraction", type=TaskType.DOCUMENT_EXTRACTION ) @@ -72,8 +70,8 @@ def group_bravo() -> Group: @pytest.fixture def predictions( document: Document, - classification_model: ModelGroup, - extraction_model: ModelGroup, + classification_task: Task, + extraction_task: Task, auto_review: Review, manual_review: Review, group_alpha: Group, @@ -83,7 +81,7 @@ def predictions( [ Classification( document=document, - model=classification_model, + task=classification_task, review=None, label="1040", confidences={"1040": 0.7}, @@ -91,7 +89,7 @@ def predictions( ), DocumentExtraction( document=document, - model=extraction_model, + task=extraction_task, review=auto_review, label="First Name", confidences={"First Name": 0.8}, @@ -104,7 +102,7 @@ def predictions( ), DocumentExtraction( document=document, - model=extraction_model, + task=extraction_task, review=manual_review, label="Last Name", confidences={"Last Name": 0.9}, @@ -177,31 +175,29 @@ def test_where_document_in( assert predictions.where(document_in={}) == [] -def test_where_model( - predictions: "PredictionList[Prediction]", classification_model: ModelGroup +def test_where_task( + predictions: "PredictionList[Prediction]", classification_task: Task ) -> None: (classification,) = predictions.classifications - assert predictions.where(model=classification_model) == [classification] - assert predictions.where(model=ModelGroupType.CLASSIFICATION) == [classification] - assert predictions.where(model="Tax Classification") == [classification] + assert predictions.where(task=classification_task) == [classification] + assert predictions.where(task=TaskType.CLASSIFICATION) == [classification] + assert predictions.where(task="Tax Classification") == [classification] -def test_where_model_in( - predictions: "PredictionList[Prediction]", classification_model: ModelGroup +def test_where_task_in( + predictions: "PredictionList[Prediction]", classification_task: Task ) -> None: classification, first_name, last_name = predictions - assert predictions.where(model_in={classification_model}) == [classification] - assert predictions.where(model_in={ModelGroupType.CLASSIFICATION}) == [ - classification - ] + assert predictions.where(task_in={classification_task}) == [classification] + assert predictions.where(task_in={TaskType.CLASSIFICATION}) == [classification] assert predictions.where( - model_in={ModelGroupType.CLASSIFICATION, ModelGroupType.DOCUMENT_EXTRACTION} + task_in={TaskType.CLASSIFICATION, TaskType.DOCUMENT_EXTRACTION} ) == [classification, first_name, last_name] - assert predictions.where(model_in={"Tax Classification"}) == [classification] + assert predictions.where(task_in={"Tax Classification"}) == [classification] assert predictions.where( - model_in={"Tax Classification", "1040 Document Extraction"} + task_in={"Tax Classification", "1040 Document Extraction"} ) == [classification, first_name, last_name] - assert predictions.where(model_in={}) == [] + assert predictions.where(task_in={}) == [] def test_where_review( diff --git a/tests/results/test_predictions.py b/tests/results/test_predictions.py index b3b4391..484f660 100644 --- a/tests/results/test_predictions.py +++ b/tests/results/test_predictions.py @@ -4,7 +4,7 @@ def test_confidence() -> None: prediction = Prediction( document=None, # type: ignore[arg-type] - model=None, # type: ignore[arg-type] + task=None, # type: ignore[arg-type] review=None, label="Label", confidences={"Label": 0.5}, @@ -19,7 +19,7 @@ def test_confidence() -> None: def test_accepted() -> None: prediction = Extraction( document=None, # type: ignore[arg-type] - model=None, # type: ignore[arg-type] + task=None, # type: ignore[arg-type] review=None, label="Label", confidences={"Label": 0.5}, @@ -39,7 +39,7 @@ def test_accepted() -> None: def test_rejected() -> None: prediction = Extraction( document=None, # type: ignore[arg-type] - model=None, # type: ignore[arg-type] + task=None, # type: ignore[arg-type] review=None, label="Label", confidences={"Label": 0.5}, diff --git a/tests/results/test_result.py b/tests/results/test_result.py index 2dea9c4..ad84493 100644 --- a/tests/results/test_result.py +++ b/tests/results/test_result.py @@ -6,7 +6,7 @@ def test_rejected() -> None: version=None, # type: ignore[arg-type] submission_id=None, # type: ignore[arg-type] documents=None, # type: ignore[arg-type] - models=None, # type: ignore[arg-type] + tasks=None, # type: ignore[arg-type] predictions=None, # type: ignore[arg-type] reviews=[ Review( @@ -27,7 +27,7 @@ def test_unrejected() -> None: version=None, # type: ignore[arg-type] submission_id=None, # type: ignore[arg-type] documents=None, # type: ignore[arg-type] - models=None, # type: ignore[arg-type] + tasks=None, # type: ignore[arg-type] predictions=None, # type: ignore[arg-type] reviews=[ Review( From 75c40050238a31c4200d2b6d46e4cfe12cc6cb9c Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Wed, 4 Jun 2025 14:26:22 -0500 Subject: [PATCH 09/30] Refactor `Result.from_dict()` --- indico_toolkit/results/result.py | 75 ++++++++++++-------------------- 1 file changed, 29 insertions(+), 46 deletions(-) diff --git a/indico_toolkit/results/result.py b/indico_toolkit/results/result.py index 5ad5b95..1ef4651 100644 --- a/indico_toolkit/results/result.py +++ b/indico_toolkit/results/result.py @@ -1,11 +1,9 @@ from dataclasses import dataclass from functools import partial from itertools import chain -from typing import TYPE_CHECKING from . import predictions as prediction from .document import Document -from .errors import ResultError from .normalization import normalize_result_dict from .predictionlist import PredictionList from .predictions import Prediction @@ -13,9 +11,6 @@ from .task import Task from .utils import get -if TYPE_CHECKING: - from typing import Any - @dataclass(frozen=True, order=True) class Result: @@ -23,8 +18,8 @@ class Result: submission_id: int documents: "tuple[Document, ...]" tasks: "tuple[Task, ...]" - predictions: "PredictionList[Prediction]" reviews: "tuple[Review, ...]" + predictions: "PredictionList[Prediction]" @property def rejected(self) -> bool: @@ -93,50 +88,38 @@ def from_dict(result: object) -> "Result": document = next( filter(lambda document: document.id == document_id, documents) ) - reviewed_model_predictions: "list[tuple[Review | None, Any]]" = [ - (None, get(document_dict, dict, "model_results", "ORIGINAL")) - ] - reviewed_component_predictions: "list[tuple[Review | None, Any]]" = [ - (None, get(document_dict, dict, "component_results", "ORIGINAL")) - ] - - if reviews: - reviewed_model_predictions.append( - (reviews[-1], get(document_dict, dict, "model_results", "FINAL")) - ) - reviewed_component_predictions.append( - (reviews[-1], get(document_dict, dict, "component_results", "FINAL")) # fmt: skip # noqa: E501 - ) - - for review, model_section in reviewed_model_predictions: - for model_id, model_predictions in model_section.items(): - task = next(filter(lambda task: task.id == int(model_id), tasks)) - predictions.extend( - map( - partial(prediction.from_dict, document, task, review), - model_predictions, - ) + model_results = get(document_dict, dict, "model_results") + component_results = get(document_dict, dict, "component_results") + + # Parse original predictions (which don't have an associated review). + original_results = { + **get(model_results, dict, "ORIGINAL"), + **get(component_results, dict, "ORIGINAL"), + } + + for task_id, task_predictions in original_results.items(): + task = next(filter(lambda task: task.id == int(task_id), tasks)) + predictions.extend( + map( + partial(prediction.from_dict, document, task, None), + task_predictions, ) + ) - for review, component_section in reviewed_component_predictions: - for component_id, component_predictions in component_section.items(): - try: - task = next( - filter(lambda task: task.id == int(component_id), tasks) - ) - except StopIteration: - component_type = get( - component_metadata, str, component_id, "component_type" - ) - raise ResultError( - f"unsupported component type {component_type!r} " - f"for component {component_id}" - ) - + # Parse final predictions (associated with the most recent review). + if reviews: + review = reviews[-1] + final_results = { + **get(model_results, dict, "FINAL"), + **get(component_results, dict, "FINAL"), + } + + for task_id, task_predictions in final_results.items(): + task = next(filter(lambda task: task.id == int(task_id), tasks)) predictions.extend( map( partial(prediction.from_dict, document, task, review), - component_predictions, + task_predictions, ) ) @@ -145,6 +128,6 @@ def from_dict(result: object) -> "Result": submission_id=submission_id, documents=tuple(documents), tasks=tuple(tasks), - predictions=predictions, reviews=tuple(reviews), + predictions=predictions, ) From edd6d1c09c0c34abf3d9830bf4aa657a57bfe00a Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Fri, 6 Jun 2025 08:43:06 -0500 Subject: [PATCH 10/30] Add `Box.__bool__()` to match `Span` and `Citation` --- indico_toolkit/results/predictions/box.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indico_toolkit/results/predictions/box.py b/indico_toolkit/results/predictions/box.py index bf476bc..135d277 100644 --- a/indico_toolkit/results/predictions/box.py +++ b/indico_toolkit/results/predictions/box.py @@ -15,6 +15,9 @@ class Box: right: int bottom: int + def __bool__(self) -> bool: + return self != NULL_BOX + def __lt__(self, other: "Box") -> bool: """ Bounding boxes are sorted with vertical hysteresis. Those on the same line are From 24123cbd12d46aa0f75886cf6d81bd6213e6b610 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Fri, 6 Jun 2025 08:45:19 -0500 Subject: [PATCH 11/30] Add `Summarization.spans` property --- indico_toolkit/results/predictions/summarization.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/indico_toolkit/results/predictions/summarization.py b/indico_toolkit/results/predictions/summarization.py index ea93c99..3fb0de6 100644 --- a/indico_toolkit/results/predictions/summarization.py +++ b/indico_toolkit/results/predictions/summarization.py @@ -38,6 +38,13 @@ def citation(self, citation: Citation) -> None: """ self.citations = [citation] + @property + def spans(self) -> "tuple[Span, ...]": + """ + Return the spans covered by `self.citations`. + """ + return tuple(citation.span for citation in self.citations) + @property def span(self) -> "Span": return self.citation.span From 374f0ad7e95a36c22a50068f5e63313a48d0b0a8 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Fri, 6 Jun 2025 08:45:56 -0500 Subject: [PATCH 12/30] Update prediction docstrings and simplify a few statements --- .../results/predictions/documentextraction.py | 4 +-- .../results/predictions/formextraction.py | 11 ++++---- .../results/predictions/summarization.py | 25 +++++++++++++++---- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/indico_toolkit/results/predictions/documentextraction.py b/indico_toolkit/results/predictions/documentextraction.py index fad2519..2544757 100644 --- a/indico_toolkit/results/predictions/documentextraction.py +++ b/indico_toolkit/results/predictions/documentextraction.py @@ -31,9 +31,9 @@ def span(self) -> Span: @span.setter def span(self, span: Span) -> None: """ - Overwrite all `spans` with the one provided. + Overwrite all spans with the one provided. - This is implemented under the assumption that if you're setting the single span, + This is implemented under the assumption that if you're setting a single span, you want it to be the only one. And if you're working in a context that's multiple-span sensetive, you'll set `extraction.spans` instead. """ diff --git a/indico_toolkit/results/predictions/formextraction.py b/indico_toolkit/results/predictions/formextraction.py index 3266ac4..28782cb 100644 --- a/indico_toolkit/results/predictions/formextraction.py +++ b/indico_toolkit/results/predictions/formextraction.py @@ -106,11 +106,12 @@ def to_dict(self) -> "dict[str, Any]": # Don't overwrite the text of the signature stored in these attributes. # prediction["normalized"]["text"] = self.text # prediction["text"] = self.text - elif self.type == FormExtractionType.TEXT: - if self.text != get(prediction, str, "normalized", "formatted"): - prediction["normalized"]["formatted"] = self.text - prediction["normalized"]["text"] = self.text - prediction["text"] = self.text + elif self.type == FormExtractionType.TEXT and self.text != get( + prediction, str, "normalized", "formatted" + ): + prediction["normalized"]["formatted"] = self.text + prediction["normalized"]["text"] = self.text + prediction["text"] = self.text if self.accepted: prediction["accepted"] = True diff --git a/indico_toolkit/results/predictions/summarization.py b/indico_toolkit/results/predictions/summarization.py index 3fb0de6..cfeeb22 100644 --- a/indico_toolkit/results/predictions/summarization.py +++ b/indico_toolkit/results/predictions/summarization.py @@ -1,4 +1,4 @@ -from dataclasses import dataclass +from dataclasses import dataclass, replace from typing import TYPE_CHECKING from ..review import Review @@ -30,11 +30,12 @@ def citation(self) -> Citation: @citation.setter def citation(self, citation: Citation) -> None: """ - Overwrite all `citations` with the one provided. + Overwrite all citations with the one provided. - This is implemented under the assumption that if you're setting the single + This is implemented under the assumption that if you're setting a single citation, you want it to be the only one. And if you're working in a context - that's multiple-citation sensetive, you'll set `extraction.citations` instead. + that's multiple-citation sensetive, you'll set `summarization.citations` + instead. """ self.citations = [citation] @@ -47,11 +48,25 @@ def spans(self) -> "tuple[Span, ...]": @property def span(self) -> "Span": + """ + Return the `Span` the first citation covers else `NULL_SPAN`. + + Post-review, summarizations have no citations/spans. + """ return self.citation.span @span.setter def span(self, span: "Span") -> None: - self.citations = [Citation(self.citation.start, self.citation.end, span)] + """ + Overwrite all citations with the first, replacing its span with the one + provided. + + This is implemented under the assumption that if you're setting a single span, + there's only one citation and you want to update its span. And if you're + working in a context that's multiple-citation/span sensetive, you'll set + `summarization.citations` instead. + """ + self.citation = replace(self.citation, span=span) @staticmethod def from_dict( From 6c7196a8d0a84d80318a565140d04e2324601c69 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Fri, 6 Jun 2025 12:12:07 -0500 Subject: [PATCH 13/30] Add more unit tests --- .../classify_extract_static_models.json | 590 ++++--- tests/data/results/classify_unbundle.json | 1549 +++++++++++++++++ .../genai_classify_extract_summarize.json | 1053 +++++++++++ tests/results/test_files.py | 16 + tests/results/test_predictionlist.py | 12 +- tests/results/test_predictions.py | 350 +++- tests/results/test_utils.py | 81 + 7 files changed, 3364 insertions(+), 287 deletions(-) create mode 100644 tests/data/results/classify_unbundle.json create mode 100644 tests/data/results/genai_classify_extract_summarize.json create mode 100644 tests/results/test_utils.py diff --git a/tests/data/results/classify_extract_static_models.json b/tests/data/results/classify_extract_static_models.json index 07c6782..2e0c230 100644 --- a/tests/data/results/classify_extract_static_models.json +++ b/tests/data/results/classify_extract_static_models.json @@ -71,7 +71,10 @@ "input_filename": "invoice.pdf", "input_filepath": "indico-file:///storage/submission/5588/97211/93479.pdf", "input_filesize": 426157, - "model_results": { "ORIGINAL": {}, "FINAL": {} }, + "model_results": { + "ORIGINAL": {}, + "FINAL": {} + }, "component_results": { "ORIGINAL": { "19409": [ @@ -79,7 +82,7 @@ "field_id": 858117, "confidence": { "Invoice": 0.9999999853918985, - "Purchase Order": 1.4608101511772668e-8 + "Purchase Order": 1.4608101511772668e-08 }, "label": "Invoice" } @@ -87,17 +90,23 @@ "19411": [ { "label": "Vendor Name", - "spans": [{ "start": 0, "end": 13, "page_num": 0 }], + "spans": [ + { + "start": 0, + "end": 13, + "page_num": 0 + } + ], "span_id": "93479:c:19411:idx:0", "confidence": { - "Invoice Date": 3.3424697676309734e-8, - "Invoice Number": 3.447171437187535e-8, - "Invoice Subtotal": 2.993116865468437e-8, - "Invoice Tax": 3.6883669451981405e-8, - "Invoice Total": 2.7991509554681215e-8, - "Line Item Name": 8.883939806025865e-9, - "Line Item Quantity": 5.827023485949212e-8, - "Line Item Total": 5.176908146609094e-8, + "Invoice Date": 3.3424697676309734e-08, + "Invoice Number": 3.447171437187535e-08, + "Invoice Subtotal": 2.993116865468437e-08, + "Invoice Tax": 3.6883669451981405e-08, + "Invoice Total": 2.7991509554681215e-08, + "Line Item Name": 8.883939806025865e-09, + "Line Item Quantity": 5.827023485949212e-08, + "Line Item Total": 5.176908146609094e-08, "Vendor Name": 0.9999996423721313 }, "field_id": 858126, @@ -125,19 +134,23 @@ { "label": "Invoice Date", "spans": [ - { "start": 125, "end": 135, "page_num": 0 } + { + "start": 125, + "end": 135, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:1", "confidence": { "Invoice Date": 0.9999996423721313, - "Invoice Number": 3.765953948686729e-8, - "Invoice Subtotal": 2.3938278914670263e-8, - "Invoice Tax": 5.890121812512916e-8, - "Invoice Total": 2.9429369163835872e-8, - "Line Item Name": 1.0651284299001418e-7, - "Line Item Quantity": 1.2222901091263338e-7, - "Line Item Total": 4.1870002576160914e-8, - "Vendor Name": 1.4272615089794272e-8 + "Invoice Number": 3.765953948686729e-08, + "Invoice Subtotal": 2.3938278914670263e-08, + "Invoice Tax": 5.890121812512916e-08, + "Invoice Total": 2.9429369163835872e-08, + "Line Item Name": 1.0651284299001418e-07, + "Line Item Quantity": 1.2222901091263338e-07, + "Line Item Total": 4.1870002576160914e-08, + "Vendor Name": 1.4272615089794272e-08 }, "field_id": 858119, "location_type": "exact", @@ -164,19 +177,23 @@ { "label": "Invoice Number", "spans": [ - { "start": 146, "end": 153, "page_num": 0 } + { + "start": 146, + "end": 153, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:2", "confidence": { - "Invoice Date": 1.8282889868714847e-8, + "Invoice Date": 1.8282889868714847e-08, "Invoice Number": 0.9999997019767761, - "Invoice Subtotal": 5.3069218353130054e-8, - "Invoice Tax": 3.253961722293752e-8, - "Invoice Total": 1.3829179579261108e-7, - "Line Item Name": 4.505617923200589e-8, - "Line Item Quantity": 2.9700066406235237e-8, - "Line Item Total": 2.1834006602716727e-8, - "Vendor Name": 5.3663740118281567e-8 + "Invoice Subtotal": 5.3069218353130054e-08, + "Invoice Tax": 3.253961722293752e-08, + "Invoice Total": 1.3829179579261108e-07, + "Line Item Name": 4.505617923200589e-08, + "Line Item Quantity": 2.9700066406235237e-08, + "Line Item Total": 2.1834006602716727e-08, + "Vendor Name": 5.3663740118281567e-08 }, "field_id": 858120, "location_type": "exact", @@ -203,19 +220,23 @@ { "label": "Line Item Name", "spans": [ - { "start": 340, "end": 407, "page_num": 0 } + { + "start": 340, + "end": 407, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:3", "confidence": { - "Invoice Date": 7.043927041650022e-8, - "Invoice Number": 1.85422432963378e-8, - "Invoice Subtotal": 9.213624529991193e-9, - "Invoice Tax": 8.453332611679798e-8, - "Invoice Total": 1.9014857244314953e-8, + "Invoice Date": 7.043927041650022e-08, + "Invoice Number": 1.85422432963378e-08, + "Invoice Subtotal": 9.213624529991193e-09, + "Invoice Tax": 8.453332611679798e-08, + "Invoice Total": 1.9014857244314953e-08, "Line Item Name": 0.9999997019767761, - "Line Item Quantity": 8.187748257171279e-9, - "Line Item Total": 6.951040631975047e-9, - "Vendor Name": 7.4245527059702e-8 + "Line Item Quantity": 8.187748257171279e-09, + "Line Item Total": 6.951040631975047e-09, + "Vendor Name": 7.4245527059702e-08 }, "field_id": 858121, "location_type": "exact", @@ -248,19 +269,23 @@ { "label": "Line Item Quantity", "spans": [ - { "start": 476, "end": 477, "page_num": 0 } + { + "start": 476, + "end": 477, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:4", "confidence": { - "Invoice Date": 9.375153098289957e-8, - "Invoice Number": 5.951939741066781e-8, - "Invoice Subtotal": 6.869062474379461e-8, - "Invoice Tax": 1.196322472196698e-7, - "Invoice Total": 7.469050444797176e-8, - "Line Item Name": 6.045668499154999e-8, + "Invoice Date": 9.375153098289957e-08, + "Invoice Number": 5.951939741066781e-08, + "Invoice Subtotal": 6.869062474379461e-08, + "Invoice Tax": 1.196322472196698e-07, + "Invoice Total": 7.469050444797176e-08, + "Line Item Name": 6.045668499154999e-08, "Line Item Quantity": 0.9999992847442627, - "Line Item Total": 1.0597534583212109e-7, - "Vendor Name": 1.2245095604157541e-8 + "Line Item Total": 1.0597534583212109e-07, + "Vendor Name": 1.2245095604157541e-08 }, "field_id": 858122, "location_type": "exact", @@ -293,19 +318,23 @@ { "label": "Line Item Total", "spans": [ - { "start": 478, "end": 487, "page_num": 0 } + { + "start": 478, + "end": 487, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:5", "confidence": { - "Invoice Date": 2.9472216667159046e-8, - "Invoice Number": 6.045723477399179e-9, - "Invoice Subtotal": 3.819852167907811e-8, - "Invoice Tax": 6.359238025055447e-9, - "Invoice Total": 1.601269694617713e-8, - "Line Item Name": 4.507643325268873e-8, - "Line Item Quantity": 9.02977035366348e-8, + "Invoice Date": 2.9472216667159046e-08, + "Invoice Number": 6.045723477399179e-09, + "Invoice Subtotal": 3.819852167907811e-08, + "Invoice Tax": 6.359238025055447e-09, + "Invoice Total": 1.601269694617713e-08, + "Line Item Name": 4.507643325268873e-08, + "Line Item Quantity": 9.02977035366348e-08, "Line Item Total": 0.9999998211860657, - "Vendor Name": 3.079120602933472e-8 + "Vendor Name": 3.079120602933472e-08 }, "field_id": 858123, "location_type": "exact", @@ -338,19 +367,23 @@ { "label": "Line Item Quantity", "spans": [ - { "start": 499, "end": 501, "page_num": 0 } + { + "start": 499, + "end": 501, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:6", "confidence": { - "Invoice Date": 1.4731193687111954e-7, - "Invoice Number": 4.397265485067692e-8, - "Invoice Subtotal": 8.046448840559606e-8, - "Invoice Tax": 1.2959037576365517e-7, - "Invoice Total": 5.365328092921118e-8, - "Line Item Name": 4.536295961088399e-8, + "Invoice Date": 1.4731193687111954e-07, + "Invoice Number": 4.397265485067692e-08, + "Invoice Subtotal": 8.046448840559606e-08, + "Invoice Tax": 1.2959037576365517e-07, + "Invoice Total": 5.365328092921118e-08, + "Line Item Name": 4.536295961088399e-08, "Line Item Quantity": 0.9999994039535522, - "Line Item Total": 6.116934514466266e-8, - "Vendor Name": 1.0360611923942997e-8 + "Line Item Total": 6.116934514466266e-08, + "Vendor Name": 1.0360611923942997e-08 }, "field_id": 858122, "location_type": "exact", @@ -383,19 +416,23 @@ { "label": "Line Item Total", "spans": [ - { "start": 502, "end": 507, "page_num": 0 } + { + "start": 502, + "end": 507, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:7", "confidence": { - "Invoice Date": 2.487784023230688e-8, - "Invoice Number": 5.1960333813383386e-9, - "Invoice Subtotal": 2.7321593876195038e-8, - "Invoice Tax": 5.000234892804656e-9, - "Invoice Total": 1.1822152146123699e-8, - "Line Item Name": 3.007375326546935e-8, - "Line Item Quantity": 8.39153528886527e-8, + "Invoice Date": 2.487784023230688e-08, + "Invoice Number": 5.1960333813383386e-09, + "Invoice Subtotal": 2.7321593876195038e-08, + "Invoice Tax": 5.000234892804656e-09, + "Invoice Total": 1.1822152146123699e-08, + "Line Item Name": 3.007375326546935e-08, + "Line Item Quantity": 8.39153528886527e-08, "Line Item Total": 0.9999997615814209, - "Vendor Name": 1.9458024524965367e-8 + "Vendor Name": 1.9458024524965367e-08 }, "field_id": 858123, "location_type": "exact", @@ -428,19 +465,23 @@ { "label": "Line Item Quantity", "spans": [ - { "start": 519, "end": 520, "page_num": 0 } + { + "start": 519, + "end": 520, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:8", "confidence": { - "Invoice Date": 1.3724279313009902e-7, - "Invoice Number": 4.43608350053637e-8, - "Invoice Subtotal": 9.689298252624212e-8, - "Invoice Tax": 1.3488433125985466e-7, - "Invoice Total": 5.79847068138406e-8, - "Line Item Name": 4.117256224844823e-8, + "Invoice Date": 1.3724279313009902e-07, + "Invoice Number": 4.43608350053637e-08, + "Invoice Subtotal": 9.689298252624212e-08, + "Invoice Tax": 1.3488433125985466e-07, + "Invoice Total": 5.79847068138406e-08, + "Line Item Name": 4.117256224844823e-08, "Line Item Quantity": 0.9999994039535522, - "Line Item Total": 8.499782211401907e-8, - "Vendor Name": 9.074271112297083e-9 + "Line Item Total": 8.499782211401907e-08, + "Vendor Name": 9.074271112297083e-09 }, "field_id": 858122, "location_type": "exact", @@ -473,19 +514,23 @@ { "label": "Line Item Total", "spans": [ - { "start": 521, "end": 527, "page_num": 0 } + { + "start": 521, + "end": 527, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:9", "confidence": { - "Invoice Date": 3.019848193730468e-8, - "Invoice Number": 5.982286666039727e-9, - "Invoice Subtotal": 4.329503866529194e-8, - "Invoice Tax": 5.606381581202413e-9, - "Invoice Total": 1.3499708018116507e-8, - "Line Item Name": 3.2691968243625524e-8, - "Line Item Quantity": 8.082533042852447e-8, + "Invoice Date": 3.019848193730468e-08, + "Invoice Number": 5.982286666039727e-09, + "Invoice Subtotal": 4.329503866529194e-08, + "Invoice Tax": 5.606381581202413e-09, + "Invoice Total": 1.3499708018116507e-08, + "Line Item Name": 3.2691968243625524e-08, + "Line Item Quantity": 8.082533042852447e-08, "Line Item Total": 0.9999997615814209, - "Vendor Name": 2.1103359060248295e-8 + "Vendor Name": 2.1103359060248295e-08 }, "field_id": 858123, "location_type": "exact", @@ -518,19 +563,23 @@ { "label": "Invoice Subtotal", "spans": [ - { "start": 537, "end": 546, "page_num": 0 } + { + "start": 537, + "end": 546, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:10", "confidence": { - "Invoice Date": 9.50030809576674e-9, - "Invoice Number": 3.281632743323826e-8, + "Invoice Date": 9.50030809576674e-09, + "Invoice Number": 3.281632743323826e-08, "Invoice Subtotal": 1.0, - "Invoice Tax": 3.089213507223576e-8, - "Invoice Total": 4.5628176792433806e-9, - "Line Item Name": 4.575837042608555e-9, - "Line Item Quantity": 1.3403760767971562e-8, - "Line Item Total": 3.6726991226032624e-8, - "Vendor Name": 9.200683770416163e-9 + "Invoice Tax": 3.089213507223576e-08, + "Invoice Total": 4.5628176792433806e-09, + "Line Item Name": 4.575837042608555e-09, + "Line Item Quantity": 1.3403760767971562e-08, + "Line Item Total": 3.6726991226032624e-08, + "Vendor Name": 9.200683770416163e-09 }, "field_id": 858118, "location_type": "exact", @@ -557,19 +606,23 @@ { "label": "Invoice Tax", "spans": [ - { "start": 557, "end": 563, "page_num": 0 } + { + "start": 557, + "end": 563, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:11", "confidence": { - "Invoice Date": 6.549097975039331e-8, - "Invoice Number": 1.693945250735851e-8, - "Invoice Subtotal": 4.138750497872934e-8, + "Invoice Date": 6.549097975039331e-08, + "Invoice Number": 1.693945250735851e-08, + "Invoice Subtotal": 4.138750497872934e-08, "Invoice Tax": 0.9999997615814209, - "Invoice Total": 1.009439642984944e-8, - "Line Item Name": 6.045966927104018e-8, - "Line Item Quantity": 4.567436207025821e-8, - "Line Item Total": 2.1588691723195552e-8, - "Vendor Name": 7.856115757931548e-9 + "Invoice Total": 1.009439642984944e-08, + "Line Item Name": 6.045966927104018e-08, + "Line Item Quantity": 4.567436207025821e-08, + "Line Item Total": 2.1588691723195552e-08, + "Vendor Name": 7.856115757931548e-09 }, "field_id": 858125, "location_type": "exact", @@ -596,19 +649,23 @@ { "label": "Invoice Total", "spans": [ - { "start": 570, "end": 579, "page_num": 0 } + { + "start": 570, + "end": 579, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:12", "confidence": { - "Invoice Date": 3.388734981513153e-8, - "Invoice Number": 4.117489993404888e-8, - "Invoice Subtotal": 2.353094430418423e-8, - "Invoice Tax": 1.6204319663870592e-8, + "Invoice Date": 3.388734981513153e-08, + "Invoice Number": 4.117489993404888e-08, + "Invoice Subtotal": 2.353094430418423e-08, + "Invoice Tax": 1.6204319663870592e-08, "Invoice Total": 0.9999997019767761, - "Line Item Name": 7.487341413536797e-9, - "Line Item Quantity": 4.3006924244082256e-8, - "Line Item Total": 7.838348636823866e-8, - "Vendor Name": 3.8579965888629886e-8 + "Line Item Name": 7.487341413536797e-09, + "Line Item Quantity": 4.3006924244082256e-08, + "Line Item Total": 7.838348636823866e-08, + "Vendor Name": 3.8579965888629886e-08 }, "field_id": 858124, "location_type": "exact", @@ -641,7 +698,7 @@ "field_id": 858117, "confidence": { "Invoice": 0.9999999853918985, - "Purchase Order": 1.4608101511772668e-8 + "Purchase Order": 1.4608101511772668e-08 } } ], @@ -649,20 +706,26 @@ { "text": "Updated!", "label": "Vendor Name", - "spans": [{ "end": 13, "start": 0, "page_num": 0 }], + "spans": [ + { + "end": 13, + "start": 0, + "page_num": 0 + } + ], "span_id": "93479:c:19411:idx:0", "field_id": 858126, "groupings": [], "confidence": { - "Invoice Tax": 3.6883669451981405e-8, + "Invoice Tax": 3.6883669451981405e-08, "Vendor Name": 0.9999996423721313, - "Invoice Date": 3.3424697676309734e-8, - "Invoice Total": 2.7991509554681215e-8, - "Invoice Number": 3.447171437187535e-8, - "Line Item Name": 8.883939806025865e-9, - "Line Item Total": 5.176908146609094e-8, - "Invoice Subtotal": 2.993116865468437e-8, - "Line Item Quantity": 5.827023485949212e-8 + "Invoice Date": 3.3424697676309734e-08, + "Invoice Total": 2.7991509554681215e-08, + "Invoice Number": 3.447171437187535e-08, + "Line Item Name": 8.883939806025865e-09, + "Line Item Total": 5.176908146609094e-08, + "Invoice Subtotal": 2.993116865468437e-08, + "Line Item Quantity": 5.827023485949212e-08 }, "normalized": { "end": 13, @@ -687,21 +750,25 @@ "text": "Updated!", "label": "Invoice Date", "spans": [ - { "end": 135, "start": 125, "page_num": 0 } + { + "end": 135, + "start": 125, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:1", "field_id": 858119, "groupings": [], "confidence": { - "Invoice Tax": 5.890121812512916e-8, - "Vendor Name": 1.4272615089794272e-8, + "Invoice Tax": 5.890121812512916e-08, + "Vendor Name": 1.4272615089794272e-08, "Invoice Date": 0.9999996423721313, - "Invoice Total": 2.9429369163835872e-8, - "Invoice Number": 3.765953948686729e-8, - "Line Item Name": 1.0651284299001418e-7, - "Line Item Total": 4.1870002576160914e-8, - "Invoice Subtotal": 2.3938278914670263e-8, - "Line Item Quantity": 1.2222901091263338e-7 + "Invoice Total": 2.9429369163835872e-08, + "Invoice Number": 3.765953948686729e-08, + "Line Item Name": 1.0651284299001418e-07, + "Line Item Total": 4.1870002576160914e-08, + "Invoice Subtotal": 2.3938278914670263e-08, + "Line Item Quantity": 1.2222901091263338e-07 }, "normalized": { "end": 135, @@ -726,21 +793,25 @@ "text": "Updated!", "label": "Invoice Number", "spans": [ - { "end": 153, "start": 146, "page_num": 0 } + { + "end": 153, + "start": 146, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:2", "field_id": 858120, "groupings": [], "confidence": { - "Invoice Tax": 3.253961722293752e-8, - "Vendor Name": 5.3663740118281567e-8, - "Invoice Date": 1.8282889868714847e-8, - "Invoice Total": 1.3829179579261108e-7, + "Invoice Tax": 3.253961722293752e-08, + "Vendor Name": 5.3663740118281567e-08, + "Invoice Date": 1.8282889868714847e-08, + "Invoice Total": 1.3829179579261108e-07, "Invoice Number": 0.9999997019767761, - "Line Item Name": 4.505617923200589e-8, - "Line Item Total": 2.1834006602716727e-8, - "Invoice Subtotal": 5.3069218353130054e-8, - "Line Item Quantity": 2.9700066406235237e-8 + "Line Item Name": 4.505617923200589e-08, + "Line Item Total": 2.1834006602716727e-08, + "Invoice Subtotal": 5.3069218353130054e-08, + "Line Item Quantity": 2.9700066406235237e-08 }, "normalized": { "end": 153, @@ -765,7 +836,11 @@ "text": "Updated!", "label": "Line Item Name", "spans": [ - { "end": 407, "start": 340, "page_num": 0 } + { + "end": 407, + "start": 340, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:3", "field_id": 858121, @@ -777,15 +852,15 @@ } ], "confidence": { - "Invoice Tax": 8.453332611679798e-8, - "Vendor Name": 7.4245527059702e-8, - "Invoice Date": 7.043927041650022e-8, - "Invoice Total": 1.9014857244314953e-8, - "Invoice Number": 1.85422432963378e-8, + "Invoice Tax": 8.453332611679798e-08, + "Vendor Name": 7.4245527059702e-08, + "Invoice Date": 7.043927041650022e-08, + "Invoice Total": 1.9014857244314953e-08, + "Invoice Number": 1.85422432963378e-08, "Line Item Name": 0.9999997019767761, - "Line Item Total": 6.951040631975047e-9, - "Invoice Subtotal": 9.213624529991193e-9, - "Line Item Quantity": 8.187748257171279e-9 + "Line Item Total": 6.951040631975047e-09, + "Invoice Subtotal": 9.213624529991193e-09, + "Line Item Quantity": 8.187748257171279e-09 }, "normalized": { "end": 407, @@ -810,7 +885,11 @@ "text": "Updated!", "label": "Line Item Quantity", "spans": [ - { "end": 477, "start": 476, "page_num": 0 } + { + "end": 477, + "start": 476, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:4", "field_id": 858122, @@ -822,14 +901,14 @@ } ], "confidence": { - "Invoice Tax": 1.196322472196698e-7, - "Vendor Name": 1.2245095604157541e-8, - "Invoice Date": 9.375153098289957e-8, - "Invoice Total": 7.469050444797176e-8, - "Invoice Number": 5.951939741066781e-8, - "Line Item Name": 6.045668499154999e-8, - "Line Item Total": 1.0597534583212109e-7, - "Invoice Subtotal": 6.869062474379461e-8, + "Invoice Tax": 1.196322472196698e-07, + "Vendor Name": 1.2245095604157541e-08, + "Invoice Date": 9.375153098289957e-08, + "Invoice Total": 7.469050444797176e-08, + "Invoice Number": 5.951939741066781e-08, + "Line Item Name": 6.045668499154999e-08, + "Line Item Total": 1.0597534583212109e-07, + "Invoice Subtotal": 6.869062474379461e-08, "Line Item Quantity": 0.9999992847442627 }, "normalized": { @@ -855,7 +934,11 @@ "text": "Updated!", "label": "Line Item Total", "spans": [ - { "end": 487, "start": 478, "page_num": 0 } + { + "end": 487, + "start": 478, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:5", "field_id": 858123, @@ -867,15 +950,15 @@ } ], "confidence": { - "Invoice Tax": 6.359238025055447e-9, - "Vendor Name": 3.079120602933472e-8, - "Invoice Date": 2.9472216667159046e-8, - "Invoice Total": 1.601269694617713e-8, - "Invoice Number": 6.045723477399179e-9, - "Line Item Name": 4.507643325268873e-8, + "Invoice Tax": 6.359238025055447e-09, + "Vendor Name": 3.079120602933472e-08, + "Invoice Date": 2.9472216667159046e-08, + "Invoice Total": 1.601269694617713e-08, + "Invoice Number": 6.045723477399179e-09, + "Line Item Name": 4.507643325268873e-08, "Line Item Total": 0.9999998211860657, - "Invoice Subtotal": 3.819852167907811e-8, - "Line Item Quantity": 9.02977035366348e-8 + "Invoice Subtotal": 3.819852167907811e-08, + "Line Item Quantity": 9.02977035366348e-08 }, "normalized": { "end": 487, @@ -900,7 +983,11 @@ "text": "Updated!", "label": "Line Item Quantity", "spans": [ - { "end": 501, "start": 499, "page_num": 0 } + { + "end": 501, + "start": 499, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:6", "field_id": 858122, @@ -912,14 +999,14 @@ } ], "confidence": { - "Invoice Tax": 1.2959037576365517e-7, - "Vendor Name": 1.0360611923942997e-8, - "Invoice Date": 1.4731193687111954e-7, - "Invoice Total": 5.365328092921118e-8, - "Invoice Number": 4.397265485067692e-8, - "Line Item Name": 4.536295961088399e-8, - "Line Item Total": 6.116934514466266e-8, - "Invoice Subtotal": 8.046448840559606e-8, + "Invoice Tax": 1.2959037576365517e-07, + "Vendor Name": 1.0360611923942997e-08, + "Invoice Date": 1.4731193687111954e-07, + "Invoice Total": 5.365328092921118e-08, + "Invoice Number": 4.397265485067692e-08, + "Line Item Name": 4.536295961088399e-08, + "Line Item Total": 6.116934514466266e-08, + "Invoice Subtotal": 8.046448840559606e-08, "Line Item Quantity": 0.9999994039535522 }, "normalized": { @@ -945,7 +1032,11 @@ "text": "Updated!", "label": "Line Item Total", "spans": [ - { "end": 507, "start": 502, "page_num": 0 } + { + "end": 507, + "start": 502, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:7", "field_id": 858123, @@ -957,15 +1048,15 @@ } ], "confidence": { - "Invoice Tax": 5.000234892804656e-9, - "Vendor Name": 1.9458024524965367e-8, - "Invoice Date": 2.487784023230688e-8, - "Invoice Total": 1.1822152146123699e-8, - "Invoice Number": 5.1960333813383386e-9, - "Line Item Name": 3.007375326546935e-8, + "Invoice Tax": 5.000234892804656e-09, + "Vendor Name": 1.9458024524965367e-08, + "Invoice Date": 2.487784023230688e-08, + "Invoice Total": 1.1822152146123699e-08, + "Invoice Number": 5.1960333813383386e-09, + "Line Item Name": 3.007375326546935e-08, "Line Item Total": 0.9999997615814209, - "Invoice Subtotal": 2.7321593876195038e-8, - "Line Item Quantity": 8.39153528886527e-8 + "Invoice Subtotal": 2.7321593876195038e-08, + "Line Item Quantity": 8.39153528886527e-08 }, "normalized": { "end": 507, @@ -990,7 +1081,11 @@ "text": "Updated!", "label": "Line Item Quantity", "spans": [ - { "end": 520, "start": 519, "page_num": 0 } + { + "end": 520, + "start": 519, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:8", "field_id": 858122, @@ -1002,14 +1097,14 @@ } ], "confidence": { - "Invoice Tax": 1.3488433125985466e-7, - "Vendor Name": 9.074271112297083e-9, - "Invoice Date": 1.3724279313009902e-7, - "Invoice Total": 5.79847068138406e-8, - "Invoice Number": 4.43608350053637e-8, - "Line Item Name": 4.117256224844823e-8, - "Line Item Total": 8.499782211401907e-8, - "Invoice Subtotal": 9.689298252624212e-8, + "Invoice Tax": 1.3488433125985466e-07, + "Vendor Name": 9.074271112297083e-09, + "Invoice Date": 1.3724279313009902e-07, + "Invoice Total": 5.79847068138406e-08, + "Invoice Number": 4.43608350053637e-08, + "Line Item Name": 4.117256224844823e-08, + "Line Item Total": 8.499782211401907e-08, + "Invoice Subtotal": 9.689298252624212e-08, "Line Item Quantity": 0.9999994039535522 }, "normalized": { @@ -1035,7 +1130,11 @@ "text": "Updated!", "label": "Line Item Total", "spans": [ - { "end": 527, "start": 521, "page_num": 0 } + { + "end": 527, + "start": 521, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:9", "field_id": 858123, @@ -1047,15 +1146,15 @@ } ], "confidence": { - "Invoice Tax": 5.606381581202413e-9, - "Vendor Name": 2.1103359060248295e-8, - "Invoice Date": 3.019848193730468e-8, - "Invoice Total": 1.3499708018116507e-8, - "Invoice Number": 5.982286666039727e-9, - "Line Item Name": 3.2691968243625524e-8, + "Invoice Tax": 5.606381581202413e-09, + "Vendor Name": 2.1103359060248295e-08, + "Invoice Date": 3.019848193730468e-08, + "Invoice Total": 1.3499708018116507e-08, + "Invoice Number": 5.982286666039727e-09, + "Line Item Name": 3.2691968243625524e-08, "Line Item Total": 0.9999997615814209, - "Invoice Subtotal": 4.329503866529194e-8, - "Line Item Quantity": 8.082533042852447e-8 + "Invoice Subtotal": 4.329503866529194e-08, + "Line Item Quantity": 8.082533042852447e-08 }, "normalized": { "end": 527, @@ -1080,21 +1179,25 @@ "text": "Updated!", "label": "Invoice Subtotal", "spans": [ - { "end": 546, "start": 537, "page_num": 0 } + { + "end": 546, + "start": 537, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:10", "field_id": 858118, "groupings": [], "confidence": { - "Invoice Tax": 3.089213507223576e-8, - "Vendor Name": 9.200683770416163e-9, - "Invoice Date": 9.50030809576674e-9, - "Invoice Total": 4.5628176792433806e-9, - "Invoice Number": 3.281632743323826e-8, - "Line Item Name": 4.575837042608555e-9, - "Line Item Total": 3.6726991226032624e-8, + "Invoice Tax": 3.089213507223576e-08, + "Vendor Name": 9.200683770416163e-09, + "Invoice Date": 9.50030809576674e-09, + "Invoice Total": 4.5628176792433806e-09, + "Invoice Number": 3.281632743323826e-08, + "Line Item Name": 4.575837042608555e-09, + "Line Item Total": 3.6726991226032624e-08, "Invoice Subtotal": 1.0, - "Line Item Quantity": 1.3403760767971562e-8 + "Line Item Quantity": 1.3403760767971562e-08 }, "normalized": { "end": 546, @@ -1119,21 +1222,25 @@ "text": "Updated!", "label": "Invoice Tax", "spans": [ - { "end": 563, "start": 557, "page_num": 0 } + { + "end": 563, + "start": 557, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:11", "field_id": 858125, "groupings": [], "confidence": { "Invoice Tax": 0.9999997615814209, - "Vendor Name": 7.856115757931548e-9, - "Invoice Date": 6.549097975039331e-8, - "Invoice Total": 1.009439642984944e-8, - "Invoice Number": 1.693945250735851e-8, - "Line Item Name": 6.045966927104018e-8, - "Line Item Total": 2.1588691723195552e-8, - "Invoice Subtotal": 4.138750497872934e-8, - "Line Item Quantity": 4.567436207025821e-8 + "Vendor Name": 7.856115757931548e-09, + "Invoice Date": 6.549097975039331e-08, + "Invoice Total": 1.009439642984944e-08, + "Invoice Number": 1.693945250735851e-08, + "Line Item Name": 6.045966927104018e-08, + "Line Item Total": 2.1588691723195552e-08, + "Invoice Subtotal": 4.138750497872934e-08, + "Line Item Quantity": 4.567436207025821e-08 }, "normalized": { "end": 563, @@ -1158,21 +1265,25 @@ "text": "Updated!", "label": "Invoice Total", "spans": [ - { "end": 579, "start": 570, "page_num": 0 } + { + "end": 579, + "start": 570, + "page_num": 0 + } ], "span_id": "93479:c:19411:idx:12", "field_id": 858124, "groupings": [], "confidence": { - "Invoice Tax": 1.6204319663870592e-8, - "Vendor Name": 3.8579965888629886e-8, - "Invoice Date": 3.388734981513153e-8, + "Invoice Tax": 1.6204319663870592e-08, + "Vendor Name": 3.8579965888629886e-08, + "Invoice Date": 3.388734981513153e-08, "Invoice Total": 0.9999997019767761, - "Invoice Number": 4.117489993404888e-8, - "Line Item Name": 7.487341413536797e-9, - "Line Item Total": 7.838348636823866e-8, - "Invoice Subtotal": 2.353094430418423e-8, - "Line Item Quantity": 4.3006924244082256e-8 + "Invoice Number": 4.117489993404888e-08, + "Line Item Name": 7.487341413536797e-09, + "Line Item Total": 7.838348636823866e-08, + "Invoice Subtotal": 2.353094430418423e-08, + "Line Item Quantity": 4.3006924244082256e-08 }, "normalized": { "end": 579, @@ -1198,7 +1309,10 @@ }, "rejected": { "models": {}, - "components": { "19409": [], "19411": [] } + "components": { + "19409": [], + "19411": [] + } } } ], diff --git a/tests/data/results/classify_unbundle.json b/tests/data/results/classify_unbundle.json new file mode 100644 index 0000000..77730f0 --- /dev/null +++ b/tests/data/results/classify_unbundle.json @@ -0,0 +1,1549 @@ +{ + "file_version": 3, + "submission_id": 111925, + "modelgroup_metadata": { + "3573": { + "id": 3573, + "task_type": "classification_unbundling", + "name": "Accounting Classify + Unbundle Model", + "selected_model": { + "id": 5943, + "model_type": "unbundle" + } + }, + "3575": { + "id": 3575, + "task_type": "annotation", + "name": "Purchase Order Extraction Model", + "selected_model": { + "id": 5944, + "model_type": "finetune" + } + }, + "3574": { + "id": 3574, + "task_type": "annotation", + "name": "Invoice Extraction Model", + "selected_model": { + "id": 5945, + "model_type": "finetune" + } + } + }, + "component_metadata": { + "13460": { + "id": 13460, + "name": null, + "component_type": "input_ocr_extraction", + "task_type": null + }, + "13461": { + "id": 13461, + "name": null, + "component_type": "output_json_formatter", + "task_type": null + }, + "13463": { + "id": 13463, + "name": "Model Link", + "component_type": "link_classification_model", + "task_type": "classification_unbundling" + }, + "13462": { + "id": 13462, + "name": "Classify & Unbundle", + "component_type": "model_group", + "task_type": "classification_unbundling" + }, + "13473": { + "id": 13473, + "name": "Standard Output", + "component_type": "default_output", + "task_type": null + }, + "13465": { + "id": 13465, + "name": "Document Extraction", + "component_type": "model_group", + "task_type": "annotation" + }, + "13464": { + "id": 13464, + "name": "Document Extraction", + "component_type": "model_group", + "task_type": "annotation" + }, + "13509": { + "id": 13509, + "name": "Invoice Line Items", + "component_type": "link_label", + "task_type": "annotation" + }, + "13510": { + "id": 13510, + "name": "Purchase Order Line Items", + "component_type": "link_label", + "task_type": "annotation" + } + }, + "submission_results": [ + { + "submissionfile_id": 110240, + "etl_output": "indico-file:///storage/submission/3390/111925/110240/etl_output.json", + "input_filename": "invoice_purchase_order.pdf", + "input_filepath": "indico-file:///storage/submission/3390/111925/110240.pdf", + "input_filesize": 557772, + "model_results": { + "ORIGINAL": { + "3575": [ + { + "label": "PO Number", + "spans": [ + { + "start": 913, + "end": 921, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:0", + "confidence": { + "Buyer ID": 3.9759633807534556e-08, + "Buyer Name": 1.9463303857492065e-08, + "PO Date": 5.796522017931238e-08, + "PO Number": 0.9999997615814209, + "PO Total": 4.069203285439471e-08, + "Product Code": 7.215704478369389e-09, + "Product Description": 5.233022193351644e-08, + "Product Quantity": 1.8292172221379133e-09, + "Product Total": 2.6435490241283333e-08, + "Product Unit Cost": 5.0478824675792566e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120021, + "location_type": "exact", + "text": "29111525", + "groupings": [], + "normalized": { + "text": "29111525", + "start": 913, + "end": 921, + "structured": null, + "formatted": "29111525", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "29111525", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "PO Date", + "spans": [ + { + "start": 940, + "end": 948, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:1", + "confidence": { + "Buyer ID": 1.260312565420918e-08, + "Buyer Name": 2.8092603798768323e-08, + "PO Date": 0.9999998807907104, + "PO Number": 2.9626800568394174e-08, + "PO Total": 3.108670298956895e-08, + "Product Code": 2.1860692811515037e-08, + "Product Description": 6.856565537560755e-09, + "Product Quantity": 3.7269181518695405e-08, + "Product Total": 1.0276705708633926e-08, + "Product Unit Cost": 3.0717313137529345e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120015, + "location_type": "exact", + "text": "06/16/21", + "groupings": [], + "normalized": { + "text": "06/16/21", + "start": 940, + "end": 948, + "structured": null, + "formatted": "06/16/21", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "06/16/21", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "PO Date", + "spans": [ + { + "start": 1105, + "end": 1113, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:2", + "confidence": { + "Buyer ID": 2.9177197546914613e-08, + "Buyer Name": 4.7441318429264356e-08, + "PO Date": 0.9999997019767761, + "PO Number": 3.149720129158595e-08, + "PO Total": 4.2093148522326373e-08, + "Product Code": 3.489043010063142e-08, + "Product Description": 1.1860040061151267e-08, + "Product Quantity": 8.99577230484283e-08, + "Product Total": 1.5737816383420977e-08, + "Product Unit Cost": 5.83859893765748e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120015, + "location_type": "exact", + "text": "06/16/21", + "groupings": [], + "normalized": { + "text": "06/16/21", + "start": 1105, + "end": 1113, + "structured": null, + "formatted": "06/16/21", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "06/16/21", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Buyer Name", + "spans": [ + { + "start": 1129, + "end": 1142, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:3", + "confidence": { + "Buyer ID": 2.775985194602981e-06, + "Buyer Name": 0.9999920129776001, + "PO Date": 1.1424342574173352e-06, + "PO Number": 6.636756779698771e-07, + "PO Total": 1.2387488368403865e-06, + "Product Code": 1.5161199939939252e-07, + "Product Description": 4.459812430468446e-07, + "Product Quantity": 5.8449707296404085e-08, + "Product Total": 1.2399630122672534e-06, + "Product Unit Cost": 4.883690252199813e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120014, + "location_type": "exact", + "text": "Michelle Amos", + "groupings": [], + "normalized": { + "text": "Michelle Amos", + "start": 1129, + "end": 1142, + "structured": null, + "formatted": "Michelle Amos", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Michelle Amos", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Buyer ID", + "spans": [ + { + "start": 1143, + "end": 1148, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:4", + "confidence": { + "Buyer ID": 0.9999983310699463, + "Buyer Name": 6.381637973618126e-08, + "PO Date": 2.1404009942216362e-07, + "PO Number": 3.102229015894409e-07, + "PO Total": 8.845214694019887e-08, + "Product Code": 7.08578511421365e-07, + "Product Description": 3.161366990411807e-08, + "Product Quantity": 3.113808944021912e-08, + "Product Total": 7.830900727867629e-08, + "Product Unit Cost": 6.467509194862942e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120013, + "location_type": "exact", + "text": "86847", + "groupings": [], + "normalized": { + "text": "86847", + "start": 1143, + "end": 1148, + "structured": null, + "formatted": "86847", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "86847", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Quantity", + "spans": [ + { + "start": 1295, + "end": 1297, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:5", + "confidence": { + "Buyer ID": 1.3045982072412698e-08, + "Buyer Name": 4.459975144754935e-08, + "PO Date": 8.504453319346794e-08, + "PO Number": 2.303658774849282e-08, + "PO Total": 1.2090626277938554e-08, + "Product Code": 4.2213304851657085e-08, + "Product Description": 3.288579364379984e-08, + "Product Quantity": 0.9999995231628418, + "Product Total": 8.11550151524898e-08, + "Product Unit Cost": 1.4015483884577407e-07 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120016, + "location_type": "exact", + "text": "60", + "groupings": [ + { + "group_name": "Purchase Order Line Item", + "group_index": 5, + "group_id": "3575:Purchase Order Line Item" + } + ], + "normalized": { + "text": "60", + "start": 1295, + "end": 1297, + "structured": null, + "formatted": "60", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "60", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Code", + "spans": [ + { + "start": 1298, + "end": 1304, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:6", + "confidence": { + "Buyer ID": 7.20296711165247e-08, + "Buyer Name": 1.3615315985759935e-08, + "PO Date": 4.9160934878500484e-08, + "PO Number": 3.5624182714855124e-08, + "PO Total": 9.834185021873054e-08, + "Product Code": 0.9999997615814209, + "Product Description": 3.534249515269039e-08, + "Product Quantity": 3.618025345986098e-08, + "Product Total": 4.180680335252873e-08, + "Product Unit Cost": 1.6671689806457834e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120017, + "location_type": "exact", + "text": "605220", + "groupings": [ + { + "group_name": "Purchase Order Line Item", + "group_index": 5, + "group_id": "3575:Purchase Order Line Item" + } + ], + "normalized": { + "text": "605220", + "start": 1298, + "end": 1304, + "structured": null, + "formatted": "605220", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "605220", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Description", + "spans": [ + { + "start": 1305, + "end": 1327, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:7", + "confidence": { + "Buyer ID": 7.981385330424473e-09, + "Buyer Name": 3.255262015500193e-08, + "PO Date": 2.1035599928609372e-08, + "PO Number": 3.201226306259741e-08, + "PO Total": 3.1244521636608624e-08, + "Product Code": 1.0316321663594863e-07, + "Product Description": 0.9999995827674866, + "Product Quantity": 2.844361546294749e-08, + "Product Total": 2.2208748617913443e-08, + "Product Unit Cost": 6.909758099027385e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120018, + "location_type": "exact", + "text": "JELTRATE DUSTLESS FAST", + "groupings": [ + { + "group_name": "Purchase Order Line Item", + "group_index": 6, + "group_id": "3575:Purchase Order Line Item" + } + ], + "normalized": { + "text": "JELTRATE DUSTLESS FAST", + "start": 1305, + "end": 1327, + "structured": null, + "formatted": "JELTRATE DUSTLESS FAST", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "JELTRATE DUSTLESS FAST", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Unit Cost", + "spans": [ + { + "start": 1328, + "end": 1333, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:8", + "confidence": { + "Buyer ID": 1.2620411382613383e-08, + "Buyer Name": 1.7465616730660827e-09, + "PO Date": 3.621458333213923e-08, + "PO Number": 4.4942481736143236e-08, + "PO Total": 8.627528913507376e-09, + "Product Code": 8.263185691248509e-09, + "Product Description": 1.9017479147009908e-08, + "Product Quantity": 2.8081380776256992e-08, + "Product Total": 1.4229537548260396e-08, + "Product Unit Cost": 0.9999998211860657 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120019, + "location_type": "exact", + "text": "12.00", + "groupings": [ + { + "group_name": "Purchase Order Line Item", + "group_index": 5, + "group_id": "3575:Purchase Order Line Item" + } + ], + "normalized": { + "text": "12.00", + "start": 1328, + "end": 1333, + "structured": null, + "formatted": "12.00", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "12.00", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Total", + "spans": [ + { + "start": 1337, + "end": 1343, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:9", + "confidence": { + "Buyer ID": 1.366692714555029e-08, + "Buyer Name": 7.96151855553262e-09, + "PO Date": 8.621874769687565e-09, + "PO Number": 1.872928834245613e-08, + "PO Total": 3.4086248490439175e-08, + "Product Code": 3.344463195276148e-08, + "Product Description": 8.435340426160565e-09, + "Product Quantity": 3.089347089257899e-08, + "Product Total": 0.9999998211860657, + "Product Unit Cost": 6.437866062469766e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120020, + "location_type": "exact", + "text": "720.00", + "groupings": [ + { + "group_name": "Purchase Order Line Item", + "group_index": 5, + "group_id": "3575:Purchase Order Line Item" + } + ], + "normalized": { + "text": "720.00", + "start": 1337, + "end": 1343, + "structured": null, + "formatted": "720.00", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "720.00", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Quantity", + "spans": [ + { + "start": 1344, + "end": 1346, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:10", + "confidence": { + "Buyer ID": 1.033030372354915e-08, + "Buyer Name": 4.0307277515694295e-08, + "PO Date": 8.147264907165663e-08, + "PO Number": 2.572113722010272e-08, + "PO Total": 1.1943932065605622e-08, + "Product Code": 3.7300896593706057e-08, + "Product Description": 3.2443203679122234e-08, + "Product Quantity": 0.9999995231628418, + "Product Total": 7.050869754721134e-08, + "Product Unit Cost": 1.4405765114133828e-07 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120016, + "location_type": "exact", + "text": "60", + "groupings": [ + { + "group_name": "Purchase Order Line Item", + "group_index": 7, + "group_id": "3575:Purchase Order Line Item" + } + ], + "normalized": { + "text": "60", + "start": 1344, + "end": 1346, + "structured": null, + "formatted": "60", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "60", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Code", + "spans": [ + { + "start": 1347, + "end": 1353, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:11", + "confidence": { + "Buyer ID": 8.408217411215446e-08, + "Buyer Name": 1.319303422064877e-08, + "PO Date": 4.320332180896003e-08, + "PO Number": 2.884461736130106e-08, + "PO Total": 7.531522783210676e-08, + "Product Code": 0.9999997615814209, + "Product Description": 4.1707721720740665e-08, + "Product Quantity": 3.1274822731575114e-08, + "Product Total": 4.891590776878729e-08, + "Product Unit Cost": 1.5698081057280433e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120017, + "location_type": "exact", + "text": "608015", + "groupings": [ + { + "group_name": "Purchase Order Line Item", + "group_index": 7, + "group_id": "3575:Purchase Order Line Item" + } + ], + "normalized": { + "text": "608015", + "start": 1347, + "end": 1353, + "structured": null, + "formatted": "608015", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "608015", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Description", + "spans": [ + { + "start": 1354, + "end": 1382, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:12", + "confidence": { + "Buyer ID": 9.057380623289646e-09, + "Buyer Name": 3.451427943446106e-08, + "PO Date": 2.4451530578062375e-08, + "PO Number": 3.691638639224948e-08, + "PO Total": 3.974247064775227e-08, + "Product Code": 1.1550874745580586e-07, + "Product Description": 0.9999995827674866, + "Product Quantity": 2.6015149146019212e-08, + "Product Total": 3.048536001415414e-08, + "Product Unit Cost": 6.462573054477616e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120018, + "location_type": "exact", + "text": "JELTRATE SCOOP / MEASURE SET", + "groupings": [ + { + "group_name": "Purchase Order Line Item", + "group_index": 8, + "group_id": "3575:Purchase Order Line Item" + } + ], + "normalized": { + "text": "JELTRATE SCOOP / MEASURE SET", + "start": 1354, + "end": 1382, + "structured": null, + "formatted": "JELTRATE SCOOP / MEASURE SET", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "JELTRATE SCOOP / MEASURE SET", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Unit Cost", + "spans": [ + { + "start": 1383, + "end": 1387, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:13", + "confidence": { + "Buyer ID": 1.124148241160583e-08, + "Buyer Name": 1.7319977674290499e-09, + "PO Date": 3.236478107737639e-08, + "PO Number": 6.806299523987036e-08, + "PO Total": 1.0198013988826915e-08, + "Product Code": 8.777792714909083e-09, + "Product Description": 3.397078529587816e-08, + "Product Quantity": 2.6242426898193116e-08, + "Product Total": 1.0425345919884421e-08, + "Product Unit Cost": 0.9999997615814209 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120019, + "location_type": "exact", + "text": "3.05", + "groupings": [ + { + "group_name": "Purchase Order Line Item", + "group_index": 7, + "group_id": "3575:Purchase Order Line Item" + } + ], + "normalized": { + "text": "3.05", + "start": 1383, + "end": 1387, + "structured": null, + "formatted": "3.05", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "3.05", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Product Total", + "spans": [ + { + "start": 1391, + "end": 1397, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:14", + "confidence": { + "Buyer ID": 1.524664838825629e-08, + "Buyer Name": 6.586528655816437e-09, + "PO Date": 1.0539146444443759e-08, + "PO Number": 1.7903639459859733e-08, + "PO Total": 3.264556269755303e-08, + "Product Code": 3.4033377005471266e-08, + "Product Description": 1.0650013315682827e-08, + "Product Quantity": 3.289566663511323e-08, + "Product Total": 0.9999998211860657, + "Product Unit Cost": 6.564289378729882e-08 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120020, + "location_type": "exact", + "text": "183.00", + "groupings": [ + { + "group_name": "Purchase Order Line Item", + "group_index": 7, + "group_id": "3575:Purchase Order Line Item" + } + ], + "normalized": { + "text": "183.00", + "start": 1391, + "end": 1397, + "structured": null, + "formatted": "183.00", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "183.00", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "PO Total", + "spans": [ + { + "start": 1404, + "end": 1410, + "page_num": 1 + } + ], + "span_id": "110240:c:13465:idx:15", + "confidence": { + "Buyer ID": 1.9132738060534393e-08, + "Buyer Name": 7.473924057421755e-08, + "PO Date": 4.668994080248012e-08, + "PO Number": 1.337708255277903e-08, + "PO Total": 0.9999998807907104, + "Product Code": 1.1124559051722827e-08, + "Product Description": 1.1377012221203131e-08, + "Product Quantity": 1.3278643073988405e-08, + "Product Total": 1.0426457919265886e-08, + "Product Unit Cost": 9.852571203339267e-09 + }, + "ctx_id": "110240:c:13462:idx:1", + "field_id": 120022, + "location_type": "exact", + "text": "903.00", + "groupings": [], + "normalized": { + "text": "903.00", + "start": 1404, + "end": 1410, + "structured": null, + "formatted": "903.00", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "903.00", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ], + "3573": [ + { + "label": "Invoice", + "spans": [ + { + "start": 0, + "end": 762, + "page_num": 0 + } + ], + "span_id": "110240:c:13462:idx:0", + "confidence": { + "Invoice": 0.9754887819290161, + "Purchase Order": 0.024511216208338737 + }, + "field_id": 120003, + "location_type": "exact" + }, + { + "label": "Purchase Order", + "spans": [ + { + "start": 763, + "end": 2092, + "page_num": 1 + } + ], + "span_id": "110240:c:13462:idx:1", + "confidence": { + "Invoice": 0.02451115846633911, + "Purchase Order": 0.9754888415336609 + }, + "field_id": 120003, + "location_type": "exact" + } + ], + "3574": [ + { + "label": "Vendor Name", + "spans": [ + { + "start": 0, + "end": 13, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:0", + "confidence": { + "Invoice Date": 3.6146026616279414e-08, + "Invoice Number": 3.8589117679066476e-08, + "Invoice Subtotal": 3.889412170110518e-08, + "Invoice Tax": 4.239158712948665e-08, + "Invoice Total": 3.422988470447308e-08, + "Line Item Name": 1.3081233873890596e-08, + "Line Item Quantity": 8.60381845768643e-08, + "Line Item Total": 6.763497140127583e-08, + "Vendor Name": 0.9999996423721313 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120004, + "location_type": "exact", + "text": "HubSpot, Inc.", + "groupings": [], + "normalized": { + "text": "HubSpot, Inc.", + "start": 0, + "end": 13, + "structured": null, + "formatted": "HubSpot, Inc.", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "HubSpot, Inc.", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Date", + "spans": [ + { + "start": 125, + "end": 135, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:1", + "confidence": { + "Invoice Date": 0.9999996423721313, + "Invoice Number": 3.9750069902311225e-08, + "Invoice Subtotal": 2.417914757302242e-08, + "Invoice Tax": 5.956452042710225e-08, + "Invoice Total": 3.552380789528797e-08, + "Line Item Name": 1.1640994301842511e-07, + "Line Item Quantity": 1.1412480205308384e-07, + "Line Item Total": 4.041442380753324e-08, + "Vendor Name": 1.429154661281018e-08 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120005, + "location_type": "exact", + "text": "06/21/2016", + "groupings": [], + "normalized": { + "text": "06/21/2016", + "start": 125, + "end": 135, + "structured": null, + "formatted": "06/21/2016", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "06/21/2016", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Number", + "spans": [ + { + "start": 146, + "end": 154, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:2", + "confidence": { + "Invoice Date": 0.0002550994395278394, + "Invoice Number": 0.992819607257843, + "Invoice Subtotal": 0.0010766817722469568, + "Invoice Tax": 0.00023265804338734597, + "Invoice Total": 0.0006237671477720141, + "Line Item Name": 0.00019498230540193617, + "Line Item Quantity": 0.0003695993509609252, + "Line Item Total": 0.0003024775942321867, + "Vendor Name": 0.000312569725792855 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120006, + "location_type": "exact", + "text": "8\n392757", + "groupings": [], + "normalized": { + "text": "8\n392757", + "start": 146, + "end": 154, + "structured": null, + "formatted": "8\n392757", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "8\n392757", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Name", + "spans": [ + { + "start": 341, + "end": 408, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:3", + "confidence": { + "Invoice Date": 6.895991333522034e-08, + "Invoice Number": 1.744497701849923e-08, + "Invoice Subtotal": 8.776123827658466e-09, + "Invoice Tax": 8.312886023986721e-08, + "Invoice Total": 1.5671744790779485e-08, + "Line Item Name": 0.9999997019767761, + "Line Item Quantity": 7.306061089451532e-09, + "Line Item Total": 5.500393029933548e-09, + "Vendor Name": 6.038806077413028e-08 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120007, + "location_type": "exact", + "text": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "3574:Invoice Line Item" + } + ], + "normalized": { + "text": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "start": 341, + "end": 408, + "structured": null, + "formatted": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "HubSpot Enterprise\nIncluded Contacts\nEnterprise Contacts - Per 1000", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 477, + "end": 478, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:4", + "confidence": { + "Invoice Date": 6.305717192844895e-08, + "Invoice Number": 2.951464495026812e-08, + "Invoice Subtotal": 5.552562143407158e-08, + "Invoice Tax": 6.30340863949641e-08, + "Invoice Total": 4.532975239612824e-08, + "Line Item Name": 3.034763551568176e-08, + "Line Item Quantity": 0.9999996423721313, + "Line Item Total": 8.787813499111508e-08, + "Vendor Name": 7.798676371351121e-09 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120008, + "location_type": "exact", + "text": "1", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "3574:Invoice Line Item" + } + ], + "normalized": { + "text": "1", + "start": 477, + "end": 478, + "structured": null, + "formatted": "1", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "1", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 479, + "end": 488, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:5", + "confidence": { + "Invoice Date": 2.2266911869905925e-08, + "Invoice Number": 4.878935921937e-09, + "Invoice Subtotal": 3.757695665740357e-08, + "Invoice Tax": 5.316588502779496e-09, + "Invoice Total": 1.708772678910009e-08, + "Line Item Name": 3.2934242000237646e-08, + "Line Item Quantity": 6.672231478432877e-08, + "Line Item Total": 0.9999998211860657, + "Vendor Name": 1.857583420417086e-08 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120009, + "location_type": "exact", + "text": "$1,200.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 4, + "group_id": "3574:Invoice Line Item" + } + ], + "normalized": { + "text": "$1,200.00", + "start": 479, + "end": 488, + "structured": null, + "formatted": "$1,200.00", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "$1,200.00", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 500, + "end": 502, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:6", + "confidence": { + "Invoice Date": 1.1348699047175614e-07, + "Invoice Number": 2.1129238803041517e-08, + "Invoice Subtotal": 6.841449362582352e-08, + "Invoice Tax": 7.187303197042638e-08, + "Invoice Total": 3.188567987422175e-08, + "Line Item Name": 2.4465508730031615e-08, + "Line Item Quantity": 0.9999995231628418, + "Line Item Total": 6.090856885521134e-08, + "Vendor Name": 6.531167606738109e-09 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120008, + "location_type": "exact", + "text": "10", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 5, + "group_id": "3574:Invoice Line Item" + } + ], + "normalized": { + "text": "10", + "start": 500, + "end": 502, + "structured": null, + "formatted": "10", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "10", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 503, + "end": 508, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:7", + "confidence": { + "Invoice Date": 1.7873695412617963e-08, + "Invoice Number": 4.5575752061211006e-09, + "Invoice Subtotal": 2.331604065375359e-08, + "Invoice Tax": 4.713917700627235e-09, + "Invoice Total": 1.3964713829750508e-08, + "Line Item Name": 2.4581851221228135e-08, + "Line Item Quantity": 6.390584417204082e-08, + "Line Item Total": 0.9999998807907104, + "Vendor Name": 1.3635374607190442e-08 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120009, + "location_type": "exact", + "text": "$0.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 5, + "group_id": "3574:Invoice Line Item" + } + ], + "normalized": { + "text": "$0.00", + "start": 503, + "end": 508, + "structured": null, + "formatted": "$0.00", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "$0.00", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 520, + "end": 521, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:8", + "confidence": { + "Invoice Date": 1.0640314229704018e-07, + "Invoice Number": 1.822121831196455e-08, + "Invoice Subtotal": 8.582147614788482e-08, + "Invoice Tax": 6.84228425029687e-08, + "Invoice Total": 3.249473223831956e-08, + "Line Item Name": 2.112150276900593e-08, + "Line Item Quantity": 0.9999995231628418, + "Line Item Total": 9.162452130340171e-08, + "Vendor Name": 5.564623872800212e-09 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120008, + "location_type": "exact", + "text": "5", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 6, + "group_id": "3574:Invoice Line Item" + } + ], + "normalized": { + "text": "5", + "start": 520, + "end": 521, + "structured": null, + "formatted": "5", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "5", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 522, + "end": 528, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:9", + "confidence": { + "Invoice Date": 2.179357139198146e-08, + "Invoice Number": 5.6419255933803925e-09, + "Invoice Subtotal": 4.186190238897325e-08, + "Invoice Tax": 5.668894242916167e-09, + "Invoice Total": 1.6812524705756005e-08, + "Line Item Name": 2.9315362581883164e-08, + "Line Item Quantity": 6.345974412624855e-08, + "Line Item Total": 0.9999997615814209, + "Vendor Name": 1.6366984212368152e-08 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120009, + "location_type": "exact", + "text": "$25.00", + "groupings": [ + { + "group_name": "Invoice Line Item", + "group_index": 6, + "group_id": "3574:Invoice Line Item" + } + ], + "normalized": { + "text": "$25.00", + "start": 522, + "end": 528, + "structured": null, + "formatted": "$25.00", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "$25.00", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Subtotal", + "spans": [ + { + "start": 538, + "end": 547, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:10", + "confidence": { + "Invoice Date": 8.69812666337566e-09, + "Invoice Number": 2.904504547984743e-08, + "Invoice Subtotal": 1.0, + "Invoice Tax": 4.26998845171056e-08, + "Invoice Total": 4.957347865541806e-09, + "Line Item Name": 4.066702974370173e-09, + "Line Item Quantity": 1.3058305547986038e-08, + "Line Item Total": 3.4816959981753826e-08, + "Vendor Name": 7.887378750126572e-09 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120010, + "location_type": "exact", + "text": "$1,225.00", + "groupings": [], + "normalized": { + "text": "$1,225.00", + "start": 538, + "end": 547, + "structured": null, + "formatted": "$1,225.00", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "$1,225.00", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Tax", + "spans": [ + { + "start": 558, + "end": 564, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:11", + "confidence": { + "Invoice Date": 1.6267856040030892e-07, + "Invoice Number": 5.7655814345025647e-08, + "Invoice Subtotal": 1.1986506365246896e-07, + "Invoice Tax": 0.9999831914901733, + "Invoice Total": 1.5516456187469885e-05, + "Line Item Name": 2.0342804418760352e-07, + "Line Item Quantity": 5.66296762372076e-07, + "Line Item Total": 8.053704902977188e-08, + "Vendor Name": 3.252419489285785e-08 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120011, + "location_type": "exact", + "text": "$76.56", + "groupings": [], + "normalized": { + "text": "$76.56", + "start": 558, + "end": 564, + "structured": null, + "formatted": "$76.56", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "$76.56", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Invoice Total", + "spans": [ + { + "start": 571, + "end": 580, + "page_num": 0 + } + ], + "span_id": "110240:c:13464:idx:12", + "confidence": { + "Invoice Date": 3.2461382915016657e-08, + "Invoice Number": 4.2989572790474995e-08, + "Invoice Subtotal": 2.2316484660223068e-08, + "Invoice Tax": 1.686599837569247e-08, + "Invoice Total": 0.9999997019767761, + "Line Item Name": 5.848810769037982e-09, + "Line Item Quantity": 3.5068804749016635e-08, + "Line Item Total": 8.239260296249995e-08, + "Vendor Name": 2.6120469343027253e-08 + }, + "ctx_id": "110240:c:13462:idx:0", + "field_id": 120012, + "location_type": "exact", + "text": "$1,301.56", + "groupings": [], + "normalized": { + "text": "$1,301.56", + "start": 571, + "end": 580, + "structured": null, + "formatted": "$1,301.56", + "status": "INFO", + "comparison_type": "string", + "comparison_value": "$1,301.56", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": "No match found", + "validation_status": "INFO" + } + ] + } + } + ] + } + }, + "component_results": { + "ORIGINAL": {} + }, + "rejected": { + "models": { + "3575": [], + "3573": [], + "3574": [] + }, + "components": {} + } + } + ], + "reviews": {}, + "errored_files": {} +} diff --git a/tests/data/results/genai_classify_extract_summarize.json b/tests/data/results/genai_classify_extract_summarize.json new file mode 100644 index 0000000..5260f11 --- /dev/null +++ b/tests/data/results/genai_classify_extract_summarize.json @@ -0,0 +1,1053 @@ +{ + "file_version": 3, + "submission_id": 98233, + "modelgroup_metadata": { + "6240": { + "id": 6240, + "task_type": "genai_classification", + "name": "GenAI Accounting Classification", + "selected_model": { + "id": 10730, + "model_type": "genai" + } + }, + "6241": { + "id": 6241, + "task_type": "genai_annotation", + "name": "GenAI Invoice Extraction", + "selected_model": { + "id": 10733, + "model_type": "genai" + } + }, + "6242": { + "id": 6242, + "task_type": "genai_annotation", + "name": "GenAI Purchase Order Extraction", + "selected_model": { + "id": 10731, + "model_type": "genai" + } + }, + "6258": { + "id": 6258, + "task_type": "summarization", + "name": "GenAI Accounting Summarization", + "selected_model": { + "id": 10735, + "model_type": "summarization" + } + } + }, + "component_metadata": { + "18025": { + "id": 18025, + "name": null, + "component_type": "input_ocr_extraction", + "task_type": null + }, + "18026": { + "id": 18026, + "name": null, + "component_type": "output_json_formatter", + "task_type": null + }, + "18029": { + "id": 18029, + "name": "Standard Output", + "component_type": "default_output", + "task_type": null + }, + "18032": { + "id": 18032, + "name": "Review", + "component_type": "review", + "task_type": null + }, + "20105": { + "id": 20105, + "name": "GenAI Document Classification", + "component_type": "model_group", + "task_type": "genai_classification" + }, + "20106": { + "id": 20106, + "name": "Agent Link", + "component_type": "link_classification_model", + "task_type": "genai_classification" + }, + "20107": { + "id": 20107, + "name": "GenAI Document Extraction", + "component_type": "model_group", + "task_type": "genai_annotation" + }, + "20108": { + "id": 20108, + "name": "GenAI Document Extraction", + "component_type": "model_group", + "task_type": "genai_annotation" + }, + "20195": { + "id": 20195, + "name": "Summarization", + "component_type": "model_group", + "task_type": "summarization" + } + }, + "submission_results": [ + { + "submissionfile_id": 96495, + "etl_output": "indico-file:///storage/submission/5216/98233/96495/etl_output.json", + "input_filename": "invoice.pdf", + "input_filepath": "indico-file:///storage/submission/5216/98233/96495.pdf", + "input_filesize": 426157, + "model_results": { + "ORIGINAL": { + "6241": [ + { + "label": "Line Item Description", + "spans": [ + { + "start": 340, + "end": 358, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:0", + "confidence": { + "Line Item Description": 0.9771312368280062 + }, + "field_id": 590168, + "location_type": "exact", + "text": "HubSpot Enterprise", + "groupings": [ + { + "group_name": "LineItems", + "group_index": 0, + "group_id": "20107:LineItems" + } + ], + "normalized": { + "text": "HubSpot Enterprise", + "start": 340, + "end": 358, + "structured": null, + "formatted": "HubSpot Enterprise", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "HubSpot Enterprise", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 476, + "end": 477, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:1", + "confidence": { + "Line Item Quantity": 0.20713065009297202 + }, + "field_id": 894563, + "location_type": "exact", + "text": "1", + "groupings": [ + { + "group_name": "LineItems", + "group_index": 0, + "group_id": "20107:LineItems" + } + ], + "normalized": { + "text": "1", + "start": 476, + "end": 477, + "structured": null, + "formatted": "1", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "1", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Description", + "spans": [ + { + "start": 359, + "end": 376, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:3", + "confidence": { + "Line Item Description": 0.2530567860528453 + }, + "field_id": 590168, + "location_type": "exact", + "text": "Included Contacts", + "groupings": [ + { + "group_name": "LineItems", + "group_index": 1, + "group_id": "20107:LineItems" + } + ], + "normalized": { + "text": "Included Contacts", + "start": 359, + "end": 376, + "structured": null, + "formatted": "Included Contacts", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Included Contacts", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 499, + "end": 501, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:4", + "confidence": { + "Line Item Quantity": 0.2691964289030739 + }, + "field_id": 894563, + "location_type": "exact", + "text": "10", + "groupings": [ + { + "group_name": "LineItems", + "group_index": 1, + "group_id": "20107:LineItems" + } + ], + "normalized": { + "text": "10", + "start": 499, + "end": 501, + "structured": null, + "formatted": "10", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "10", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Description", + "spans": [ + { + "start": 377, + "end": 407, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:6", + "confidence": { + "Line Item Description": 0.8422187257019328 + }, + "field_id": 590168, + "location_type": "exact", + "text": "Enterprise Contacts - Per 1000", + "groupings": [ + { + "group_name": "LineItems", + "group_index": 2, + "group_id": "20107:LineItems" + } + ], + "normalized": { + "text": "Enterprise Contacts - Per 1000", + "start": 377, + "end": 407, + "structured": null, + "formatted": "Enterprise Contacts - Per 1000", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "Enterprise Contacts - Per 1000", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Quantity", + "spans": [ + { + "start": 519, + "end": 520, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:7", + "confidence": { + "Line Item Quantity": 0.36009207957974565 + }, + "field_id": 894563, + "location_type": "exact", + "text": "5", + "groupings": [ + { + "group_name": "LineItems", + "group_index": 2, + "group_id": "20107:LineItems" + } + ], + "normalized": { + "text": "5", + "start": 519, + "end": 520, + "structured": null, + "formatted": "5", + "status": "SUCCESS", + "comparison_type": "string", + "comparison_value": "5", + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 522, + "end": 527, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:8", + "confidence": { + "Line Item Total": 0.7787655465616223 + }, + "field_id": 894564, + "location_type": "exact", + "text": "$25.00", + "groupings": [ + { + "group_name": "LineItems", + "group_index": 2, + "group_id": "20107:LineItems" + } + ], + "normalized": { + "text": "$25.00", + "start": 522, + "end": 528, + "structured": { + "currency": "USD", + "amount": 25.0, + "currency_symbol": "$" + }, + "formatted": "$25.00", + "status": "SUCCESS", + "comparison_type": "number", + "comparison_value": 25.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": null, + "validation_status": "SUCCESS" + } + ] + } + } + ], + "6258": [ + { + "field_id": 894565, + "confidence": { + "Accounting Summary": 1.0 + }, + "label": "Accounting Summary", + "text": "Vendor: HubSpot, Inc. [1] \nDate: 06/21/2016 [1] \nNumber: 579266 [1] \nTotal: $1,301.56 [1] \n\nBilling Address: \n186 SOUTH STREET \nSUITE 400 \nBoston MA 02111 \nUS [1] \n\nLine Items: \n- HubSpot Enterprise (1): $1,200.00 [1] \n- Included Contacts (10): $0.00 [1] \n- Enterprise Contacts - Per 1000 (5): $25.00 [1] ", + "citations": [ + { + "document": { + "start": 0, + "end": 758, + "page_num": 0 + }, + "response": { + "start": 22, + "end": 25 + } + }, + { + "document": { + "start": 0, + "end": 758, + "page_num": 0 + }, + "response": { + "start": 45, + "end": 48 + } + }, + { + "document": { + "start": 0, + "end": 758, + "page_num": 0 + }, + "response": { + "start": 66, + "end": 69 + } + }, + { + "document": { + "start": 0, + "end": 758, + "page_num": 0 + }, + "response": { + "start": 89, + "end": 92 + } + }, + { + "document": { + "start": 0, + "end": 758, + "page_num": 0 + }, + "response": { + "start": 167, + "end": 170 + } + }, + { + "document": { + "start": 0, + "end": 758, + "page_num": 0 + }, + "response": { + "start": 224, + "end": 227 + } + }, + { + "document": { + "start": 0, + "end": 758, + "page_num": 0 + }, + "response": { + "start": 262, + "end": 265 + } + }, + { + "document": { + "start": 0, + "end": 758, + "page_num": 0 + }, + "response": { + "start": 313, + "end": 316 + } + } + ] + } + ], + "6240": [ + { + "field_id": 590167, + "confidence": { + "Invoice": 0.9997535776578542 + }, + "label": "Invoice" + } + ] + }, + "FINAL": { + "6241": [ + { + "text": "HubSpot Enterprise", + "label": "Line Item Description", + "spans": [ + { + "end": 358, + "start": 340, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:0", + "field_id": 590168, + "page_num": 0, + "groupings": [ + { + "group_id": "20107:LineItems", + "group_name": "LineItems", + "group_index": 1 + } + ], + "confidence": { + "Line Item Description": 0.9771312368280062 + }, + "normalized": { + "end": 358, + "text": "HubSpot Enterprise", + "start": 340, + "status": "SUCCESS", + "formatted": "HubSpot Enterprise", + "structured": {}, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "HubSpot Enterprise" + }, + "location_type": "exact" + }, + { + "text": "Included Contacts", + "label": "Line Item Description", + "spans": [ + { + "end": 376, + "start": 359, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:3", + "field_id": 590168, + "page_num": 0, + "groupings": [ + { + "group_id": "20107:LineItems", + "group_name": "LineItems", + "group_index": 2 + } + ], + "confidence": { + "Line Item Description": 0.2530567860528453 + }, + "normalized": { + "end": 376, + "text": "Included Contacts", + "start": 359, + "status": "SUCCESS", + "formatted": "Included Contacts", + "structured": {}, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "Included Contacts" + }, + "location_type": "exact" + }, + { + "text": "Enterprise Contacts - Per 1000", + "label": "Line Item Description", + "spans": [ + { + "end": 407, + "start": 377, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:6", + "field_id": 590168, + "page_num": 0, + "groupings": [ + { + "group_id": "20107:LineItems", + "group_name": "LineItems", + "group_index": 3 + } + ], + "confidence": { + "Line Item Description": 0.8422187257019328 + }, + "normalized": { + "end": 407, + "text": "Enterprise Contacts - Per 1000", + "start": 377, + "status": "SUCCESS", + "formatted": "Enterprise Contacts - Per 1000", + "structured": {}, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "Enterprise Contacts - Per 1000" + }, + "location_type": "exact" + }, + { + "text": "1", + "label": "Line Item Quantity", + "spans": [ + { + "end": 477, + "start": 476, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:1", + "field_id": 894563, + "page_num": 0, + "groupings": [ + { + "group_id": "20107:LineItems", + "group_name": "LineItems", + "group_index": 1 + } + ], + "confidence": { + "Line Item Quantity": 0.20713065009297202 + }, + "normalized": { + "end": 477, + "text": "1", + "start": 476, + "status": "SUCCESS", + "formatted": "1", + "structured": {}, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "1" + }, + "location_type": "exact" + }, + { + "text": "$1,200.00", + "label": "Line Item Total", + "spans": [ + { + "end": 487, + "start": 478, + "page_num": 1 + } + ], + "field_id": 894564, + "page_num": 0, + "groupings": [ + { + "group_id": "20107:LineItems", + "group_name": "LineItems", + "group_index": 1 + } + ], + "normalized": { + "end": 487, + "text": "$1,200.00", + "start": 478, + "status": "SUCCESS", + "formatted": "$1,200.00", + "structured": { + "amount": 1200, + "currency": "USD", + "currency_symbol": "$" + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + }, + { + "error_message": null, + "validation_type": "MIN_CONFIDENCE", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "$1,200.00" + } + }, + { + "text": "10", + "label": "Line Item Quantity", + "spans": [ + { + "end": 501, + "start": 499, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:4", + "field_id": 894563, + "page_num": 0, + "groupings": [ + { + "group_id": "20107:LineItems", + "group_name": "LineItems", + "group_index": 2 + } + ], + "confidence": { + "Line Item Quantity": 0.2691964289030739 + }, + "normalized": { + "end": 501, + "text": "10", + "start": 499, + "status": "SUCCESS", + "formatted": "10", + "structured": {}, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "10" + }, + "location_type": "exact" + }, + { + "text": "5", + "label": "Line Item Quantity", + "spans": [ + { + "end": 520, + "start": 519, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:7", + "field_id": 894563, + "page_num": 0, + "groupings": [ + { + "group_id": "20107:LineItems", + "group_name": "LineItems", + "group_index": 3 + } + ], + "confidence": { + "Line Item Quantity": 0.36009207957974565 + }, + "normalized": { + "end": 520, + "text": "5", + "start": 519, + "status": "SUCCESS", + "formatted": "5", + "structured": {}, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "5" + }, + "location_type": "exact" + }, + { + "text": "$25.00", + "label": "Line Item Total", + "spans": [ + { + "end": 527, + "start": 522, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:8", + "field_id": 894564, + "page_num": 0, + "groupings": [ + { + "group_id": "20107:LineItems", + "group_name": "LineItems", + "group_index": 3 + } + ], + "confidence": { + "Line Item Total": 0.7787655465616223 + }, + "normalized": { + "end": 528, + "text": "$25.00", + "start": 522, + "status": "SUCCESS", + "formatted": "$25.00", + "structured": { + "amount": 25, + "currency": "USD", + "currencySymbol": "$" + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + }, + { + "error_message": null, + "validation_type": "MIN_CONFIDENCE", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "number", + "comparison_value": 25 + }, + "location_type": "exact" + }, + { + "text": "$0.00", + "label": "Line Item Total", + "field_id": 894564, + "page_num": 0, + "groupings": [ + { + "group_id": "20107:LineItems", + "group_name": "LineItems", + "group_index": 2 + } + ], + "normalized": { + "end": null, + "text": "$0.00", + "start": null, + "status": "SUCCESS", + "formatted": "$0.00", + "structured": { + "amount": 0, + "currency": "USD", + "currency_symbol": "$" + }, + "validation": [ + { + "error_message": null, + "validation_type": "TYPE_CONVERSION", + "validation_status": "SUCCESS" + }, + { + "error_message": null, + "validation_type": "MIN_CONFIDENCE", + "validation_status": "SUCCESS" + } + ], + "comparison_type": "string", + "comparison_value": "$0.00" + } + } + ], + "6258": [ + { + "text": "Number: 579266\nDate: 06/21/2016\nTotal: $1,301.56\nVendor: HubSpot, Inc.\n\nBilling Address: \n186 SOUTH STREET \nSUITE 400 \nBoston MA 02111 \nUS\n\nLine Items: \n- HubSpot Enterprise (x1): $1,200.00\n- Included Contacts (x10): $0.00\n- Enterprise Contacts - Per 1000 (x5): $25.00", + "label": "Accounting Summary", + "field_id": 894565, + "page_num": 0, + "confidence": { + "Accounting Summary": 1 + } + } + ], + "6240": [ + { + "field_id": 590167, + "confidence": { + "Invoice": 0.9997535776578542 + }, + "label": "Invoice" + } + ] + } + }, + "component_results": { + "ORIGINAL": {}, + "FINAL": {} + }, + "rejected": { + "models": { + "6241": [ + { + "label": "Line Item Total", + "spans": [ + { + "start": 479, + "end": 487, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:2", + "confidence": { + "Line Item Total": 0.043654061181374125 + }, + "field_id": 894564, + "location_type": "exact", + "text": "$1,200.00", + "groupings": [ + { + "group_name": "LineItems", + "group_index": 0, + "group_id": "20107:LineItems" + } + ], + "normalized": { + "text": "$1,200.00", + "start": 479, + "end": 488, + "structured": { + "currency": "USD", + "amount": 1200.0, + "currency_symbol": "$" + }, + "formatted": "$1,200.00", + "status": "REJECTION", + "comparison_type": "number", + "comparison_value": 1200.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": "Confidence value is below minimum of 0.5", + "validation_status": "REJECTION" + } + ] + } + }, + { + "label": "Line Item Total", + "spans": [ + { + "start": 503, + "end": 507, + "page_num": 0 + } + ], + "span_id": "96495:c:20107:idx:5", + "confidence": { + "Line Item Total": 0.005000358430264759 + }, + "field_id": 894564, + "location_type": "exact", + "text": "$0.00", + "groupings": [ + { + "group_name": "LineItems", + "group_index": 1, + "group_id": "20107:LineItems" + } + ], + "normalized": { + "text": "$0.00", + "start": 503, + "end": 508, + "structured": { + "currency": "USD", + "amount": 0.0, + "currency_symbol": "$" + }, + "formatted": "$0.00", + "status": "REJECTION", + "comparison_type": "number", + "comparison_value": 0.0, + "validation": [ + { + "validation_type": "TYPE_CONVERSION", + "error_message": null, + "validation_status": "SUCCESS" + }, + { + "validation_type": "MIN_CONFIDENCE", + "error_message": "Confidence value is below minimum of 0.5", + "validation_status": "REJECTION" + } + ] + } + } + ], + "6258": [], + "6240": [] + }, + "components": {} + } + } + ], + "reviews": { + "69744": { + "review_id": 69744, + "reviewer_id": 422, + "review_notes": null, + "review_rejected": false, + "review_type": "manual" + } + }, + "errored_files": {} +} diff --git a/tests/results/test_files.py b/tests/results/test_files.py index 8a1b4c2..6257fb7 100644 --- a/tests/results/test_files.py +++ b/tests/results/test_files.py @@ -3,6 +3,7 @@ import pytest from indico_toolkit import results +from indico_toolkit.results import ResultError data_folder = Path(__file__).parent.parent / "data" / "results" @@ -12,3 +13,18 @@ def test_file_load(result_file: Path) -> None: result = results.load(result_file, reader=Path.read_text) result.pre_review.to_changes(result) assert result.version + + +@pytest.mark.parametrize("result_file", list(data_folder.glob("*.json"))) +async def test_file_load_async(result_file: Path) -> None: + async def path_read_text_async(path: Path) -> str: + return path.read_text() + + result = await results.load_async(result_file, reader=path_read_text_async) + result.pre_review.to_changes(result) + assert result.version + + +def test_usupported_version() -> None: + with pytest.raises(ResultError): + results.load({"file_version": 1}) diff --git a/tests/results/test_predictionlist.py b/tests/results/test_predictionlist.py index a0449c7..f912b7a 100644 --- a/tests/results/test_predictionlist.py +++ b/tests/results/test_predictionlist.py @@ -129,6 +129,9 @@ def test_extractions(predictions: "PredictionList[Prediction]") -> None: def test_slice_is_prediction_list(predictions: "PredictionList[Prediction]") -> None: + prediction = predictions[0] + assert isinstance(prediction, Prediction) + predictions = predictions[1:3] assert len(predictions) == 2 assert isinstance(predictions, PredictionList) @@ -137,13 +140,20 @@ def test_slice_is_prediction_list(predictions: "PredictionList[Prediction]") -> def test_groupby( predictions: "PredictionList[Prediction]", group_alpha: Group, group_bravo: Group ) -> None: - first_name, last_name = predictions.extractions + first_name, last_name = predictions.document_extractions + predictions_by_groups = predictions.extractions.groupby(attrgetter("groups")) assert predictions_by_groups == { frozenset({group_alpha}): [first_name], frozenset({group_alpha, group_bravo}): [last_name], } + predictions_by_spans = predictions.extractions.groupby(attrgetter("spans")) + assert predictions_by_spans == { + tuple(first_name.spans): [first_name], + tuple(last_name.spans): [last_name], + } + def test_groupbyiter( predictions: "PredictionList[Prediction]", group_alpha: Group, group_bravo: Group diff --git a/tests/results/test_predictions.py b/tests/results/test_predictions.py index 484f660..33ad9e6 100644 --- a/tests/results/test_predictions.py +++ b/tests/results/test_predictions.py @@ -1,56 +1,310 @@ -from indico_toolkit.results import Extraction, Prediction +from dataclasses import replace +import pytest -def test_confidence() -> None: - prediction = Prediction( - document=None, # type: ignore[arg-type] - task=None, # type: ignore[arg-type] - review=None, - label="Label", - confidences={"Label": 0.5}, - extras=None, # type: ignore[arg-type] +from indico_toolkit.results import ( + NULL_CITATION, + NULL_SPAN, + DocumentExtraction, + Extraction, + FormExtraction, + FormExtractionType, + Group, + Prediction, + Summarization, + Unbundling, +) + + +@pytest.fixture +def document_extraction() -> DocumentExtraction: + return DocumentExtraction.from_dict( + None, # type: ignore[arg-type] + None, # type: ignore[arg-type] + None, + { + "label": "Agency", + "confidence": {"Agency": 0.99}, + "text": "ORIGINAL_OCR", + "spans": [{"page_num": 0, "start": 35, "end": 61}], + "groupings": [], + "normalized": { + "text": "ORIGINAL_GENAI", + "formatted": "NORMALIZED", + "structured": None, + }, + }, ) - assert prediction.confidence == 0.5 - prediction.confidence = 1.0 - assert prediction.confidence == 1.0 - - -def test_accepted() -> None: - prediction = Extraction( - document=None, # type: ignore[arg-type] - task=None, # type: ignore[arg-type] - review=None, - label="Label", - confidences={"Label": 0.5}, - extras=None, # type: ignore[arg-type] - text="Value", - accepted=False, - rejected=False, + +@pytest.fixture +def form_extraction() -> FormExtraction: + return FormExtraction.from_dict( + None, # type: ignore[arg-type] + None, # type: ignore[arg-type] + None, + { + "type": "text", + "label": "Agency", + "confidence": {"Agency": 1.0}, + "text": "ORIGINAL_OCR", + "page_num": 0, + "top": 201, + "left": 73, + "right": 1266, + "bottom": 448, + "normalized": { + "text": "ORIGINAL_GENAI", + "formatted": "NORMALIZED", + "structured": None, + }, + }, + ) + + +@pytest.fixture +def summarization() -> Summarization: + return Summarization.from_dict( + None, # type: ignore[arg-type] + None, # type: ignore[arg-type] + None, + { + "label": "Accounting Summary", + "confidence": {"Accounting Summary": 1.0}, + "text": """Vendor: HubSpot, Inc. +Date: 06/21/2016 +Number: 579266 +Total: $1,301.56 +Billing Address: +186 SOUTH STREET +SUITE 400 +Boston MA 02111 +US +Line Items: +- HubSpot Enterprise (1): $1,200.00 +- Included Contacts (10): $0.00 +- Enterprise Contacts - Per 1000 (5): $25.00 [1]""", + "citations": [ + { + "document": {"page_num": 0, "start": 0, "end": 758}, + "response": {"start": 285, "end": 288}, + } + ], + }, ) - prediction.reject() - prediction.accept() - assert prediction.accepted - prediction.unaccept() - assert not prediction.accepted - - -def test_rejected() -> None: - prediction = Extraction( - document=None, # type: ignore[arg-type] - task=None, # type: ignore[arg-type] - review=None, - label="Label", - confidences={"Label": 0.5}, - extras=None, # type: ignore[arg-type] - text="Value", - accepted=False, - rejected=False, + +@pytest.fixture +def unbundling() -> Unbundling: + return Unbundling.from_dict( + None, # type: ignore[arg-type] + None, # type: ignore[arg-type] + None, + { + "label": "Invoice", + "confidence": { + "Invoice": 0.975, + "Purchase Order": 0.0245, + }, + "spans": [{"page_num": 0, "start": 0, "end": 762}], + }, ) - prediction.accept() - prediction.reject() - assert prediction.rejected - prediction.unreject() - assert not prediction.rejected + +def test_next_group() -> None: + group = Group(id=123, name="Linked Label", index=0) + next_group = Group(id=123, name="Linked Label", index=1) + + assert next(group) == next_group + + +def test_page( + document_extraction: DocumentExtraction, + form_extraction: FormExtraction, + summarization: Summarization, + unbundling: Unbundling, +) -> None: + assert document_extraction.page == 0 + assert form_extraction.page == 0 + assert summarization.page == 0 + assert unbundling.pages == (0,) + + +@pytest.mark.parametrize( + "prediction", + ["document_extraction", "form_extraction", "summarization", "unbundling"], +) +def test_confidence(prediction: Prediction, request: object) -> None: + prediction = request.getfixturevalue(prediction) # type: ignore[attr-defined] + prediction.confidence = 0.5 + assert prediction.confidence == 0.5 + assert prediction.to_dict()["confidence"][prediction.label] == 0.5 + + +@pytest.mark.parametrize( + "extraction", + ["document_extraction", "form_extraction", "summarization"], +) +def test_accept(extraction: Extraction, request: object) -> None: + extraction = request.getfixturevalue(extraction) # type: ignore[attr-defined] + changes = extraction.to_dict() + assert "accepted" not in changes + assert "rejected" not in changes + + extraction.reject() + extraction.accept() + assert extraction.accepted + assert not extraction.rejected + + changes = extraction.to_dict() + assert "accepted" in changes + assert "rejected" not in changes + assert changes["accepted"] + + extraction.unaccept() + assert not extraction.accepted + + +@pytest.mark.parametrize( + "extraction", + ["document_extraction", "form_extraction", "summarization"], +) +def test_reject(extraction: Extraction, request: object) -> None: + extraction = request.getfixturevalue(extraction) # type: ignore[attr-defined] + changes = extraction.to_dict() + assert "accepted" not in changes + assert "rejected" not in changes + + extraction.accept() + extraction.reject() + assert extraction.rejected + assert not extraction.accepted + + changes = extraction.to_dict() + assert "rejected" in changes + assert "accepted" not in changes + assert changes["rejected"] + + extraction.unreject() + assert not extraction.rejected + + +@pytest.mark.parametrize( + "extraction", + ["document_extraction", "form_extraction"], +) +def test_text(extraction: Extraction, request: object) -> None: + extraction = request.getfixturevalue(extraction) # type: ignore[attr-defined] + changes = extraction.to_dict() + assert changes["text"] == "ORIGINAL_OCR" + assert changes["normalized"]["text"] == "ORIGINAL_GENAI" + assert changes["normalized"]["formatted"] == "NORMALIZED" + + extraction.text = "UPDATED" + changes = extraction.to_dict() + assert changes["text"] == "UPDATED" + assert changes["normalized"]["text"] == "UPDATED" + assert changes["normalized"]["formatted"] == "UPDATED" + + +def test_text_checkbox(form_extraction: FormExtraction) -> None: + form_extraction.type = FormExtractionType.CHECKBOX + form_extraction.checked = False + changes = form_extraction.to_dict() + assert changes["text"] == "Unchecked" + assert changes["normalized"]["text"] == "Unchecked" + assert changes["normalized"]["formatted"] == "Unchecked" + assert not changes["normalized"]["structured"]["checked"] + + form_extraction.checked = True + changes = form_extraction.to_dict() + assert changes["text"] == "Checked" + assert changes["normalized"]["text"] == "Checked" + assert changes["normalized"]["formatted"] == "Checked" + assert changes["normalized"]["structured"]["checked"] + + +def test_text_signature(form_extraction: FormExtraction) -> None: + form_extraction.type = FormExtractionType.SIGNATURE + form_extraction.signed = False + changes = form_extraction.to_dict() + assert changes["text"] == "ORIGINAL_OCR" + assert changes["normalized"]["text"] == "ORIGINAL_GENAI" + assert changes["normalized"]["formatted"] == "Unsigned" + assert not changes["normalized"]["structured"]["signed"] + + form_extraction.signed = True + changes = form_extraction.to_dict() + assert changes["text"] == "ORIGINAL_OCR" + assert changes["normalized"]["text"] == "ORIGINAL_GENAI" + assert changes["normalized"]["formatted"] == "Signed" + assert changes["normalized"]["structured"]["signed"] + + +def test_spans(document_extraction: DocumentExtraction) -> None: + old_span = document_extraction.span + new_span = replace(old_span, page=1) + + document_extraction.spans.append(new_span) + assert document_extraction.span == old_span + assert document_extraction.spans == [old_span, new_span] + assert len(document_extraction.to_dict()["spans"]) == 2 + + document_extraction.span = new_span + assert document_extraction.span == new_span + assert document_extraction.spans == [new_span] + assert len(document_extraction.to_dict()["spans"]) == 1 + + document_extraction.spans = [] + assert not document_extraction.span + assert document_extraction.span == NULL_SPAN + assert len(document_extraction.to_dict()["spans"]) == 0 + + document_extraction.span = NULL_SPAN + assert not document_extraction.spans + assert not document_extraction.span + assert document_extraction.span == NULL_SPAN + assert len(document_extraction.to_dict()["spans"]) == 0 + + +def test_citations(summarization: Summarization) -> None: + old_citation = summarization.citation + old_span = summarization.span + assert old_citation.span == old_span + + new_span = replace(old_span, page=1) + new_citation = replace(old_citation, start=0, span=new_span) + old_citation_new_span = replace(old_citation, span=new_span) + + summarization.citations.append(new_citation) + assert summarization.citations == [old_citation, new_citation] + assert summarization.citation == old_citation + assert summarization.spans == (old_span, new_span) + assert summarization.span == old_span + assert len(summarization.to_dict()["citations"]) == 2 + + summarization.span = new_span + assert summarization.citations == [old_citation_new_span] + assert summarization.spans == (new_span,) + assert summarization.span == new_span + assert len(summarization.to_dict()["citations"]) == 1 + + summarization.citations = [old_citation, new_citation] + summarization.citation = new_citation + assert summarization.citations == [new_citation] + assert summarization.spans == (new_span,) + assert summarization.span == new_span + assert len(summarization.to_dict()["citations"]) == 1 + + summarization.citations = [] + assert not summarization.citation + assert summarization.citation == NULL_CITATION + assert not summarization.span + assert summarization.span == NULL_SPAN + assert len(summarization.to_dict()["citations"]) == 0 + + summarization.citation = NULL_CITATION + assert not summarization.citations + assert not summarization.citation + assert summarization.citation == NULL_CITATION + assert len(summarization.to_dict()["citations"]) == 0 diff --git a/tests/results/test_utils.py b/tests/results/test_utils.py new file mode 100644 index 0000000..1cdf0f7 --- /dev/null +++ b/tests/results/test_utils.py @@ -0,0 +1,81 @@ +import pytest + +from indico_toolkit.results.utils import get, has, nfilter, omit + + +@pytest.fixture +def prediction() -> "dict[str, object]": + return { + "label": "Invoice Number", + "text": "INV12345", + "confidence": { + "Invoice Number": 0.9, + }, + "spans": [ + {"start": 123, "end": 456, "page_num": 0}, + ], + } + + +def test_get_has(prediction: "dict[str, object]") -> None: + assert has(prediction, str, "label") + assert get(prediction, str, "label") == "Invoice Number" + + assert has(prediction, dict, "confidence") + assert has(prediction, float, "confidence", "Invoice Number") + assert get(prediction, float, "confidence", "Invoice Number") == 0.9 + + assert has(prediction, list, "spans") + assert has(prediction, int, "spans", 0, "start") + assert get(prediction, int, "spans", 0, "start") == 123 + + +def test_get_has_not(prediction: object) -> None: + assert not has(prediction, str, "missing") + with pytest.raises(KeyError): + get(prediction, str, "missing") + + assert not has(prediction, int, "label") + with pytest.raises(TypeError): + get(prediction, int, "label") + + assert not has(prediction, float, "confidence", "Invoice Number", 0) + with pytest.raises(TypeError): + get(prediction, float, "confidence", "Invoice Number", 0) + + assert not has(prediction, int, "spans", "0", "start") + with pytest.raises(TypeError): + get(prediction, int, "spans", "0", "start") + + assert not has(prediction, int, "spans", -1, "start") + with pytest.raises(IndexError): + get(prediction, int, "spans", -1, "start") + + assert not has(prediction, int, "spans", -1, "start") + with pytest.raises(IndexError): + get(prediction, int, "spans", 1, "start") + + +def test_nfilter() -> None: + values = list(range(100)) + filtered = list(filter(lambda n: n % 2, filter(lambda n: n % 3, values))) + nfiltered = list(nfilter([(lambda n: n % 3), (lambda n: n % 2)], values)) # type: ignore[list-item, return-value] + assert filtered == nfiltered + + +def test_omit(prediction: "dict[str, object]") -> None: + assert omit(None) == {} + assert omit(None, "missing") == {} + + assert omit({}) == {} + assert omit({}, "missing") == {} + + assert omit({"key": "value"}) == {"key": "value"} + assert omit({"key": "value"}, "missing") == {"key": "value"} + assert omit({"key": "value"}, "key") == {} + + assert omit(prediction) == prediction + assert omit(prediction, "confidence", "spans") == { + "label": prediction["label"], + "text": prediction["text"], + } From 3230abc726c93ad4d39ae2ae604fc4057520a15f Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Mon, 9 Jun 2025 12:15:42 -0500 Subject: [PATCH 14/30] Explicitly handle null spans and citations --- .../results/predictions/documentextraction.py | 4 ++-- indico_toolkit/results/predictions/summarization.py | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/indico_toolkit/results/predictions/documentextraction.py b/indico_toolkit/results/predictions/documentextraction.py index 2544757..5a112d8 100644 --- a/indico_toolkit/results/predictions/documentextraction.py +++ b/indico_toolkit/results/predictions/documentextraction.py @@ -31,13 +31,13 @@ def span(self) -> Span: @span.setter def span(self, span: Span) -> None: """ - Overwrite all spans with the one provided. + Overwrite all spans with the one provided, handling `NULL_SPAN`. This is implemented under the assumption that if you're setting a single span, you want it to be the only one. And if you're working in a context that's multiple-span sensetive, you'll set `extraction.spans` instead. """ - self.spans = [span] + self.spans = [span] if span else [] @staticmethod def from_dict( diff --git a/indico_toolkit/results/predictions/summarization.py b/indico_toolkit/results/predictions/summarization.py index cfeeb22..57fe56a 100644 --- a/indico_toolkit/results/predictions/summarization.py +++ b/indico_toolkit/results/predictions/summarization.py @@ -30,14 +30,14 @@ def citation(self) -> Citation: @citation.setter def citation(self, citation: Citation) -> None: """ - Overwrite all citations with the one provided. + Overwrite all citations with the one provided, handling `NULL_CITATION`. This is implemented under the assumption that if you're setting a single citation, you want it to be the only one. And if you're working in a context that's multiple-citation sensetive, you'll set `summarization.citations` instead. """ - self.citations = [citation] + self.citations = [citation] if citation else [] @property def spans(self) -> "tuple[Span, ...]": @@ -58,8 +58,11 @@ def span(self) -> "Span": @span.setter def span(self, span: "Span") -> None: """ - Overwrite all citations with the first, replacing its span with the one - provided. + Overwrite all citations with the first, + replacing its span with the one provided. + + Using `NULL_SPAN` for a citation is not explicitly handled, + and should be considered undefined behavior. This is implemented under the assumption that if you're setting a single span, there's only one citation and you want to update its span. And if you're From a2417dadb8ee3e616b6e4aa26772333a69f62f65 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Mon, 9 Jun 2025 12:16:23 -0500 Subject: [PATCH 15/30] Fix semantic error in setting form extraction checkbox text --- indico_toolkit/results/predictions/formextraction.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/indico_toolkit/results/predictions/formextraction.py b/indico_toolkit/results/predictions/formextraction.py index 28782cb..15a01a9 100644 --- a/indico_toolkit/results/predictions/formextraction.py +++ b/indico_toolkit/results/predictions/formextraction.py @@ -97,15 +97,15 @@ def to_dict(self) -> "dict[str, Any]": prediction["normalized"]["structured"] = {"checked": self.checked} text = "Checked" if self.checked else "Unchecked" prediction["normalized"]["formatted"] = text - prediction["normalized"]["text"] = self.text - prediction["text"] = self.text + prediction["normalized"]["text"] = text + prediction["text"] = text elif self.type == FormExtractionType.SIGNATURE: prediction["normalized"]["structured"] = {"signed": self.signed} text = "Signed" if self.signed else "Unsigned" prediction["normalized"]["formatted"] = text # Don't overwrite the text of the signature stored in these attributes. - # prediction["normalized"]["text"] = self.text - # prediction["text"] = self.text + # prediction["normalized"]["text"] = text + # prediction["text"] = text elif self.type == FormExtractionType.TEXT and self.text != get( prediction, str, "normalized", "formatted" ): From f7c5242ee0fa05e1036de35ff986584b6b440d9b Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Mon, 9 Jun 2025 12:17:00 -0500 Subject: [PATCH 16/30] Filter form extractions by type for `.where(checked=...)` and `.where(signed=...)` --- indico_toolkit/results/predictionlist.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/indico_toolkit/results/predictionlist.py b/indico_toolkit/results/predictionlist.py index fb45470..445ddfb 100644 --- a/indico_toolkit/results/predictionlist.py +++ b/indico_toolkit/results/predictionlist.py @@ -7,6 +7,7 @@ DocumentExtraction, Extraction, FormExtraction, + FormExtractionType, Prediction, Summarization, Unbundling, @@ -287,14 +288,20 @@ def where( if checked is not None: predicates.append( - lambda prediction: isinstance(prediction, FormExtraction) - and prediction.checked == checked + lambda prediction: ( + isinstance(prediction, FormExtraction) + and prediction.type == FormExtractionType.CHECKBOX + and prediction.checked == checked + ) ) if signed is not None: predicates.append( - lambda prediction: isinstance(prediction, FormExtraction) - and prediction.signed == signed + lambda prediction: ( + isinstance(prediction, FormExtraction) + and prediction.type == FormExtractionType.SIGNATURE + and prediction.signed == signed + ) ) return type(self)(nfilter(predicates, self)) From 21230238d23615c53e70da8fbfc5867944e1e342 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Tue, 10 Jun 2025 07:10:05 -0500 Subject: [PATCH 17/30] Remove `Result.version` as it's no longer needed to serialize --- examples/results_dataclasses.py | 1 - indico_toolkit/results/result.py | 3 --- tests/results/test_files.py | 4 ++-- tests/results/test_result.py | 2 -- 4 files changed, 2 insertions(+), 8 deletions(-) diff --git a/examples/results_dataclasses.py b/examples/results_dataclasses.py index 60f0a13..ea6c4fd 100644 --- a/examples/results_dataclasses.py +++ b/examples/results_dataclasses.py @@ -55,7 +55,6 @@ # Result Dataclass result.submission_id # Submission ID -result.version # Result file version result.documents # List of documents in this submission result.tasks # List of tasks in this submission result.reviews # List of reviews for this submission diff --git a/indico_toolkit/results/result.py b/indico_toolkit/results/result.py index 1ef4651..3e8e9be 100644 --- a/indico_toolkit/results/result.py +++ b/indico_toolkit/results/result.py @@ -14,7 +14,6 @@ @dataclass(frozen=True, order=True) class Result: - version: int submission_id: int documents: "tuple[Document, ...]" tasks: "tuple[Task, ...]" @@ -52,7 +51,6 @@ def from_dict(result: object) -> "Result": """ normalize_result_dict(result) - version = get(result, int, "file_version") submission_id = get(result, int, "submission_id") submission_results = get(result, list, "submission_results") modelgroup_metadata = get(result, dict, "modelgroup_metadata") @@ -124,7 +122,6 @@ def from_dict(result: object) -> "Result": ) return Result( - version=version, submission_id=submission_id, documents=tuple(documents), tasks=tuple(tasks), diff --git a/tests/results/test_files.py b/tests/results/test_files.py index 6257fb7..602fc21 100644 --- a/tests/results/test_files.py +++ b/tests/results/test_files.py @@ -12,7 +12,7 @@ def test_file_load(result_file: Path) -> None: result = results.load(result_file, reader=Path.read_text) result.pre_review.to_changes(result) - assert result.version + assert result.submission_id @pytest.mark.parametrize("result_file", list(data_folder.glob("*.json"))) @@ -22,7 +22,7 @@ async def path_read_text_async(path: Path) -> str: result = await results.load_async(result_file, reader=path_read_text_async) result.pre_review.to_changes(result) - assert result.version + assert result.submission_id def test_usupported_version() -> None: diff --git a/tests/results/test_result.py b/tests/results/test_result.py index ad84493..dc6055f 100644 --- a/tests/results/test_result.py +++ b/tests/results/test_result.py @@ -3,7 +3,6 @@ def test_rejected() -> None: result = Result( - version=None, # type: ignore[arg-type] submission_id=None, # type: ignore[arg-type] documents=None, # type: ignore[arg-type] tasks=None, # type: ignore[arg-type] @@ -24,7 +23,6 @@ def test_rejected() -> None: def test_unrejected() -> None: result = Result( - version=None, # type: ignore[arg-type] submission_id=None, # type: ignore[arg-type] documents=None, # type: ignore[arg-type] tasks=None, # type: ignore[arg-type] From 1ceb7ca317d34325082befac724bd0c9efacd14f Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Tue, 10 Jun 2025 08:04:35 -0500 Subject: [PATCH 18/30] Improve variable names for `PredictionList.groupby()` and `.groupbyiter()` --- indico_toolkit/results/predictionlist.py | 26 ++++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/indico_toolkit/results/predictionlist.py b/indico_toolkit/results/predictionlist.py index 445ddfb..1ac3cbd 100644 --- a/indico_toolkit/results/predictionlist.py +++ b/indico_toolkit/results/predictionlist.py @@ -95,37 +95,37 @@ def groupby( it's automatically converted to its hashable immutable variant (like frozenset). This makes it easy to group by linked labels or unbundling pages. """ - grouped = defaultdict(type(self)) # type: ignore[var-annotated] + grouped_predictions = defaultdict(type(self)) # type: ignore[var-annotated] for prediction in self: - derived_key = key(prediction) + group_key = key(prediction) - if isinstance(derived_key, list): - derived_key = tuple(derived_key) # type: ignore[assignment] - elif isinstance(derived_key, set): - derived_key = frozenset(derived_key) # type: ignore[assignment] + if isinstance(group_key, list): + group_key = tuple(group_key) # type: ignore[assignment] + elif isinstance(group_key, set): + group_key = frozenset(group_key) # type: ignore[assignment] - grouped[derived_key].append(prediction) + grouped_predictions[group_key].append(prediction) - return grouped + return grouped_predictions def groupbyiter( self, keys: "Callable[[PredictionType], Iterable[KeyType]]" ) -> "dict[KeyType, Self]": """ - Group predictions into a dictionary using `key` to derive an iterable of keys. + Group predictions into a dictionary using `keys` to derive an iterable of keys. E.g. `key=attrgetter("groups")` or `key=attrgetter("pages")`. Each prediction is associated with every key in the iterable individually. If the iterable is empty, the prediction is not included in any group. """ - grouped = defaultdict(type(self)) # type: ignore[var-annotated] + grouped_predictions = defaultdict(type(self)) # type: ignore[var-annotated] for prediction in self: - for derived_key in keys(prediction): - grouped[derived_key].append(prediction) + for group_key in keys(prediction): + grouped_predictions[group_key].append(prediction) - return grouped + return grouped_predictions def oftype(self, type: "type[OfType]") -> "PredictionList[OfType]": """ From 58b1581789236828d128dbfce8cb05c34eeb04af Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Tue, 10 Jun 2025 08:15:00 -0500 Subject: [PATCH 19/30] Improve docstring and fix predicate order of `PredictionList.where()` --- indico_toolkit/results/predictionlist.py | 30 ++++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/indico_toolkit/results/predictionlist.py b/indico_toolkit/results/predictionlist.py index 1ac3cbd..312fd9e 100644 --- a/indico_toolkit/results/predictionlist.py +++ b/indico_toolkit/results/predictionlist.py @@ -171,15 +171,15 @@ def where( predicate: predictions for which this function returns True, document: predictions from this document, - document_in: predictions from these documents, + document_in: predictions from any of these documents, task: predictions from this task, task type, or task name, - task_in: predictions from these models, task types, or names, + task_in: predictions from any of these tasks, task types, or task names, review: predictions from this review or review type, - review_in: predictions from these reviews or review types, + review_in: predictions from any of these reviews or review types, label: predictions with this label, - label_in: predictions with these labels, + label_in: predictions with any of these labels, page: extractions/unbundlings on this page, - page_in: extractions/unbundlings on these pages, + page_in: extractions/unbundlings on any of these pages, min_confidence: predictions with confidence >= this threshold, max_confidence: predictions with confidence <= this threshold, accepted: extractions that have or haven't been accepted, @@ -244,16 +244,6 @@ def where( if label_in is not None: predicates.append(lambda prediction: prediction.label in label_in) - if min_confidence is not None: - predicates.append( - lambda prediction: prediction.confidence >= min_confidence - ) - - if max_confidence is not None: - predicates.append( - lambda prediction: prediction.confidence <= max_confidence - ) - if page is not None: predicates.append( lambda prediction: ( @@ -274,6 +264,16 @@ def where( ) ) + if min_confidence is not None: + predicates.append( + lambda prediction: prediction.confidence >= min_confidence + ) + + if max_confidence is not None: + predicates.append( + lambda prediction: prediction.confidence <= max_confidence + ) + if accepted is not None: predicates.append( lambda prediction: isinstance(prediction, Extraction) From 2570bca5efa0c4e35cf4a5b9b7d6b118b486f2bf Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Tue, 10 Jun 2025 08:54:11 -0500 Subject: [PATCH 20/30] Make `NULL_CITATION` initializer consistent with the dataclass definition --- indico_toolkit/results/predictions/citation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indico_toolkit/results/predictions/citation.py b/indico_toolkit/results/predictions/citation.py index 91d727a..ef00199 100644 --- a/indico_toolkit/results/predictions/citation.py +++ b/indico_toolkit/results/predictions/citation.py @@ -44,4 +44,4 @@ def to_dict(self) -> "dict[str, Any]": # `citation` attribute without having to constantly check for `None`, while still # allowing you do a "None check" with `summarization.citation == NULL_CITATION` or # `bool(summarization.citation)`. -NULL_CITATION: "Final" = Citation(span=NULL_SPAN, start=0, end=0) +NULL_CITATION: "Final" = Citation(start=0, end=0, span=NULL_SPAN) From 75966ccab4c327c3c4ef7a52762f36516ae08f62 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Tue, 10 Jun 2025 08:58:31 -0500 Subject: [PATCH 21/30] Make `Citation.to_dict()` key order consistent with the dataclass definition --- indico_toolkit/results/predictions/citation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indico_toolkit/results/predictions/citation.py b/indico_toolkit/results/predictions/citation.py index ef00199..debf27c 100644 --- a/indico_toolkit/results/predictions/citation.py +++ b/indico_toolkit/results/predictions/citation.py @@ -31,11 +31,11 @@ def from_dict(span: object) -> "Citation": def to_dict(self) -> "dict[str, Any]": return { - "document": self.span.to_dict(), "response": { "start": self.start, "end": self.end, }, + "document": self.span.to_dict(), } From 2da72f3a7c8f42bd179dd032f07a770a1ea87028 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Tue, 10 Jun 2025 09:10:37 -0500 Subject: [PATCH 22/30] Update `normalize_prediction_dict()` comment --- indico_toolkit/results/normalization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indico_toolkit/results/normalization.py b/indico_toolkit/results/normalization.py index c1bc0e8..44f4da1 100644 --- a/indico_toolkit/results/normalization.py +++ b/indico_toolkit/results/normalization.py @@ -75,7 +75,7 @@ def normalize_prediction_dict(task_type: TaskType, prediction: "Any") -> None: prediction["groupings"] = [] # Summarizations added in review may lack a `citations` section. - # These values will match `NULL_CITATION`. + # This value will match `NULL_CITATION`. if task_type == TaskType.GENAI_SUMMARIZATION and not has( prediction, list, "citations" ): From d2af0a108918f06f4ffded5437d7b0a51825121e Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Wed, 11 Jun 2025 15:00:48 -0500 Subject: [PATCH 23/30] Improve variable names --- indico_toolkit/etloutput/__init__.py | 28 +++++++++++++-------------- indico_toolkit/etloutput/etloutput.py | 28 +++++++++++++-------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/indico_toolkit/etloutput/__init__.py b/indico_toolkit/etloutput/__init__.py index fa7f149..ddfa364 100644 --- a/indico_toolkit/etloutput/__init__.py +++ b/indico_toolkit/etloutput/__init__.py @@ -59,21 +59,21 @@ def load( pages = get(etl_output, list, "pages") if text and has(pages, str, 0, "text"): - text_by_page = map(lambda page: reader(get(page, str, "text")), pages) + text_pages = map(lambda page: reader(get(page, str, "text")), pages) else: - text_by_page = () # type: ignore[assignment] + text_pages = () # type: ignore[assignment] if tokens and has(pages, str, 0, "tokens"): - tokens_by_page = map(lambda page: reader(get(page, str, "tokens")), pages) + token_dict_pages = map(lambda page: reader(get(page, str, "tokens")), pages) else: - tokens_by_page = () # type: ignore[assignment] + token_dict_pages = () # type: ignore[assignment] if tables and has(pages, str, 0, "tables"): - tables_by_page = map(lambda page: reader(get(page, str, "tables")), pages) + table_dict_pages = map(lambda page: reader(get(page, str, "tables")), pages) else: - tables_by_page = () # type: ignore[assignment] + table_dict_pages = () # type: ignore[assignment] - return EtlOutput.from_pages(text_by_page, tokens_by_page, tables_by_page) + return EtlOutput.from_pages(text_pages, token_dict_pages, table_dict_pages) async def load_async( @@ -103,18 +103,18 @@ async def load_async( pages = get(etl_output, list, "pages") if text and has(pages, str, 0, "text"): - text_by_page = [await reader(get(page, str, "text")) for page in pages] + text_pages = [await reader(get(page, str, "text")) for page in pages] else: - text_by_page = () # type: ignore[assignment] + text_pages = () # type: ignore[assignment] if tokens and has(pages, str, 0, "tokens"): - tokens_by_page = [await reader(get(page, str, "tokens")) for page in pages] + token_dict_pages = [await reader(get(page, str, "tokens")) for page in pages] else: - tokens_by_page = () # type: ignore[assignment] + token_dict_pages = () # type: ignore[assignment] if tables and has(pages, str, 0, "tables"): - tables_by_page = [await reader(get(page, str, "tables")) for page in pages] + table_dict_pages = [await reader(get(page, str, "tables")) for page in pages] else: - tables_by_page = () # type: ignore[assignment] + table_dict_pages = () # type: ignore[assignment] - return EtlOutput.from_pages(text_by_page, tokens_by_page, tables_by_page) + return EtlOutput.from_pages(text_pages, token_dict_pages, table_dict_pages) diff --git a/indico_toolkit/etloutput/etloutput.py b/indico_toolkit/etloutput/etloutput.py index 091c05d..4875bf5 100644 --- a/indico_toolkit/etloutput/etloutput.py +++ b/indico_toolkit/etloutput/etloutput.py @@ -28,30 +28,30 @@ class EtlOutput: @staticmethod def from_pages( - text_by_page: "Iterable[str]", - token_dicts_by_page: "Iterable[Iterable[object]]", - table_dicts_by_page: "Iterable[Iterable[object]]", + text_pages: "Iterable[str]", + token_dict_pages: "Iterable[Iterable[object]]", + table_dict_pages: "Iterable[Iterable[object]]", ) -> "EtlOutput": """ Create an `EtlOutput` from pages of text, tokens, and tables. """ - text_by_page = tuple(text_by_page) - tokens_by_page = tuple( + text_pages = tuple(text_pages) + token_pages = tuple( tuple(sorted(map(Token.from_dict, token_dict_page), key=attrgetter("span"))) - for token_dict_page in token_dicts_by_page + for token_dict_page in token_dict_pages ) - tables_by_page = tuple( + table_pages = tuple( tuple(sorted(map(Table.from_dict, table_dict_page), key=attrgetter("box"))) - for table_dict_page in table_dicts_by_page + for table_dict_page in table_dict_pages ) return EtlOutput( - text="\n".join(text_by_page), - text_on_page=text_by_page, - tokens=tuple(itertools.chain.from_iterable(tokens_by_page)), - tokens_on_page=tokens_by_page, - tables=tuple(itertools.chain.from_iterable(tables_by_page)), - tables_on_page=tables_by_page, + text="\n".join(text_pages), + text_on_page=text_pages, + tokens=tuple(itertools.chain.from_iterable(token_pages)), + tokens_on_page=token_pages, + tables=tuple(itertools.chain.from_iterable(table_pages)), + tables_on_page=table_pages, ) def token_for(self, span: Span) -> Token: From bc3182a2c105829e724cb1c1793e0e51de3c6ea7 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Thu, 12 Jun 2025 11:34:42 -0500 Subject: [PATCH 24/30] Move return out of try..except --- indico_toolkit/etloutput/etloutput.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/indico_toolkit/etloutput/etloutput.py b/indico_toolkit/etloutput/etloutput.py index 4875bf5..2c4f79b 100644 --- a/indico_toolkit/etloutput/etloutput.py +++ b/indico_toolkit/etloutput/etloutput.py @@ -64,21 +64,21 @@ def token_for(self, span: Span) -> Token: first = bisect_right(tokens, span.start, key=attrgetter("span.end")) last = bisect_left(tokens, span.end, lo=first, key=attrgetter("span.start")) tokens = tokens[first:last] - - return Token( - text=self.text[span.slice], - span=span, - box=Box( - page=min(token.box.page for token in tokens), - top=min(token.box.top for token in tokens), - left=min(token.box.left for token in tokens), - right=max(token.box.right for token in tokens), - bottom=max(token.box.bottom for token in tokens), - ), - ) except (IndexError, ValueError) as error: raise TokenNotFoundError(f"no token contains {span!r}") from error + return Token( + text=self.text[span.slice], + box=Box( + page=span.page, + top=min(token.box.top for token in tokens), + left=min(token.box.left for token in tokens), + right=max(token.box.right for token in tokens), + bottom=max(token.box.bottom for token in tokens), + ), + span=span, + ) + def table_cell_for(self, token: Token) -> "tuple[Table, Cell]": """ Return the `Table` and `Cell` that contain the midpoint of `token`. From c37a6f8aa83e3498719f1da2c3922265127b196e Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Mon, 16 Jun 2025 15:56:09 -0500 Subject: [PATCH 25/30] Fix importing `ResultError` as a type --- indico_toolkit/results/predictions/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indico_toolkit/results/predictions/__init__.py b/indico_toolkit/results/predictions/__init__.py index e578f35..5a29151 100644 --- a/indico_toolkit/results/predictions/__init__.py +++ b/indico_toolkit/results/predictions/__init__.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING +from ..errors import ResultError from ..normalization import normalize_prediction_dict from ..task import TaskType from .box import NULL_BOX, Box @@ -16,7 +17,6 @@ if TYPE_CHECKING: from ..document import Document - from ..errors import ResultError from ..review import Review from ..task import Task From d51ee96709bd551de7c3e06792a5ab3b998f8199 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Mon, 16 Jun 2025 15:56:23 -0500 Subject: [PATCH 26/30] Improve comments --- indico_toolkit/results/predictions/box.py | 2 +- indico_toolkit/results/predictions/citation.py | 4 ++-- indico_toolkit/results/predictions/span.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/indico_toolkit/results/predictions/box.py b/indico_toolkit/results/predictions/box.py index 135d277..fb78147 100644 --- a/indico_toolkit/results/predictions/box.py +++ b/indico_toolkit/results/predictions/box.py @@ -57,5 +57,5 @@ def from_dict(box: object) -> "Box": # It's more ergonomic to represent the lack of a bounding box with a special null box # object rather than using `None` or raising an error. This lets you e.g. sort by the # `box` attribute without having to constantly check for `None`, while still allowing -# you do a "None check" with `extraction.box == NULL_BOX`. +# you do a "None check" with `bool(extraction.box)` or `extraction.box == NULL_BOX`. NULL_BOX: "Final" = Box(page=0, top=0, left=0, right=0, bottom=0) diff --git a/indico_toolkit/results/predictions/citation.py b/indico_toolkit/results/predictions/citation.py index debf27c..177cf60 100644 --- a/indico_toolkit/results/predictions/citation.py +++ b/indico_toolkit/results/predictions/citation.py @@ -42,6 +42,6 @@ def to_dict(self) -> "dict[str, Any]": # It's more ergonomic to represent the lack of citations with a special null citation # object rather than using `None` or raising an error. This lets you e.g. sort by the # `citation` attribute without having to constantly check for `None`, while still -# allowing you do a "None check" with `summarization.citation == NULL_CITATION` or -# `bool(summarization.citation)`. +# allowing you do a "None check" with `bool(summarization.citation)` or +# `summarization.citation == NULL_CITATION`. NULL_CITATION: "Final" = Citation(start=0, end=0, span=NULL_SPAN) diff --git a/indico_toolkit/results/predictions/span.py b/indico_toolkit/results/predictions/span.py index cd190f7..8ca2c31 100644 --- a/indico_toolkit/results/predictions/span.py +++ b/indico_toolkit/results/predictions/span.py @@ -39,5 +39,5 @@ def to_dict(self) -> "dict[str, Any]": # It's more ergonomic to represent the lack of spans with a special null span object # rather than using `None` or raising an error. This lets you e.g. sort by the `span` # attribute without having to constantly check for `None`, while still allowing you do -# a "None check" with `extraction.span == NULL_SPAN` or `bool(extraction.span)`. +# a "None check" with `bool(extraction.span)` or `extraction.span == NULL_SPAN`. NULL_SPAN: "Final" = Span(page=0, start=0, end=0) From f16c925d141589a5800ceac23d2678d83eecc276 Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Mon, 16 Jun 2025 15:12:42 -0500 Subject: [PATCH 27/30] Unify Result and EtlOutput loading APIs --- indico_toolkit/etloutput/__init__.py | 79 +++++++++++++++++------- indico_toolkit/polling/autoreview.py | 4 +- indico_toolkit/results/__init__.py | 48 +++++++------- indico_toolkit/results/result.py | 6 ++ indico_toolkit/results/utils.py | 28 ++++++++- tests/etloutput/test_files.py | 20 +++--- tests/etloutput/test_token_table_cell.py | 12 ++-- tests/results/test_files.py | 6 +- 8 files changed, 133 insertions(+), 70 deletions(-) diff --git a/indico_toolkit/etloutput/__init__.py b/indico_toolkit/etloutput/__init__.py index ddfa364..640ab66 100644 --- a/indico_toolkit/etloutput/__init__.py +++ b/indico_toolkit/etloutput/__init__.py @@ -1,7 +1,7 @@ -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, TypeAlias, TypeVar from ..results import NULL_BOX, NULL_SPAN, Box, Span -from ..results.utils import get, has +from ..results.utils import get, has, json_loaded, str_decoded from .cell import Cell, CellType from .errors import EtlOutputError, TableCellNotFoundError, TokenNotFoundError from .etloutput import EtlOutput @@ -11,7 +11,6 @@ if TYPE_CHECKING: from collections.abc import Awaitable, Callable - from typing import Any __all__ = ( "Box", @@ -31,20 +30,28 @@ "TokenNotFoundError", ) +Loadable: TypeAlias = "dict[str, object] | str | bytes" +Readable = TypeVar("Readable") +URI: TypeAlias = str + def load( - etl_output_uri: str, + etl_output: "Loadable | Readable", *, - reader: "Callable[..., Any]", + reader: "Callable[[Readable | URI], Loadable]", text: bool = True, tokens: bool = True, tables: bool = True, ) -> EtlOutput: """ - Load `etl_output_uri` as an `EtlOutput` dataclass. A `reader` function must be - supplied to read JSON files from disk, storage API, or Indico client. + Load `etl_output` as an `EtlOutput` dataclass. + + `etl_output` can be a dict, JSON string/bytes, or something that can be read by + `reader` to produce either. - Use `text`, `tokens`, and `tables` to specify what to load. + `reader` must be able to handle Indico storage URIs. + + Use `text`, `tokens`, and `tables` to specify what not to load. ``` result = results.load(submission.result_file, reader=read_uri) @@ -55,21 +62,34 @@ def load( } ``` """ - etl_output = reader(etl_output_uri) + if not isinstance(etl_output, dict): + if (isinstance(etl_output, str) and etl_output.startswith("{")) or ( + isinstance(etl_output, bytes) and etl_output.startswith(b"{") + ): + etl_output = json_loaded(etl_output) + else: + etl_output = json_loaded(reader(etl_output)) # type: ignore[arg-type] + pages = get(etl_output, list, "pages") if text and has(pages, str, 0, "text"): - text_pages = map(lambda page: reader(get(page, str, "text")), pages) + text_pages = map( + lambda page: str_decoded(reader(get(page, str, "text"))), pages # type: ignore[arg-type] + ) else: text_pages = () # type: ignore[assignment] if tokens and has(pages, str, 0, "tokens"): - token_dict_pages = map(lambda page: reader(get(page, str, "tokens")), pages) + token_dict_pages = map( + lambda page: json_loaded(reader(get(page, str, "tokens"))), pages + ) else: token_dict_pages = () # type: ignore[assignment] if tables and has(pages, str, 0, "tables"): - table_dict_pages = map(lambda page: reader(get(page, str, "tables")), pages) + table_dict_pages = map( + lambda page: json_loaded(reader(get(page, str, "tables"))), pages + ) else: table_dict_pages = () # type: ignore[assignment] @@ -77,18 +97,22 @@ def load( async def load_async( - etl_output_uri: str, + etl_output: "Loadable | Readable", *, - reader: "Callable[..., Awaitable[Any]]", + reader: "Callable[[Readable | URI], Awaitable[Loadable]]", text: bool = True, tokens: bool = True, tables: bool = True, ) -> EtlOutput: """ - Load `etl_output_uri` as an `EtlOutput` dataclass. A `reader` coroutine must be - supplied to read JSON files from disk, storage API, or Indico client. + Load `etl_output` as an `EtlOutput` dataclass. - Use `text`, `tokens`, and `tables` to specify what to load. + `etl_output` can be a dict, JSON string/bytes, or something that can be read by + `reader` to produce either. + + `reader` must be able to handle Indico storage URIs. + + Use `text`, `tokens`, and `tables` to specify what not to load. ``` result = await results.load_async(submission.result_file, reader=read_uri) @@ -99,21 +123,34 @@ async def load_async( } ``` """ - etl_output = await reader(etl_output_uri) + if not isinstance(etl_output, dict): + if (isinstance(etl_output, str) and etl_output.startswith("{")) or ( + isinstance(etl_output, bytes) and etl_output.startswith(b"{") + ): + etl_output = json_loaded(etl_output) + else: + etl_output = json_loaded(await reader(etl_output)) # type: ignore[arg-type] + pages = get(etl_output, list, "pages") if text and has(pages, str, 0, "text"): - text_pages = [await reader(get(page, str, "text")) for page in pages] + text_pages = [ + str_decoded(await reader(get(page, str, "text"))) for page in pages # type: ignore[arg-type] + ] else: text_pages = () # type: ignore[assignment] if tokens and has(pages, str, 0, "tokens"): - token_dict_pages = [await reader(get(page, str, "tokens")) for page in pages] + token_dict_pages = [ + json_loaded(await reader(get(page, str, "tokens"))) for page in pages + ] else: token_dict_pages = () # type: ignore[assignment] if tables and has(pages, str, 0, "tables"): - table_dict_pages = [await reader(get(page, str, "tables")) for page in pages] + table_dict_pages = [ + json_loaded(await reader(get(page, str, "tables"))) for page in pages + ] else: table_dict_pages = () # type: ignore[assignment] diff --git a/indico_toolkit/polling/autoreview.py b/indico_toolkit/polling/autoreview.py index 8656110..3939cac 100644 --- a/indico_toolkit/polling/autoreview.py +++ b/indico_toolkit/polling/autoreview.py @@ -96,8 +96,8 @@ async def poll_forever(self) -> "NoReturn": # type: ignore[misc] *(self._reap_workers() for _ in range(self._worker_count)), ) - async def _retrieve_storage_object(self, url: str) -> object: - return await self._client_call(RetrieveStorageObject(url)) + async def _retrieve_storage_object(self, uri: str) -> "Any": + return await self._client_call(RetrieveStorageObject(uri)) async def _spawn_workers(self) -> None: """ diff --git a/indico_toolkit/results/__init__.py b/indico_toolkit/results/__init__.py index 5b68c45..ea9a4e8 100644 --- a/indico_toolkit/results/__init__.py +++ b/indico_toolkit/results/__init__.py @@ -1,5 +1,4 @@ -import json -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, TypeAlias, TypeVar, overload from .document import Document from .errors import ResultError @@ -23,7 +22,7 @@ from .result import Result from .review import Review, ReviewType from .task import Task, TaskType -from .utils import get +from .utils import json_loaded if TYPE_CHECKING: from collections.abc import Awaitable, Callable @@ -56,13 +55,19 @@ "Unbundling", ) +Loadable: TypeAlias = "dict[str, object] | str | bytes" +Readable = TypeVar("Readable") + +@overload +def load(result: Loadable) -> Result: ... +@overload +def load(result: Readable, *, reader: "Callable[[Readable], Loadable]") -> Result: ... def load(result: object, *, reader: "Callable[..., object] | None" = None) -> Result: """ - Load `result` as a Result dataclass. + Load `result` as a `Result` dataclass. `result` can be a dict or JSON string/bytes. - `result` can be a dict, a JSON string, or something that can be read with `reader` - to produce either. + If `reader` is provided, it should read `result` to produce a loadable type. ``` for result_file in result_folder.glob("*.json"): @@ -72,31 +77,28 @@ def load(result: object, *, reader: "Callable[..., object] | None" = None) -> Re if reader: result = reader(result) - return _load(result) + return Result.from_dict(json_loaded(result)) +@overload +async def load_async(result: Loadable) -> Result: ... +@overload +async def load_async( + result: Readable, *, reader: "Callable[[Readable], Awaitable[Loadable]]" +) -> Result: ... async def load_async( result: object, *, reader: "Callable[..., Awaitable[object]] | None" = None ) -> Result: """ - Load `result` as a Result dataclass. + Load `result` as a `Result` dataclass. `result` can be a dict or JSON string/bytes. + + If `reader` is provided, it should read `result` to produce a loadable type. - `result` can be a dict, a JSON string, or something that can be read with `reader` - to produce either. + ``` + result = await results.load_async(submission.result_file, reader=read_uri) + ``` """ if reader: result = await reader(result) - return _load(result) - - -def _load(result: object) -> Result: - if isinstance(result, str) and result.strip().startswith("{"): - result = json.loads(result) - - file_version = get(result, int, "file_version") - - if file_version == 3: - return Result.from_dict(result) - else: - raise ResultError(f"unsupported file version `{file_version}`") + return Result.from_dict(json_loaded(result)) diff --git a/indico_toolkit/results/result.py b/indico_toolkit/results/result.py index 3e8e9be..0508cd9 100644 --- a/indico_toolkit/results/result.py +++ b/indico_toolkit/results/result.py @@ -4,6 +4,7 @@ from . import predictions as prediction from .document import Document +from .errors import ResultError from .normalization import normalize_result_dict from .predictionlist import PredictionList from .predictions import Prediction @@ -49,6 +50,11 @@ def from_dict(result: object) -> "Result": """ Create a `Result` from a result file dictionary. """ + file_version = get(result, int, "file_version") + + if file_version != 3: + raise ResultError(f"unsupported file version `{file_version}`") + normalize_result_dict(result) submission_id = get(result, int, "submission_id") diff --git a/indico_toolkit/results/utils.py b/indico_toolkit/results/utils.py index 97f7089..9c8e5f0 100644 --- a/indico_toolkit/results/utils.py +++ b/indico_toolkit/results/utils.py @@ -1,5 +1,9 @@ +import json from collections.abc import Iterable, Iterator -from typing import Callable, TypeVar +from typing import TYPE_CHECKING, TypeVar + +if TYPE_CHECKING: + from typing import Any, Callable Value = TypeVar("Value") @@ -47,6 +51,18 @@ def has(result: object, value_type: "type[Value]", *keys: "str | int") -> bool: return isinstance(result, value_type) +def json_loaded(value: "Any") -> "Any": + """ + Ensure `value` has been loaded as JSON. + """ + value = str_decoded(value) + + if isinstance(value, str): + value = json.loads(value) + + return value + + def nfilter( predicates: "Iterable[Callable[[Value], bool]]", values: "Iterable[Value]" ) -> "Iterator[Value]": @@ -73,3 +89,13 @@ def omit(dictionary: object, *keys: str) -> "dict[str, Value]": for key, value in dictionary.items() if key not in keys } # fmt: skip + + +def str_decoded(value: str | bytes) -> str: + """ + Ensure `value` has been decoded to a string. + """ + if isinstance(value, bytes): + value = value.decode() + + return value diff --git a/tests/etloutput/test_files.py b/tests/etloutput/test_files.py index 1fd59f6..d9086d4 100644 --- a/tests/etloutput/test_files.py +++ b/tests/etloutput/test_files.py @@ -1,4 +1,3 @@ -import json from pathlib import Path import pytest @@ -8,23 +7,20 @@ data_folder = Path(__file__).parent.parent / "data" / "etloutput" -def read_uri(uri: str) -> object: +def read_uri(uri: str | Path) -> str: + uri = str(uri) storage_folder_path = uri.split("/storage/submission/")[-1] file_path = data_folder / storage_folder_path + return file_path.read_text() - if file_path.suffix.casefold() == ".json": - return json.loads(file_path.read_text()) - else: - return file_path.read_text() - -async def read_uri_async(uri: str) -> object: +async def read_uri_async(uri: str | Path) -> str: return read_uri(uri) @pytest.mark.parametrize("etl_output_file", list(data_folder.rglob("etl_output.json"))) def test_file_load(etl_output_file: Path) -> None: - etl_output = etloutput.load(str(etl_output_file), reader=read_uri) + etl_output = etloutput.load(etl_output_file, reader=read_uri) page_count = len(etl_output.text_on_page) char_count = len(etl_output.text) token_count = len(etl_output.tokens) @@ -38,7 +34,7 @@ def test_file_load(etl_output_file: Path) -> None: @pytest.mark.parametrize("etl_output_file", list(data_folder.rglob("etl_output.json"))) async def test_file_load_async(etl_output_file: Path) -> None: - etl_output = await etloutput.load_async(str(etl_output_file), reader=read_uri_async) + etl_output = await etloutput.load_async(etl_output_file, reader=read_uri_async) page_count = len(etl_output.text_on_page) char_count = len(etl_output.text) token_count = len(etl_output.tokens) @@ -53,7 +49,7 @@ async def test_file_load_async(etl_output_file: Path) -> None: @pytest.mark.parametrize("etl_output_file", list(data_folder.rglob("etl_output.json"))) def test_file_load_disable_values(etl_output_file: Path) -> None: etl_output = etloutput.load( - str(etl_output_file), + etl_output_file, reader=read_uri, text=False, tokens=False, @@ -73,7 +69,7 @@ def test_file_load_disable_values(etl_output_file: Path) -> None: @pytest.mark.parametrize("etl_output_file", list(data_folder.rglob("etl_output.json"))) async def test_file_load_disable_values_async(etl_output_file: Path) -> None: etl_output = await etloutput.load_async( - str(etl_output_file), + etl_output_file, reader=read_uri_async, text=False, tokens=False, diff --git a/tests/etloutput/test_token_table_cell.py b/tests/etloutput/test_token_table_cell.py index 1be26e6..b994d1a 100644 --- a/tests/etloutput/test_token_table_cell.py +++ b/tests/etloutput/test_token_table_cell.py @@ -1,4 +1,3 @@ -import json from dataclasses import replace from pathlib import Path @@ -18,19 +17,16 @@ etl_output_file = data_folder / "4725" / "111924" / "110239" / "etl_output.json" -def read_uri(uri: str) -> object: +def read_uri(uri: str | Path) -> bytes: + uri = str(uri) storage_folder_path = uri.split("/storage/submission/")[-1] file_path = data_folder / storage_folder_path - - if file_path.suffix.casefold() == ".json": - return json.loads(file_path.read_text()) - else: - return file_path.read_text() + return file_path.read_bytes() @pytest.fixture(scope="module") def etl_output() -> EtlOutput: - return etloutput.load(str(etl_output_file), reader=read_uri) + return etloutput.load(etl_output_file, reader=read_uri) @pytest.fixture diff --git a/tests/results/test_files.py b/tests/results/test_files.py index 602fc21..8d1513c 100644 --- a/tests/results/test_files.py +++ b/tests/results/test_files.py @@ -17,10 +17,10 @@ def test_file_load(result_file: Path) -> None: @pytest.mark.parametrize("result_file", list(data_folder.glob("*.json"))) async def test_file_load_async(result_file: Path) -> None: - async def path_read_text_async(path: Path) -> str: - return path.read_text() + async def path_read_bytes_async(path: Path) -> bytes: + return path.read_bytes() - result = await results.load_async(result_file, reader=path_read_text_async) + result = await results.load_async(result_file, reader=path_read_bytes_async) result.pre_review.to_changes(result) assert result.submission_id From 9d86247932cadd3be97a9d94574157f1ad9bc3dd Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Tue, 17 Jun 2025 09:16:28 -0500 Subject: [PATCH 28/30] Update changelog and version --- CHANGELOG.md | 22 ++++++++++++++++++++++ indico_toolkit/__init__.py | 2 +- pyproject.toml | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d89f63..46f6eab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -166,3 +166,25 @@ This is the first major version release tested to work on Indico 6.X. * Added support for imported models using IPA 7.2 `component_metadata` section. * Parse and preserve full span information for `Unbundling` predictions. * Add `group = next(group)` idiom. + +## 7.2.0 6/17/25 + +### Added + +* Unified support for `dict`, JSON `str`, and JSON `bytes` as loadable types in + `results.load()`, `results.load_async()`, `etloutput.load()`, and + `etloutput.load_async()`. + +### Changed + +* Renamed `model`, `ModelGroup`, and `ModelGroupType` to `task`, `Task`, and `TaskType` + in the `results` module. +* Table OCR is now automatically loaded when present + (`AutoReviewPoller(..., load_tables=True)` and `etloutput.load(..., tables=True)` are + now the default). + +### Removed + +* v1 result file code paths in the `results` module. +* v1 ETL output code paths in the `etloutput` module. +* 6.X edge cases in the `results` module. diff --git a/indico_toolkit/__init__.py b/indico_toolkit/__init__.py index 31d417c..bf75f9a 100644 --- a/indico_toolkit/__init__.py +++ b/indico_toolkit/__init__.py @@ -21,4 +21,4 @@ "ToolkitStaggeredLoopError", "ToolkitStatusError", ) -__version__ = "6.14.2" +__version__ = "7.2.0" diff --git a/pyproject.toml b/pyproject.toml index 5bb3043..8ca6bfc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ authors = [ readme = "README.md" urls = { source = "https://github.com/IndicoDataSolutions/Indico-Solutions-Toolkit" } requires-python = ">=3.10" -version = "6.14.2" +version = "7.2.0" dependencies = ["indico-client (>=6.14.0,<7.0.0)"] [project.optional-dependencies] From ae6205e4f9ea52dc02a6f1d72b8e209a952898dc Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Tue, 17 Jun 2025 09:51:27 -0500 Subject: [PATCH 29/30] Rewrite changelog to follow keepachangelog.com --- CHANGELOG.md | 275 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 173 insertions(+), 102 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f6eab..89527da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,190 +1,261 @@ # Changelog -## 1.0.1 - 6/2/2021 +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and versions match the minimum IPA version required to use functionality. + + +## [v7.2.0] - 2025-06-17 ### Added -* Added Snapshot merging / manipulation -* Class for highlighting extractions onto source PDFs and adding table of contents. +- Unified support for `dict`, JSON `str`, and JSON `bytes` as loadable types in + `results.load()`, `results.load_async()`, `etloutput.load()`, and + `etloutput.load_async()`. -### Fixed +### Changed -* Row Association now also sorting on 'bbtop' +- Rename `model`, `ModelGroup`, and `ModelGroupType` to `task`, `Task`, and `TaskType` + in the `results` module. +- Table OCR is automatically loaded when present + (`AutoReviewPoller(..., load_tables=True)` and `etloutput.load(..., tables=True)` are + now the default). -## 1.0.2 6/15/2021 +### Removed + +- v1 result file support and code paths in the `results` module. +- v1 ETL output support and code paths in the `etloutput` module. +- IPA 6.X support and edge cases in the `results` and `etloutput` modules. + + +## [v6.14.2] - 2025-05-08 ### Added -* PDF manipulation features -* Support for classification predictions +- Support for imported models using IPA 7.2 `component_metadata` section. +- Parse and preserve full span information for `Unbundling` predictions. +- `group = next(group)` idiom. + +### Removed + +- `AutoPopulator`, `CustomOcr`, `Datasets`, `DocExtraction`, `Reviewer` classes. ### Fixed -* Dependency installation +- Mypy configuration. -## 1.0.3 8/16/2021 -### Added +## [v6.14.1] - 2025-03-20 -* Find from questionnaire ID added to finder class. -* ModelGroupPredict support added. -* Added module to get metrics for all models in a group. -* Multi color highlighting and annotations added for PDF highlighting. -* Added stagger dataset upload feature for large doc datasets. -* Added default retry functionality for certain API calls. -* Added additional snapshot features. +### Changed -### Fixed +- Improve Poetry and Poe configuration. +- Update more attributes when prediction text changes to avoid TAK normalization issues. -* Wait kwarg added to submit review method. -* Better support for dataset creation / adding files to teach tasks. -## 1.0.5 9/21/2021 +## [v6.14.0] - 2025-03-10 ### Added -* Classes for model comparison and model improvement. -* Plotting functionality for model comparison. +- `results` module. +- `etloutput` module. +- Async coroutine support in the `retry` decorator. -## 1.0.7 11/9/2021 +### Changed + +- Switch to Poetry for packaging and dependency management. -### Added -* Positioning class added to assist in relative prediction location validation -* Added # of samples labeled to metrics class. +## v6.1.0 - 2024-05-06 ### Removed -* Teach classes in indico_wrapper +- Staggered loop support. +- Highlighting support. + -## 1.0.8 11/15/2021 +## v6.0.1 - 2023-11-22 ### Added -* New line plot for number of samples in metrics class. -* Update to highlighting class with new flexibility and bookmarks replacing table of contents. +- Original filename to the workflow result object. + + +## v6.0.0 - 2023-10-30 -## 1.1.1 12/6/2021 +This is the first major version release tested to work on Indico 6.X. ### Added -* Abillity to include metadata with highlighter -* Ability to split large snapshots into smaller files +- Support for unbundling metrics. +- `Structure` class to support building out workflows, datasets, teach tasks, and + copying workflows. + +### Changed + +- Refactor `AutoReview` to simplify setup. +- Replace `AutoClassifier` with `AutoPopulator` to make on-document classification + model training simple. This class also includes a "copy_teach_task" method that is a + frequently needed standalone method. +- Simplify `StaggeredLoop` implementation to inject labeled samples into a development + workflow (deprecated previous version). + -## 1.1.2 12/6/2021 +## v2.0.2 - 2022-08-31 ### Added -* Updated functionality for large dataset creation. Batch options allow for more reliable dataset uploads. +- Support for staggered looped learning. +- Ground truth compare feature to compare a snapshot against model predictions and + receive analytics. + +### Changed + +- Upgrade client to 5.1.4. +- Modify `IndioWrapper` class to work with Indico 5.x. +- Update `Snapshot` class to account for updated target spans. +- Update Add Model calls to align with 5.1.4 components. -## 1.2 1/6/2022 + +## v2.0.1 - 2022-05-20 ### Added -* New distance measurements in the prediction Positioning class. -* New Features on the Extractions class: predictions that are removed by any method are saved in an - attribute if they're needed for logs, etc.; get all text values for a particular label; get most - common text value for a particular label. -* Better exception handling for Workflow submissions and more flexibility on format of what is returned - (allows custom response jsons to avoid the WorkflowResult class). +- Feature in `FileProcessing` class to read and return file as JSON. +- Feature in `Highlighter` class to redact and replace highlights with spoofed data. +- `Download` class to support downloading resources from an Indico Cluster. + +### Changed + +- Upgrade client to 5.1.3. +- Update SDK calls for Indico 5.x compatibility. + +### Removed + +- `FindRelated` class in `indico_wrapper`. -## 1.2.2 3/03/2022 + +## v1.2.2 - 2022-03-03 ### Added -* Updated metrics plot to order ascending based on latest model -* New feature in Positioning class to calculate overlap between two bounding boxes on the same page +- Feature in `Positioning` class to calculate overlap between two bounding boxes on the + same page. + +### Changed + +- Update metrics plot to order ascending based on latest model. ### Fixed -* Optional dependencies to support M1 installation +- Optional dependencies to support M1 installation. -## 2.0.1 5/20/2022 -### Added +## v1.2.0 - 2022-01-06 -* New feature in FileProcessing class to read and return file as json -* New feature in Highlighter class to redact and replace highlights with spoofed data -* New Download class to support downloading resources from an Indico Cluster -* Upgrades client to 5.1.3 and upgrades SDK calls for Indico 5.x compatibility +### Added -### Removed +- Distance measurements in the prediction `Positioning` class. +- Features on the `Extractions` class: + - predictions that are removed by any method are saved in an attribute if they're + needed for logs, etc.; get all text values for a particular label, + - get most common text value for a particular label. +- Better exception handling for workflow submissions and more flexibility on format of + what is returned (allows custom response JSON to avoid the `WorkflowResult` class). -* FindRelated class in indico_wrapper -## 2.0.2 8/31/2022 +## v1.1.2 - 2021-12-06 ### Added -* Upgrades client to 5.1.4 -* New feature to now support staggered looped learning -* Ground truth compare feature to compare a snapshot against model predictions and receive analytics -* Modifies IndioWrapper class to updated CreateModelGroup call to work with Indico 5.x -* Updates Snapshot class to account for updated target spans -* Updates Add Model calls to aligh with 5.1.4 components +- Update functionality for large dataset creation. +- Batch options allow for more reliable dataset uploads. -## 6.0 10/30/23 -This is the first major version release tested to work on Indico 6.X. +## v1.1.1 - 2021-12-06 ### Added -* Refactored AutoReview to simplify setup. -* Replaced AutoClassifier with AutoPopulator to make ondoc classification model training simple. This class also includes a "copy_teach_task" method that is a frequently needed standalone method. -* Simplified a StaggeredLoop implementation to inject labeled samples into a dev workflow (deprecated previous version). -* Added support for unbundling metrics. -* Added the `Strucure` class to support building out workflows, datasets, teach tasks. As well as to support copying workflows. +- Ability to include metadata with highlighter. +- Ability to split large snapshots into smaller files. -## 6.0.1 11/22/23 + +## v1.0.8 - 2021-11-15 ### Added -* Small but important fix to add original filename to the workflow result object +- Line plot for number of samples in metrics class. + +### Changed + +- Update `Highlighting` class with new flexibility and bookmarks replacing table of + contents. + + +## v1.0.7 - 2021-11-09 + +### Added -## 6.1.0 5/6/24 +- `Positioning` class to assist in relative prediction location validation. +- Number of samples labeled to metrics class. ### Removed -* Removed staggered loop support and removed highlighting support. +- Teach classes in `indico_wrapper`. + + +## v1.0.5 - 2021-09-21 + +### Added + +- Classes for model comparison and model improvement. +- Plotting functionality for model comparison. -## 6.14.0 3/10/25 -* Added `results` module. -* Added `etloutput` module. -* Refactored `retry` decorator with asyncio support. -* Switched to Poetry for packaging and dependency management. +## v1.0.3 - 2021-08-16 -## 6.14.1 3/20/25 +### Added -* Improved Poetry and Poe configuration. -* Update more attributes when prediction text changes to avoid TAK normalization issues. +- Find from questionnaire ID added to finder class. +- ModelGroupPredict support. +- Module to get metrics for all models in a group. +- Multi color highlighting and annotations for PDF highlighting. +- Staggered dataset upload feature for large doc datasets. +- Default retry functionality for certain API calls. +- Additional snapshot features. -## 6.14.2 5/8/25 +### Fixed -* Fixed Mypy configuration. -* Removed `AutoPopulator`, `CustomOcr`, `Datasets`, `DocExtraction`, `Reviewer` classes. -* Added support for imported models using IPA 7.2 `component_metadata` section. -* Parse and preserve full span information for `Unbundling` predictions. -* Add `group = next(group)` idiom. +- `wait` keyword argument added to submit review method. +- Better support for dataset creation / adding files to teach tasks. -## 7.2.0 6/17/25 + +## v1.0.2 - 2021-06-15 ### Added -* Unified support for `dict`, JSON `str`, and JSON `bytes` as loadable types in - `results.load()`, `results.load_async()`, `etloutput.load()`, and - `etloutput.load_async()`. +- PDF manipulation features. +- Support for classification predictions. -### Changed +### Fixed -* Renamed `model`, `ModelGroup`, and `ModelGroupType` to `task`, `Task`, and `TaskType` - in the `results` module. -* Table OCR is now automatically loaded when present - (`AutoReviewPoller(..., load_tables=True)` and `etloutput.load(..., tables=True)` are - now the default). +- Dependency installation. + + +## v1.0.1 - 2021-06-02 + +### Added + +- Snapshot merging / manipulation. +- Class for highlighting extractions onto source PDFs and adding table of contents. + +### Fixed + +- Row Association now also sorting on 'bbtop'. -### Removed -* v1 result file code paths in the `results` module. -* v1 ETL output code paths in the `etloutput` module. -* 6.X edge cases in the `results` module. +[v7.2.0]: https://github.com/IndicoDataSolutions/zapper/compare/v6.14.2...v7.2.0 +[v6.14.2]: https://github.com/IndicoDataSolutions/zapper/compare/v6.14.1...v6.14.2 +[v6.14.1]: https://github.com/IndicoDataSolutions/zapper/compare/v6.14.0...v6.14.1 +[v6.14.0]: https://github.com/IndicoDataSolutions/zapper/tree/v6.14.0 From 0ec8e7cd9093bd2dfae4718de951945764b23dae Mon Sep 17 00:00:00 2001 From: Michael Welborn Date: Wed, 18 Jun 2025 09:32:28 -0500 Subject: [PATCH 30/30] Include lists of tokens/tables in ETL output loadable types --- indico_toolkit/etloutput/__init__.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/indico_toolkit/etloutput/__init__.py b/indico_toolkit/etloutput/__init__.py index 640ab66..9c7f3fe 100644 --- a/indico_toolkit/etloutput/__init__.py +++ b/indico_toolkit/etloutput/__init__.py @@ -30,7 +30,7 @@ "TokenNotFoundError", ) -Loadable: TypeAlias = "dict[str, object] | str | bytes" +Loadable: TypeAlias = "dict[str, object] | list[object] | str | bytes" Readable = TypeVar("Readable") URI: TypeAlias = str @@ -47,9 +47,9 @@ def load( Load `etl_output` as an `EtlOutput` dataclass. `etl_output` can be a dict, JSON string/bytes, or something that can be read by - `reader` to produce either. + `reader` to produce a loadable type. - `reader` must be able to handle Indico storage URIs. + `reader` must be able to load Indico storage URIs as lists or JSON strings/bytes. Use `text`, `tokens`, and `tables` to specify what not to load. @@ -108,9 +108,9 @@ async def load_async( Load `etl_output` as an `EtlOutput` dataclass. `etl_output` can be a dict, JSON string/bytes, or something that can be read by - `reader` to produce either. + `reader` to produce a loadable type. - `reader` must be able to handle Indico storage URIs. + `reader` must be able to load Indico storage URIs as lists or JSON strings/bytes. Use `text`, `tokens`, and `tables` to specify what not to load.