|
60 | 60 | translate_httpx_error, |
61 | 61 | ) |
62 | 62 | from .models import ( |
| 63 | + ExtractedTextDocument, |
63 | 64 | PdfRestDeletionResponse, |
64 | 65 | PdfRestErrorResponse, |
65 | 66 | PdfRestFile, |
@@ -2403,6 +2404,48 @@ def extract_images( |
2403 | 2404 | timeout=timeout, |
2404 | 2405 | ) |
2405 | 2406 |
|
| 2407 | + def extract_pdf_text( |
| 2408 | + self, |
| 2409 | + file: PdfRestFile | Sequence[PdfRestFile], |
| 2410 | + *, |
| 2411 | + pages: PdfPageSelection | None = None, |
| 2412 | + full_text: Literal["off", "by_page", "document"] = "document", |
| 2413 | + preserve_line_breaks: bool = False, |
| 2414 | + word_style: bool = False, |
| 2415 | + word_coordinates: bool = False, |
| 2416 | + extra_query: Query | None = None, |
| 2417 | + extra_headers: AnyMapping | None = None, |
| 2418 | + extra_body: Body | None = None, |
| 2419 | + timeout: TimeoutTypes | None = None, |
| 2420 | + ) -> ExtractedTextDocument: |
| 2421 | + """Extract text content from a PDF and return parsed JSON results.""" |
| 2422 | + |
| 2423 | + payload: dict[str, Any] = { |
| 2424 | + "files": file, |
| 2425 | + "full_text": full_text, |
| 2426 | + "preserve_line_breaks": preserve_line_breaks, |
| 2427 | + "word_style": word_style, |
| 2428 | + "word_coordinates": word_coordinates, |
| 2429 | + "output_type": "json", |
| 2430 | + } |
| 2431 | + if pages is not None: |
| 2432 | + payload["pages"] = pages |
| 2433 | + |
| 2434 | + validated_payload = ExtractTextPayload.model_validate(payload) |
| 2435 | + request = self.prepare_request( |
| 2436 | + "POST", |
| 2437 | + "/extracted-text", |
| 2438 | + json_body=validated_payload.model_dump( |
| 2439 | + mode="json", by_alias=True, exclude_none=True, exclude_unset=True |
| 2440 | + ), |
| 2441 | + extra_query=extra_query, |
| 2442 | + extra_headers=extra_headers, |
| 2443 | + extra_body=extra_body, |
| 2444 | + timeout=timeout, |
| 2445 | + ) |
| 2446 | + raw_payload = self._send_request(request) |
| 2447 | + return ExtractedTextDocument.model_validate(raw_payload) |
| 2448 | + |
2406 | 2449 | def extract_pdf_text_to_file( |
2407 | 2450 | self, |
2408 | 2451 | file: PdfRestFile | Sequence[PdfRestFile], |
@@ -3606,6 +3649,48 @@ async def extract_images( |
3606 | 3649 | timeout=timeout, |
3607 | 3650 | ) |
3608 | 3651 |
|
| 3652 | + async def extract_pdf_text( |
| 3653 | + self, |
| 3654 | + file: PdfRestFile | Sequence[PdfRestFile], |
| 3655 | + *, |
| 3656 | + pages: PdfPageSelection | None = None, |
| 3657 | + full_text: Literal["off", "by_page", "document"] = "document", |
| 3658 | + preserve_line_breaks: bool = False, |
| 3659 | + word_style: bool = False, |
| 3660 | + word_coordinates: bool = False, |
| 3661 | + extra_query: Query | None = None, |
| 3662 | + extra_headers: AnyMapping | None = None, |
| 3663 | + extra_body: Body | None = None, |
| 3664 | + timeout: TimeoutTypes | None = None, |
| 3665 | + ) -> ExtractedTextDocument: |
| 3666 | + """Extract text content from a PDF and return parsed JSON results.""" |
| 3667 | + |
| 3668 | + payload: dict[str, Any] = { |
| 3669 | + "files": file, |
| 3670 | + "full_text": full_text, |
| 3671 | + "preserve_line_breaks": preserve_line_breaks, |
| 3672 | + "word_style": word_style, |
| 3673 | + "word_coordinates": word_coordinates, |
| 3674 | + "output_type": "json", |
| 3675 | + } |
| 3676 | + if pages is not None: |
| 3677 | + payload["pages"] = pages |
| 3678 | + |
| 3679 | + validated_payload = ExtractTextPayload.model_validate(payload) |
| 3680 | + request = self.prepare_request( |
| 3681 | + "POST", |
| 3682 | + "/extracted-text", |
| 3683 | + json_body=validated_payload.model_dump( |
| 3684 | + mode="json", by_alias=True, exclude_none=True, exclude_unset=True |
| 3685 | + ), |
| 3686 | + extra_query=extra_query, |
| 3687 | + extra_headers=extra_headers, |
| 3688 | + extra_body=extra_body, |
| 3689 | + timeout=timeout, |
| 3690 | + ) |
| 3691 | + raw_payload = await self._send_request(request) |
| 3692 | + return ExtractedTextDocument.model_validate(raw_payload) |
| 3693 | + |
3609 | 3694 | async def extract_pdf_text_to_file( |
3610 | 3695 | self, |
3611 | 3696 | file: PdfRestFile | Sequence[PdfRestFile], |
|
0 commit comments