/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. * @generated-id: 0ba6aeaa0fc5 */ import * as z from "zod/v4"; import { remap as remap$ } from "../../lib/primitives.js"; import { ClosedEnum } from "../../types/enums.js"; import { smartUnion } from "../../types/smartUnion.js"; import { DocumentURLChunk, DocumentURLChunk$Outbound, DocumentURLChunk$outboundSchema, } from "./documenturlchunk.js"; import { FileChunk, FileChunk$Outbound, FileChunk$outboundSchema, } from "./filechunk.js"; import { ImageURLChunk, ImageURLChunk$Outbound, ImageURLChunk$outboundSchema, } from "./imageurlchunk.js"; import { ResponseFormat, ResponseFormat$Outbound, ResponseFormat$outboundSchema, } from "./responseformat.js"; /** * Document to run OCR on */ export type Document = FileChunk | DocumentURLChunk | ImageURLChunk; export const TableFormat = { Markdown: "markdown", Html: "html", } as const; export type TableFormat = ClosedEnum; export type OCRRequest = { model: string | null; id?: string | undefined; /** * Document to run OCR on */ document: FileChunk | DocumentURLChunk | ImageURLChunk; /** * Specific pages user wants to process in various formats: single number, range, or list of both. Starts from 0 */ pages?: Array | null | undefined; /** * Include image URLs in response */ includeImageBase64?: boolean | null | undefined; /** * Max images to extract */ imageLimit?: number | null | undefined; /** * Minimum height and width of image to extract */ imageMinSize?: number | null | undefined; /** * Structured output class for extracting useful information from each extracted bounding box / image from document. Only json_schema is valid for this field */ bboxAnnotationFormat?: ResponseFormat | null | undefined; /** * Structured output class for extracting useful information from the entire document. Only json_schema is valid for this field */ documentAnnotationFormat?: ResponseFormat | null | undefined; /** * Optional prompt to guide the model in extracting structured output from the entire document. A document_annotation_format must be provided. */ documentAnnotationPrompt?: string | null | undefined; tableFormat?: TableFormat | null | undefined; extractHeader?: boolean | undefined; extractFooter?: boolean | undefined; }; /** @internal */ export type Document$Outbound = | FileChunk$Outbound | DocumentURLChunk$Outbound | ImageURLChunk$Outbound; /** @internal */ export const Document$outboundSchema: z.ZodType = smartUnion([ FileChunk$outboundSchema, DocumentURLChunk$outboundSchema, ImageURLChunk$outboundSchema, ]); export function documentToJSON(document: Document): string { return JSON.stringify(Document$outboundSchema.parse(document)); } /** @internal */ export const TableFormat$outboundSchema: z.ZodEnum = z.enum( TableFormat, ); /** @internal */ export type OCRRequest$Outbound = { model: string | null; id?: string | undefined; document: | FileChunk$Outbound | DocumentURLChunk$Outbound | ImageURLChunk$Outbound; pages?: Array | null | undefined; include_image_base64?: boolean | null | undefined; image_limit?: number | null | undefined; image_min_size?: number | null | undefined; bbox_annotation_format?: ResponseFormat$Outbound | null | undefined; document_annotation_format?: ResponseFormat$Outbound | null | undefined; document_annotation_prompt?: string | null | undefined; table_format?: string | null | undefined; extract_header?: boolean | undefined; extract_footer?: boolean | undefined; }; /** @internal */ export const OCRRequest$outboundSchema: z.ZodType< OCRRequest$Outbound, OCRRequest > = z.object({ model: z.nullable(z.string()), id: z.string().optional(), document: smartUnion([ FileChunk$outboundSchema, DocumentURLChunk$outboundSchema, ImageURLChunk$outboundSchema, ]), pages: z.nullable(z.array(z.int())).optional(), includeImageBase64: z.nullable(z.boolean()).optional(), imageLimit: z.nullable(z.int()).optional(), imageMinSize: z.nullable(z.int()).optional(), bboxAnnotationFormat: z.nullable(ResponseFormat$outboundSchema).optional(), documentAnnotationFormat: z.nullable(ResponseFormat$outboundSchema) .optional(), documentAnnotationPrompt: z.nullable(z.string()).optional(), tableFormat: z.nullable(TableFormat$outboundSchema).optional(), extractHeader: z.boolean().optional(), extractFooter: z.boolean().optional(), }).transform((v) => { return remap$(v, { includeImageBase64: "include_image_base64", imageLimit: "image_limit", imageMinSize: "image_min_size", bboxAnnotationFormat: "bbox_annotation_format", documentAnnotationFormat: "document_annotation_format", documentAnnotationPrompt: "document_annotation_prompt", tableFormat: "table_format", extractHeader: "extract_header", extractFooter: "extract_footer", }); }); export function ocrRequestToJSON(ocrRequest: OCRRequest): string { return JSON.stringify(OCRRequest$outboundSchema.parse(ocrRequest)); }