openparser-sdk 0.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openparser/__init__.py +54 -0
- openparser/_files.py +43 -0
- openparser/_generated/__init__.py +8 -0
- openparser/_generated/api/__init__.py +1 -0
- openparser/_generated/api/extract/__init__.py +1 -0
- openparser/_generated/api/extract/extract_async.py +280 -0
- openparser/_generated/api/extract/extract_batch.py +284 -0
- openparser/_generated/api/extract/extract_sync.py +315 -0
- openparser/_generated/api/extract/suggest_schema.py +260 -0
- openparser/_generated/api/files/__init__.py +1 -0
- openparser/_generated/api/files/create_file.py +237 -0
- openparser/_generated/api/files/delete_file.py +200 -0
- openparser/_generated/api/files/get_file.py +200 -0
- openparser/_generated/api/files/get_file_content.py +198 -0
- openparser/_generated/api/jobs/__init__.py +1 -0
- openparser/_generated/api/jobs/get_job.py +261 -0
- openparser/_generated/api/jobs/get_job_result.py +305 -0
- openparser/_generated/api/jobs/get_job_source.py +233 -0
- openparser/_generated/api/jobs/list_jobs.py +340 -0
- openparser/_generated/api/models/__init__.py +1 -0
- openparser/_generated/api/models/list_llm_models.py +288 -0
- openparser/_generated/api/models/list_ocr_models.py +184 -0
- openparser/_generated/api/parse/__init__.py +1 -0
- openparser/_generated/api/parse/parse_async.py +316 -0
- openparser/_generated/api/parse/parse_batch.py +280 -0
- openparser/_generated/api/parse/parse_sync.py +369 -0
- openparser/_generated/api/pipelines/__init__.py +1 -0
- openparser/_generated/api/pipelines/create_extraction_pipeline.py +242 -0
- openparser/_generated/api/pipelines/delete_extraction_pipeline.py +212 -0
- openparser/_generated/api/pipelines/get_extraction_pipeline.py +212 -0
- openparser/_generated/api/pipelines/list_extraction_pipelines.py +180 -0
- openparser/_generated/api/pipelines/update_extraction_pipeline.py +258 -0
- openparser/_generated/client.py +270 -0
- openparser/_generated/errors.py +14 -0
- openparser/_generated/models/__init__.py +261 -0
- openparser/_generated/models/batch_child_page.py +97 -0
- openparser/_generated/models/batch_child_summary.py +195 -0
- openparser/_generated/models/batch_job_accepted.py +139 -0
- openparser/_generated/models/batch_job_accepted_operation.py +8 -0
- openparser/_generated/models/batch_summary_counts.py +97 -0
- openparser/_generated/models/bounding_box.py +82 -0
- openparser/_generated/models/chunk_provenance_span.py +97 -0
- openparser/_generated/models/content_kind.py +10 -0
- openparser/_generated/models/create_extraction_pipeline_request.py +177 -0
- openparser/_generated/models/create_extraction_pipeline_request_grounding.py +8 -0
- openparser/_generated/models/create_extraction_pipeline_request_llm_options.py +84 -0
- openparser/_generated/models/create_extraction_pipeline_request_llm_options_reasoning_effort_type_1.py +13 -0
- openparser/_generated/models/create_extraction_pipeline_request_ocr_options.py +78 -0
- openparser/_generated/models/create_extraction_pipeline_request_schema.py +68 -0
- openparser/_generated/models/create_file_body.py +78 -0
- openparser/_generated/models/delete_extraction_pipeline_response.py +66 -0
- openparser/_generated/models/delete_file_response.py +57 -0
- openparser/_generated/models/error_body.py +106 -0
- openparser/_generated/models/error_body_details.py +65 -0
- openparser/_generated/models/error_response.py +65 -0
- openparser/_generated/models/extract_async_body.py +136 -0
- openparser/_generated/models/extract_batch_body.py +143 -0
- openparser/_generated/models/extract_batch_item.py +207 -0
- openparser/_generated/models/extract_batch_item_grounding.py +8 -0
- openparser/_generated/models/extract_batch_item_llm_options.py +84 -0
- openparser/_generated/models/extract_batch_item_llm_options_reasoning_effort_type_1.py +13 -0
- openparser/_generated/models/extract_batch_item_ocr_options.py +78 -0
- openparser/_generated/models/extract_batch_item_schema.py +65 -0
- openparser/_generated/models/extract_batch_request.py +99 -0
- openparser/_generated/models/extract_batch_request_items_item.py +201 -0
- openparser/_generated/models/extract_batch_request_items_item_grounding.py +8 -0
- openparser/_generated/models/extract_batch_request_items_item_llm_options.py +84 -0
- openparser/_generated/models/extract_batch_request_items_item_llm_options_reasoning_effort_type_1.py +13 -0
- openparser/_generated/models/extract_batch_request_items_item_ocr_options.py +78 -0
- openparser/_generated/models/extract_batch_request_items_item_schema.py +65 -0
- openparser/_generated/models/extract_batch_request_output_format.py +8 -0
- openparser/_generated/models/extract_request.py +226 -0
- openparser/_generated/models/extract_request_grounding.py +8 -0
- openparser/_generated/models/extract_request_llm_options.py +84 -0
- openparser/_generated/models/extract_request_llm_options_reasoning_effort_type_1.py +13 -0
- openparser/_generated/models/extract_request_ocr_options.py +78 -0
- openparser/_generated/models/extract_request_output_format.py +8 -0
- openparser/_generated/models/extract_request_schema.py +65 -0
- openparser/_generated/models/extract_sync_body.py +136 -0
- openparser/_generated/models/extraction_attempt.py +122 -0
- openparser/_generated/models/extraction_attempt_kind.py +8 -0
- openparser/_generated/models/extraction_attempt_status.py +9 -0
- openparser/_generated/models/extraction_chunk.py +184 -0
- openparser/_generated/models/extraction_citation.py +169 -0
- openparser/_generated/models/extraction_citation_granularity.py +8 -0
- openparser/_generated/models/extraction_citation_source_type.py +16 -0
- openparser/_generated/models/extraction_grounding_field.py +102 -0
- openparser/_generated/models/extraction_grounding_mode.py +8 -0
- openparser/_generated/models/extraction_grounding_result.py +87 -0
- openparser/_generated/models/extraction_pipeline.py +201 -0
- openparser/_generated/models/extraction_pipeline_list_response.py +76 -0
- openparser/_generated/models/extraction_pipeline_llm_options.py +84 -0
- openparser/_generated/models/extraction_pipeline_llm_options_reasoning_effort_type_0_type_1.py +13 -0
- openparser/_generated/models/extraction_pipeline_ocr_options.py +73 -0
- openparser/_generated/models/extraction_pipeline_schema.py +67 -0
- openparser/_generated/models/extraction_terminal_result.py +206 -0
- openparser/_generated/models/extraction_terminal_result_reasoning_effort_type_0.py +13 -0
- openparser/_generated/models/extraction_usage_totals.py +80 -0
- openparser/_generated/models/job.py +437 -0
- openparser/_generated/models/job_accepted.py +131 -0
- openparser/_generated/models/job_accepted_operation.py +8 -0
- openparser/_generated/models/job_extraction_schema.py +65 -0
- openparser/_generated/models/job_failure.py +98 -0
- openparser/_generated/models/job_failure_details.py +65 -0
- openparser/_generated/models/job_list_response.py +91 -0
- openparser/_generated/models/job_operation.py +10 -0
- openparser/_generated/models/job_progress.py +68 -0
- openparser/_generated/models/job_related_extractions_item.py +145 -0
- openparser/_generated/models/job_status.py +11 -0
- openparser/_generated/models/job_summary.py +264 -0
- openparser/_generated/models/json_schema_object.py +66 -0
- openparser/_generated/models/list_llm_models_mode.py +8 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry.py +257 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry_pricing.py +76 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0.py +134 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0_default_effort_type_0.py +13 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry_reasoning_type_0_supported_efforts_type_0_item.py +13 -0
- openparser/_generated/models/ocr_llm_model_catalog_entry_recommendation.py +8 -0
- openparser/_generated/models/ocr_llm_models_response.py +150 -0
- openparser/_generated/models/ocr_llm_models_response_mode.py +8 -0
- openparser/_generated/models/ocr_model.py +7 -0
- openparser/_generated/models/ocr_model_catalog_entry.py +131 -0
- openparser/_generated/models/ocr_model_catalog_entry_availability.py +9 -0
- openparser/_generated/models/ocr_model_catalog_entry_capabilities.py +97 -0
- openparser/_generated/models/ocr_model_catalog_entry_capabilities_options.py +73 -0
- openparser/_generated/models/ocr_model_catalog_entry_option_defaults.py +73 -0
- openparser/_generated/models/ocr_model_catalog_entry_pricing.py +68 -0
- openparser/_generated/models/ocr_models_response.py +76 -0
- openparser/_generated/models/ocr_output_format.py +8 -0
- openparser/_generated/models/paddle_raw_profile.py +76 -0
- openparser/_generated/models/paddle_raw_profile_options.py +115 -0
- openparser/_generated/models/page_block.py +332 -0
- openparser/_generated/models/page_block_kind.py +9 -0
- openparser/_generated/models/page_block_polygon_type_0_item.py +65 -0
- openparser/_generated/models/parse_async_body.py +133 -0
- openparser/_generated/models/parse_batch_body.py +143 -0
- openparser/_generated/models/parse_batch_item.py +109 -0
- openparser/_generated/models/parse_batch_item_ocr_options.py +78 -0
- openparser/_generated/models/parse_batch_request.py +100 -0
- openparser/_generated/models/parse_batch_request_items_item.py +108 -0
- openparser/_generated/models/parse_batch_request_items_item_ocr_options.py +78 -0
- openparser/_generated/models/parse_batch_request_output_format.py +8 -0
- openparser/_generated/models/parse_request.py +112 -0
- openparser/_generated/models/parse_request_ocr_options.py +78 -0
- openparser/_generated/models/parse_request_output_format.py +8 -0
- openparser/_generated/models/parse_sync_body.py +133 -0
- openparser/_generated/models/parsed_document.py +187 -0
- openparser/_generated/models/public_file.py +117 -0
- openparser/_generated/models/raw_parse_result.py +110 -0
- openparser/_generated/models/raw_parse_result_result.py +65 -0
- openparser/_generated/models/region.py +224 -0
- openparser/_generated/models/region_content.py +155 -0
- openparser/_generated/models/region_polygon_type_0_item.py +65 -0
- openparser/_generated/models/region_type.py +16 -0
- openparser/_generated/models/suggest_schema_request.py +69 -0
- openparser/_generated/models/suggest_schema_response.py +74 -0
- openparser/_generated/models/suggest_schema_response_schema.py +66 -0
- openparser/_generated/models/update_extraction_pipeline_request.py +227 -0
- openparser/_generated/models/update_extraction_pipeline_request_grounding.py +8 -0
- openparser/_generated/models/update_extraction_pipeline_request_llm_options_type_0.py +84 -0
- openparser/_generated/models/update_extraction_pipeline_request_llm_options_type_0_reasoning_effort_type_1.py +13 -0
- openparser/_generated/models/update_extraction_pipeline_request_ocr_options_type_0.py +78 -0
- openparser/_generated/models/update_extraction_pipeline_request_schema.py +67 -0
- openparser/_generated/py.typed +1 -0
- openparser/_generated/types.py +53 -0
- openparser/_telemetry.py +34 -0
- openparser/client.py +541 -0
- openparser/errors.py +172 -0
- openparser/py.typed +0 -0
- openparser_sdk-0.0.1.dist-info/METADATA +178 -0
- openparser_sdk-0.0.1.dist-info/RECORD +173 -0
- openparser_sdk-0.0.1.dist-info/WHEEL +4 -0
- openparser_sdk-0.0.1.dist-info/licenses/LICENSE +201 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
import json
|
|
9
|
+
from .. import types
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
|
|
13
|
+
from ..types import File, FileTypes
|
|
14
|
+
from ..types import UNSET, Unset
|
|
15
|
+
from io import BytesIO
|
|
16
|
+
from typing import cast
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from ..models.parse_request import ParseRequest
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
T = TypeVar("T", bound="ParseSyncBody")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@_attrs_define
|
|
30
|
+
class ParseSyncBody:
|
|
31
|
+
"""
|
|
32
|
+
Attributes:
|
|
33
|
+
request (ParseRequest):
|
|
34
|
+
file (File | Unset): Source document bytes (PDF, PNG, or JPEG). Required unless `request.file_id`
|
|
35
|
+
references an existing Eigenpal reusable file.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
request: ParseRequest
|
|
39
|
+
file: File | Unset = UNSET
|
|
40
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def to_dict(self) -> dict[str, Any]:
|
|
47
|
+
from ..models.parse_request import ParseRequest
|
|
48
|
+
request = self.request.to_dict()
|
|
49
|
+
|
|
50
|
+
file: FileTypes | Unset = UNSET
|
|
51
|
+
if not isinstance(self.file, Unset):
|
|
52
|
+
file = self.file.to_tuple()
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
field_dict: dict[str, Any] = {}
|
|
57
|
+
field_dict.update(self.additional_properties)
|
|
58
|
+
field_dict.update({
|
|
59
|
+
"request": request,
|
|
60
|
+
})
|
|
61
|
+
if file is not UNSET:
|
|
62
|
+
field_dict["file"] = file
|
|
63
|
+
|
|
64
|
+
return field_dict
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def to_multipart(self) -> types.RequestFiles:
|
|
68
|
+
from ..models.parse_request import ParseRequest
|
|
69
|
+
files: types.RequestFiles = []
|
|
70
|
+
|
|
71
|
+
files.append(("request", (None, json.dumps( self.request.to_dict()).encode(), "application/json")))
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
if not isinstance(self.file, Unset):
|
|
76
|
+
files.append(("file", self.file.to_tuple()))
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
for prop_name, prop in self.additional_properties.items():
|
|
82
|
+
files.append((prop_name, (None, str(prop).encode(), "text/plain")))
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
return files
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@classmethod
|
|
90
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
91
|
+
from ..models.parse_request import ParseRequest
|
|
92
|
+
d = dict(src_dict)
|
|
93
|
+
request = ParseRequest.from_dict(d.pop("request"))
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
_file = d.pop("file", UNSET)
|
|
99
|
+
file: File | Unset
|
|
100
|
+
if isinstance(_file, Unset):
|
|
101
|
+
file = UNSET
|
|
102
|
+
else:
|
|
103
|
+
file = File(
|
|
104
|
+
payload = BytesIO(_file)
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
parse_sync_body = cls(
|
|
111
|
+
request=request,
|
|
112
|
+
file=file,
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
parse_sync_body.additional_properties = d
|
|
117
|
+
return parse_sync_body
|
|
118
|
+
|
|
119
|
+
@property
|
|
120
|
+
def additional_keys(self) -> list[str]:
|
|
121
|
+
return list(self.additional_properties.keys())
|
|
122
|
+
|
|
123
|
+
def __getitem__(self, key: str) -> Any:
|
|
124
|
+
return self.additional_properties[key]
|
|
125
|
+
|
|
126
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
127
|
+
self.additional_properties[key] = value
|
|
128
|
+
|
|
129
|
+
def __delitem__(self, key: str) -> None:
|
|
130
|
+
del self.additional_properties[key]
|
|
131
|
+
|
|
132
|
+
def __contains__(self, key: str) -> bool:
|
|
133
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from typing import cast
|
|
12
|
+
from typing import Literal, cast
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from ..models.extraction_chunk import ExtractionChunk
|
|
16
|
+
from ..models.page_block import PageBlock
|
|
17
|
+
from ..models.region import Region
|
|
18
|
+
from ..models.region_content import RegionContent
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
T = TypeVar("T", bound="ParsedDocument")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@_attrs_define
|
|
29
|
+
class ParsedDocument:
|
|
30
|
+
""" Versioned OpenParser `openparser@1` document representation. `blocks` is the primary
|
|
31
|
+
stable interface; `regions`, `contents`, and `chunks` preserve provider-neutral geometry,
|
|
32
|
+
confidence, labels, provenance, and extraction views. Compatible optional fields may be
|
|
33
|
+
added within version 1; breaking representation changes create a new output-format version.
|
|
34
|
+
|
|
35
|
+
Attributes:
|
|
36
|
+
output_format (Literal['openparser@1']):
|
|
37
|
+
document_id (str):
|
|
38
|
+
page_count (int): Authoritative successfully parsed page count from the HPS/parse result. Customer
|
|
39
|
+
page billing uses this value only when a successful terminal result is published.
|
|
40
|
+
markdown (str): Derived markdown rendered from ordered blocks.
|
|
41
|
+
blocks (list[PageBlock]):
|
|
42
|
+
regions (list[Region]):
|
|
43
|
+
contents (list[RegionContent]):
|
|
44
|
+
chunks (list[ExtractionChunk]):
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
output_format: Literal['openparser@1']
|
|
48
|
+
document_id: str
|
|
49
|
+
page_count: int
|
|
50
|
+
markdown: str
|
|
51
|
+
blocks: list[PageBlock]
|
|
52
|
+
regions: list[Region]
|
|
53
|
+
contents: list[RegionContent]
|
|
54
|
+
chunks: list[ExtractionChunk]
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def to_dict(self) -> dict[str, Any]:
|
|
61
|
+
from ..models.extraction_chunk import ExtractionChunk
|
|
62
|
+
from ..models.page_block import PageBlock
|
|
63
|
+
from ..models.region import Region
|
|
64
|
+
from ..models.region_content import RegionContent
|
|
65
|
+
output_format = self.output_format
|
|
66
|
+
|
|
67
|
+
document_id = self.document_id
|
|
68
|
+
|
|
69
|
+
page_count = self.page_count
|
|
70
|
+
|
|
71
|
+
markdown = self.markdown
|
|
72
|
+
|
|
73
|
+
blocks = []
|
|
74
|
+
for blocks_item_data in self.blocks:
|
|
75
|
+
blocks_item = blocks_item_data.to_dict()
|
|
76
|
+
blocks.append(blocks_item)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
regions = []
|
|
81
|
+
for regions_item_data in self.regions:
|
|
82
|
+
regions_item = regions_item_data.to_dict()
|
|
83
|
+
regions.append(regions_item)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
contents = []
|
|
88
|
+
for contents_item_data in self.contents:
|
|
89
|
+
contents_item = contents_item_data.to_dict()
|
|
90
|
+
contents.append(contents_item)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
chunks = []
|
|
95
|
+
for chunks_item_data in self.chunks:
|
|
96
|
+
chunks_item = chunks_item_data.to_dict()
|
|
97
|
+
chunks.append(chunks_item)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
field_dict: dict[str, Any] = {}
|
|
103
|
+
|
|
104
|
+
field_dict.update({
|
|
105
|
+
"output_format": output_format,
|
|
106
|
+
"document_id": document_id,
|
|
107
|
+
"page_count": page_count,
|
|
108
|
+
"markdown": markdown,
|
|
109
|
+
"blocks": blocks,
|
|
110
|
+
"regions": regions,
|
|
111
|
+
"contents": contents,
|
|
112
|
+
"chunks": chunks,
|
|
113
|
+
})
|
|
114
|
+
|
|
115
|
+
return field_dict
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@classmethod
|
|
120
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
121
|
+
from ..models.extraction_chunk import ExtractionChunk
|
|
122
|
+
from ..models.page_block import PageBlock
|
|
123
|
+
from ..models.region import Region
|
|
124
|
+
from ..models.region_content import RegionContent
|
|
125
|
+
d = dict(src_dict)
|
|
126
|
+
output_format = cast(Literal['openparser@1'] , d.pop("output_format"))
|
|
127
|
+
if output_format != 'openparser@1':
|
|
128
|
+
raise ValueError(f"output_format must match const 'openparser@1', got '{output_format}'")
|
|
129
|
+
|
|
130
|
+
document_id = d.pop("document_id")
|
|
131
|
+
|
|
132
|
+
page_count = d.pop("page_count")
|
|
133
|
+
|
|
134
|
+
markdown = d.pop("markdown")
|
|
135
|
+
|
|
136
|
+
blocks = []
|
|
137
|
+
_blocks = d.pop("blocks")
|
|
138
|
+
for blocks_item_data in (_blocks):
|
|
139
|
+
blocks_item = PageBlock.from_dict(blocks_item_data)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
blocks.append(blocks_item)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
regions = []
|
|
147
|
+
_regions = d.pop("regions")
|
|
148
|
+
for regions_item_data in (_regions):
|
|
149
|
+
regions_item = Region.from_dict(regions_item_data)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
regions.append(regions_item)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
contents = []
|
|
157
|
+
_contents = d.pop("contents")
|
|
158
|
+
for contents_item_data in (_contents):
|
|
159
|
+
contents_item = RegionContent.from_dict(contents_item_data)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
contents.append(contents_item)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
chunks = []
|
|
167
|
+
_chunks = d.pop("chunks")
|
|
168
|
+
for chunks_item_data in (_chunks):
|
|
169
|
+
chunks_item = ExtractionChunk.from_dict(chunks_item_data)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
chunks.append(chunks_item)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
parsed_document = cls(
|
|
177
|
+
output_format=output_format,
|
|
178
|
+
document_id=document_id,
|
|
179
|
+
page_count=page_count,
|
|
180
|
+
markdown=markdown,
|
|
181
|
+
blocks=blocks,
|
|
182
|
+
regions=regions,
|
|
183
|
+
contents=contents,
|
|
184
|
+
chunks=chunks,
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
return parsed_document
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from dateutil.parser import isoparse
|
|
12
|
+
from typing import cast
|
|
13
|
+
import datetime
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
T = TypeVar("T", bound="PublicFile")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@_attrs_define
|
|
25
|
+
class PublicFile:
|
|
26
|
+
"""
|
|
27
|
+
Attributes:
|
|
28
|
+
id (str):
|
|
29
|
+
filename (str):
|
|
30
|
+
content_type (None | str):
|
|
31
|
+
size (int | None):
|
|
32
|
+
purpose (None):
|
|
33
|
+
created_at (datetime.datetime):
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
id: str
|
|
37
|
+
filename: str
|
|
38
|
+
content_type: None | str
|
|
39
|
+
size: int | None
|
|
40
|
+
purpose: None
|
|
41
|
+
created_at: datetime.datetime
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def to_dict(self) -> dict[str, Any]:
|
|
48
|
+
id = self.id
|
|
49
|
+
|
|
50
|
+
filename = self.filename
|
|
51
|
+
|
|
52
|
+
content_type: None | str
|
|
53
|
+
content_type = self.content_type
|
|
54
|
+
|
|
55
|
+
size: int | None
|
|
56
|
+
size = self.size
|
|
57
|
+
|
|
58
|
+
purpose = self.purpose
|
|
59
|
+
|
|
60
|
+
created_at = self.created_at.isoformat()
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
field_dict: dict[str, Any] = {}
|
|
64
|
+
|
|
65
|
+
field_dict.update({
|
|
66
|
+
"id": id,
|
|
67
|
+
"filename": filename,
|
|
68
|
+
"contentType": content_type,
|
|
69
|
+
"size": size,
|
|
70
|
+
"purpose": purpose,
|
|
71
|
+
"createdAt": created_at,
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
return field_dict
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
@classmethod
|
|
79
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
80
|
+
d = dict(src_dict)
|
|
81
|
+
id = d.pop("id")
|
|
82
|
+
|
|
83
|
+
filename = d.pop("filename")
|
|
84
|
+
|
|
85
|
+
def _parse_content_type(data: object) -> None | str:
|
|
86
|
+
if data is None:
|
|
87
|
+
return data
|
|
88
|
+
return cast(None | str, data)
|
|
89
|
+
|
|
90
|
+
content_type = _parse_content_type(d.pop("contentType"))
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def _parse_size(data: object) -> int | None:
|
|
94
|
+
if data is None:
|
|
95
|
+
return data
|
|
96
|
+
return cast(int | None, data)
|
|
97
|
+
|
|
98
|
+
size = _parse_size(d.pop("size"))
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
purpose = d.pop("purpose")
|
|
102
|
+
|
|
103
|
+
created_at = isoparse(d.pop("createdAt"))
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
public_file = cls(
|
|
109
|
+
id=id,
|
|
110
|
+
filename=filename,
|
|
111
|
+
content_type=content_type,
|
|
112
|
+
size=size,
|
|
113
|
+
purpose=purpose,
|
|
114
|
+
created_at=created_at,
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
return public_file
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from typing import cast
|
|
12
|
+
from typing import Literal, cast
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from ..models.paddle_raw_profile import PaddleRawProfile
|
|
16
|
+
from ..models.raw_parse_result_result import RawParseResultResult
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
T = TypeVar("T", bound="RawParseResult")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@_attrs_define
|
|
27
|
+
class RawParseResult:
|
|
28
|
+
"""
|
|
29
|
+
Attributes:
|
|
30
|
+
output_format (Literal['raw']):
|
|
31
|
+
provider (Literal['paddle']):
|
|
32
|
+
model (Literal['paddleocr-vl-1.6']):
|
|
33
|
+
profile (PaddleRawProfile):
|
|
34
|
+
result (RawParseResultResult):
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
output_format: Literal['raw']
|
|
38
|
+
provider: Literal['paddle']
|
|
39
|
+
model: Literal['paddleocr-vl-1.6']
|
|
40
|
+
profile: PaddleRawProfile
|
|
41
|
+
result: RawParseResultResult
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def to_dict(self) -> dict[str, Any]:
|
|
48
|
+
from ..models.paddle_raw_profile import PaddleRawProfile
|
|
49
|
+
from ..models.raw_parse_result_result import RawParseResultResult
|
|
50
|
+
output_format = self.output_format
|
|
51
|
+
|
|
52
|
+
provider = self.provider
|
|
53
|
+
|
|
54
|
+
model = self.model
|
|
55
|
+
|
|
56
|
+
profile = self.profile.to_dict()
|
|
57
|
+
|
|
58
|
+
result = self.result.to_dict()
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
field_dict: dict[str, Any] = {}
|
|
62
|
+
|
|
63
|
+
field_dict.update({
|
|
64
|
+
"output_format": output_format,
|
|
65
|
+
"provider": provider,
|
|
66
|
+
"model": model,
|
|
67
|
+
"profile": profile,
|
|
68
|
+
"result": result,
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
return field_dict
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
@classmethod
|
|
76
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
77
|
+
from ..models.paddle_raw_profile import PaddleRawProfile
|
|
78
|
+
from ..models.raw_parse_result_result import RawParseResultResult
|
|
79
|
+
d = dict(src_dict)
|
|
80
|
+
output_format = cast(Literal['raw'] , d.pop("output_format"))
|
|
81
|
+
if output_format != 'raw':
|
|
82
|
+
raise ValueError(f"output_format must match const 'raw', got '{output_format}'")
|
|
83
|
+
|
|
84
|
+
provider = cast(Literal['paddle'] , d.pop("provider"))
|
|
85
|
+
if provider != 'paddle':
|
|
86
|
+
raise ValueError(f"provider must match const 'paddle', got '{provider}'")
|
|
87
|
+
|
|
88
|
+
model = cast(Literal['paddleocr-vl-1.6'] , d.pop("model"))
|
|
89
|
+
if model != 'paddleocr-vl-1.6':
|
|
90
|
+
raise ValueError(f"model must match const 'paddleocr-vl-1.6', got '{model}'")
|
|
91
|
+
|
|
92
|
+
profile = PaddleRawProfile.from_dict(d.pop("profile"))
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
result = RawParseResultResult.from_dict(d.pop("result"))
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
raw_parse_result = cls(
|
|
103
|
+
output_format=output_format,
|
|
104
|
+
provider=provider,
|
|
105
|
+
model=model,
|
|
106
|
+
profile=profile,
|
|
107
|
+
result=result,
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
return raw_parse_result
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
T = TypeVar("T", bound="RawParseResultResult")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@_attrs_define
|
|
22
|
+
class RawParseResultResult:
|
|
23
|
+
"""
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def to_dict(self) -> dict[str, Any]:
|
|
33
|
+
|
|
34
|
+
field_dict: dict[str, Any] = {}
|
|
35
|
+
field_dict.update(self.additional_properties)
|
|
36
|
+
|
|
37
|
+
return field_dict
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
43
|
+
d = dict(src_dict)
|
|
44
|
+
raw_parse_result_result = cls(
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
raw_parse_result_result.additional_properties = d
|
|
49
|
+
return raw_parse_result_result
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def additional_keys(self) -> list[str]:
|
|
53
|
+
return list(self.additional_properties.keys())
|
|
54
|
+
|
|
55
|
+
def __getitem__(self, key: str) -> Any:
|
|
56
|
+
return self.additional_properties[key]
|
|
57
|
+
|
|
58
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
59
|
+
self.additional_properties[key] = value
|
|
60
|
+
|
|
61
|
+
def __delitem__(self, key: str) -> None:
|
|
62
|
+
del self.additional_properties[key]
|
|
63
|
+
|
|
64
|
+
def __contains__(self, key: str) -> bool:
|
|
65
|
+
return key in self.additional_properties
|