5959)
6060from .models import (
6161 ConvertToMarkdownResponse ,
62- ExtractImagesResponse ,
6362 ExtractTextResponse ,
6463 PdfRestErrorResponse ,
6564 PdfRestFile ,
@@ -2214,7 +2213,7 @@ def extract_images(
22142213 extra_headers : AnyMapping | None = None ,
22152214 extra_body : Body | None = None ,
22162215 timeout : TimeoutTypes | None = None ,
2217- ) -> ExtractImagesResponse :
2216+ ) -> PdfRestFileBasedResponse :
22182217 """Extract embedded images from a PDF."""
22192218
22202219 payload : dict [str , Any ] = {"files" : file }
@@ -2223,40 +2222,15 @@ def extract_images(
22232222 if output is not None :
22242223 payload ["output" ] = output
22252224
2226- validated_payload = ExtractImagesPayload .model_validate (payload )
2227- request = self .prepare_request (
2228- "POST" ,
2229- "/extracted-images" ,
2230- json_body = validated_payload .model_dump (
2231- mode = "json" , by_alias = True , exclude_none = True , exclude_unset = True
2232- ),
2225+ return self ._post_file_operation (
2226+ endpoint = "/extracted-images" ,
2227+ payload = payload ,
2228+ payload_model = ExtractImagesPayload ,
22332229 extra_query = extra_query ,
22342230 extra_headers = extra_headers ,
22352231 extra_body = extra_body ,
22362232 timeout = timeout ,
22372233 )
2238- raw_payload = self ._send_request (request )
2239- raw_response = PdfRestRawFileResponse .model_validate (raw_payload )
2240- output_ids = raw_response .ids or []
2241- output_files = [
2242- self .fetch_file_info (
2243- str (file_id ),
2244- extra_query = extra_query ,
2245- extra_headers = extra_headers ,
2246- timeout = timeout ,
2247- )
2248- for file_id in output_ids
2249- ]
2250- input_id = raw_response .input_id [0 ] if raw_response .input_id else ""
2251- return ExtractImagesResponse .model_validate (
2252- {
2253- "input_id" : input_id ,
2254- "output_files" : [
2255- file .model_dump (mode = "json" , by_alias = True ) for file in output_files
2256- ],
2257- "warning" : raw_response .warning ,
2258- }
2259- )
22602234
22612235 def extract_text (
22622236 self ,
@@ -2954,7 +2928,7 @@ async def extract_images(
29542928 extra_headers : AnyMapping | None = None ,
29552929 extra_body : Body | None = None ,
29562930 timeout : TimeoutTypes | None = None ,
2957- ) -> ExtractImagesResponse :
2931+ ) -> PdfRestFileBasedResponse :
29582932 """Extract embedded images from a PDF."""
29592933
29602934 payload : dict [str , Any ] = {"files" : file }
@@ -2963,47 +2937,15 @@ async def extract_images(
29632937 if output is not None :
29642938 payload ["output" ] = output
29652939
2966- validated_payload = ExtractImagesPayload .model_validate (payload )
2967- request = self .prepare_request (
2968- "POST" ,
2969- "/extracted-images" ,
2970- json_body = validated_payload .model_dump (
2971- mode = "json" , by_alias = True , exclude_none = True , exclude_unset = True
2972- ),
2940+ return await self ._post_file_operation (
2941+ endpoint = "/extracted-images" ,
2942+ payload = payload ,
2943+ payload_model = ExtractImagesPayload ,
29732944 extra_query = extra_query ,
29742945 extra_headers = extra_headers ,
29752946 extra_body = extra_body ,
29762947 timeout = timeout ,
29772948 )
2978- raw_payload = await self ._send_request (request )
2979- raw_response = PdfRestRawFileResponse .model_validate (raw_payload )
2980- output_ids = raw_response .ids or []
2981- semaphore = asyncio .Semaphore (DEFAULT_FILE_INFO_CONCURRENCY )
2982-
2983- async def fetch (file_id : str ) -> PdfRestFile :
2984- async with semaphore :
2985- return await self .fetch_file_info (
2986- file_id ,
2987- extra_query = extra_query ,
2988- extra_headers = extra_headers ,
2989- timeout = timeout ,
2990- )
2991-
2992- output_files : list [PdfRestFile ] = []
2993- if output_ids :
2994- output_files = list (
2995- await asyncio .gather (* (fetch (fid ) for fid in output_ids ))
2996- )
2997- input_id = raw_response .input_id [0 ] if raw_response .input_id else ""
2998- return ExtractImagesResponse .model_validate (
2999- {
3000- "input_id" : input_id ,
3001- "output_files" : [
3002- file .model_dump (mode = "json" , by_alias = True ) for file in output_files
3003- ],
3004- "warning" : raw_response .warning ,
3005- }
3006- )
30072949
30082950 async def extract_text (
30092951 self ,
0 commit comments