docground 0.1.0

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.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +217 -0
  3. package/dist/src/compiler/zod-compiler.d.ts +31 -0
  4. package/dist/src/compiler/zod-compiler.d.ts.map +1 -0
  5. package/dist/src/compiler/zod-compiler.js +150 -0
  6. package/dist/src/compiler/zod-compiler.js.map +1 -0
  7. package/dist/src/core/extractor.d.ts +17 -0
  8. package/dist/src/core/extractor.d.ts.map +1 -0
  9. package/dist/src/core/extractor.js +268 -0
  10. package/dist/src/core/extractor.js.map +1 -0
  11. package/dist/src/core/types.d.ts +102 -0
  12. package/dist/src/core/types.d.ts.map +1 -0
  13. package/dist/src/core/types.js +2 -0
  14. package/dist/src/core/types.js.map +1 -0
  15. package/dist/src/grounding/bbox.d.ts +40 -0
  16. package/dist/src/grounding/bbox.d.ts.map +1 -0
  17. package/dist/src/grounding/bbox.js +98 -0
  18. package/dist/src/grounding/bbox.js.map +1 -0
  19. package/dist/src/index.d.ts +16 -0
  20. package/dist/src/index.d.ts.map +1 -0
  21. package/dist/src/index.js +16 -0
  22. package/dist/src/index.js.map +1 -0
  23. package/dist/src/normalizers/currency.d.ts +14 -0
  24. package/dist/src/normalizers/currency.d.ts.map +1 -0
  25. package/dist/src/normalizers/currency.js +96 -0
  26. package/dist/src/normalizers/currency.js.map +1 -0
  27. package/dist/src/normalizers/tabular.d.ts +16 -0
  28. package/dist/src/normalizers/tabular.d.ts.map +1 -0
  29. package/dist/src/normalizers/tabular.js +81 -0
  30. package/dist/src/normalizers/tabular.js.map +1 -0
  31. package/dist/src/providers/anthropic-provider.d.ts +13 -0
  32. package/dist/src/providers/anthropic-provider.d.ts.map +1 -0
  33. package/dist/src/providers/anthropic-provider.js +62 -0
  34. package/dist/src/providers/anthropic-provider.js.map +1 -0
  35. package/dist/src/providers/factory.d.ts +11 -0
  36. package/dist/src/providers/factory.d.ts.map +1 -0
  37. package/dist/src/providers/factory.js +32 -0
  38. package/dist/src/providers/factory.js.map +1 -0
  39. package/dist/src/providers/gemini-provider.d.ts +13 -0
  40. package/dist/src/providers/gemini-provider.d.ts.map +1 -0
  41. package/dist/src/providers/gemini-provider.js +48 -0
  42. package/dist/src/providers/gemini-provider.js.map +1 -0
  43. package/dist/src/providers/openai-provider.d.ts +14 -0
  44. package/dist/src/providers/openai-provider.d.ts.map +1 -0
  45. package/dist/src/providers/openai-provider.js +48 -0
  46. package/dist/src/providers/openai-provider.js.map +1 -0
  47. package/dist/src/providers/types.d.ts +45 -0
  48. package/dist/src/providers/types.d.ts.map +1 -0
  49. package/dist/src/providers/types.js +2 -0
  50. package/dist/src/providers/types.js.map +1 -0
  51. package/dist/src/stitcher/table-stitcher.d.ts +19 -0
  52. package/dist/src/stitcher/table-stitcher.d.ts.map +1 -0
  53. package/dist/src/stitcher/table-stitcher.js +129 -0
  54. package/dist/src/stitcher/table-stitcher.js.map +1 -0
  55. package/dist/src/tiling/cutter.d.ts +14 -0
  56. package/dist/src/tiling/cutter.d.ts.map +1 -0
  57. package/dist/src/tiling/cutter.js +46 -0
  58. package/dist/src/tiling/cutter.js.map +1 -0
  59. package/dist/src/tiling/tiler.d.ts +41 -0
  60. package/dist/src/tiling/tiler.d.ts.map +1 -0
  61. package/dist/src/tiling/tiler.js +82 -0
  62. package/dist/src/tiling/tiler.js.map +1 -0
  63. package/dist/src/validators/invariants.d.ts +30 -0
  64. package/dist/src/validators/invariants.d.ts.map +1 -0
  65. package/dist/src/validators/invariants.js +164 -0
  66. package/dist/src/validators/invariants.js.map +1 -0
  67. package/dist/tests/compiler.test.d.ts +2 -0
  68. package/dist/tests/compiler.test.d.ts.map +1 -0
  69. package/dist/tests/compiler.test.js +110 -0
  70. package/dist/tests/compiler.test.js.map +1 -0
  71. package/dist/tests/extractor.test.d.ts +2 -0
  72. package/dist/tests/extractor.test.d.ts.map +1 -0
  73. package/dist/tests/extractor.test.js +195 -0
  74. package/dist/tests/extractor.test.js.map +1 -0
  75. package/dist/tests/fixtures.d.ts +9 -0
  76. package/dist/tests/fixtures.d.ts.map +1 -0
  77. package/dist/tests/fixtures.js +20 -0
  78. package/dist/tests/fixtures.js.map +1 -0
  79. package/dist/tests/grounding.test.d.ts +2 -0
  80. package/dist/tests/grounding.test.d.ts.map +1 -0
  81. package/dist/tests/grounding.test.js +82 -0
  82. package/dist/tests/grounding.test.js.map +1 -0
  83. package/dist/tests/multi-domain.test.d.ts +2 -0
  84. package/dist/tests/multi-domain.test.d.ts.map +1 -0
  85. package/dist/tests/multi-domain.test.js +135 -0
  86. package/dist/tests/multi-domain.test.js.map +1 -0
  87. package/dist/tests/normalizer.test.d.ts +2 -0
  88. package/dist/tests/normalizer.test.d.ts.map +1 -0
  89. package/dist/tests/normalizer.test.js +70 -0
  90. package/dist/tests/normalizer.test.js.map +1 -0
  91. package/dist/tests/providers.test.d.ts +2 -0
  92. package/dist/tests/providers.test.d.ts.map +1 -0
  93. package/dist/tests/providers.test.js +110 -0
  94. package/dist/tests/providers.test.js.map +1 -0
  95. package/dist/tests/stitcher.test.d.ts +2 -0
  96. package/dist/tests/stitcher.test.d.ts.map +1 -0
  97. package/dist/tests/stitcher.test.js +85 -0
  98. package/dist/tests/stitcher.test.js.map +1 -0
  99. package/dist/tests/tiling.test.d.ts +2 -0
  100. package/dist/tests/tiling.test.d.ts.map +1 -0
  101. package/dist/tests/tiling.test.js +85 -0
  102. package/dist/tests/tiling.test.js.map +1 -0
  103. package/dist/tests/validators.test.d.ts +2 -0
  104. package/dist/tests/validators.test.d.ts.map +1 -0
  105. package/dist/tests/validators.test.js +125 -0
  106. package/dist/tests/validators.test.js.map +1 -0
  107. package/dist/vitest.config.d.ts +3 -0
  108. package/dist/vitest.config.d.ts.map +1 -0
  109. package/dist/vitest.config.js +13 -0
  110. package/dist/vitest.config.js.map +1 -0
  111. package/package.json +44 -0
@@ -0,0 +1,268 @@
1
+ import { z } from "zod";
2
+ import { promises as fs } from "fs";
3
+ import { resolveProvider } from "../providers/factory.js";
4
+ import { compileZodToJsonSchema } from "../compiler/zod-compiler.js";
5
+ import { planTiling, needsTiling } from "../tiling/tiler.js";
6
+ import { cropTile, getImageMetadata } from "../tiling/cutter.js";
7
+ import { TableStitcher } from "../stitcher/table-stitcher.js";
8
+ import { InvariantEngine } from "../validators/invariants.js";
9
+ function toBase64String(buffer) {
10
+ return buffer.toString("base64");
11
+ }
12
+ function detectMimeType(buffer) {
13
+ if (buffer[0] === 0x25 && buffer[1] === 0x50 && buffer[2] === 0x44 && buffer[3] === 0x46) {
14
+ return "application/pdf";
15
+ }
16
+ if (buffer[0] === 0x89 && buffer[1] === 0x50 && buffer[2] === 0x4e && buffer[3] === 0x47) {
17
+ return "image/png";
18
+ }
19
+ if (buffer[0] === 0xff && buffer[1] === 0xd8) {
20
+ return "image/jpeg";
21
+ }
22
+ if (buffer[0] === 0x47 && buffer[1] === 0x49 && buffer[2] === 0x46) {
23
+ return "image/gif";
24
+ }
25
+ if (buffer[0] === 0x52 && buffer[1] === 0x49 && buffer[2] === 0x46 && buffer[3] === 0x46) {
26
+ return "image/webp";
27
+ }
28
+ return "image/png";
29
+ }
30
+ const A4_PAGE_SIZE = { width: 595, height: 842 };
31
+ function isDocumentImage(mimeType) {
32
+ return mimeType === "application/pdf";
33
+ }
34
+ async function readInput(input) {
35
+ if (typeof input === "string") {
36
+ const dataUri = input.match(/^data:([^;]+);base64,(.+)$/);
37
+ if (dataUri) {
38
+ return { buffer: Buffer.from(dataUri[2], "base64"), mimeType: dataUri[1] };
39
+ }
40
+ try {
41
+ await fs.access(input);
42
+ const buffer = await fs.readFile(input);
43
+ return { buffer, mimeType: detectMimeType(buffer) };
44
+ }
45
+ catch {
46
+ return { buffer: Buffer.from(input, "base64"), mimeType: "image/png" };
47
+ }
48
+ }
49
+ const buffer = Buffer.isBuffer(input) ? input : Buffer.from(input);
50
+ return { buffer, mimeType: detectMimeType(buffer) };
51
+ }
52
+ function wrapSchema(userSchema) {
53
+ const BBoxSchema = z.array(z.number()).length(4);
54
+ const GroundingSchema = z.object({
55
+ pageIndex: z.number(),
56
+ field: z.string(),
57
+ value: z.unknown(),
58
+ bbox: BBoxSchema,
59
+ confidence: z.number().optional(),
60
+ });
61
+ const CellSpanSchema = z.object({
62
+ rowspan: z.number().optional(),
63
+ colspan: z.number().optional(),
64
+ });
65
+ const TableSchema = z.object({
66
+ pageIndex: z.number(),
67
+ rows: z.array(z.array(z.unknown())),
68
+ header: z.array(z.string()).optional(),
69
+ bbox: BBoxSchema,
70
+ html: z.string().optional(),
71
+ spans: z.array(z.array(CellSpanSchema.optional()).optional()).optional(),
72
+ });
73
+ return z.object({
74
+ data: userSchema,
75
+ groundings: z.array(GroundingSchema).optional(),
76
+ tables: z.array(TableSchema).optional(),
77
+ });
78
+ }
79
+ function buildPrompt(schemaName = "document", options = {}) {
80
+ const lines = [
81
+ `Extract the ${schemaName} from the provided image(s).`,
82
+ "Return valid JSON matching the requested schema exactly.",
83
+ "For each extracted field, include a visual grounding with `bbox` as normalized [ymin, xmin, ymax, xmax] coordinates.",
84
+ "If you detect tables, include them in the `tables` array with rows, header, and bbox.",
85
+ ];
86
+ if (options.prompt) {
87
+ lines.push(`Additional instructions: ${options.prompt}`);
88
+ }
89
+ return lines.join("\n");
90
+ }
91
+ function buildRepairPrompt(basePrompt, report) {
92
+ return [
93
+ basePrompt,
94
+ "",
95
+ "The previous extraction failed the following invariant checks; please correct the output and return the full JSON again:",
96
+ report.checks
97
+ .filter((c) => !c.passed)
98
+ .map((c) => `- ${c.id}: ${c.message ?? `diff ${c.diff}`}`)
99
+ .join("\n"),
100
+ ].join("\n");
101
+ }
102
+ function collectFields(data, groundings) {
103
+ const fields = {};
104
+ function visit(value, path) {
105
+ if (Array.isArray(value)) {
106
+ value.forEach((v, i) => visit(v, path ? `${path}.${i}` : `${i}`));
107
+ return;
108
+ }
109
+ if (value !== null && typeof value === "object") {
110
+ for (const [k, v] of Object.entries(value)) {
111
+ visit(v, path ? `${path}.${k}` : k);
112
+ }
113
+ return;
114
+ }
115
+ const g = groundings.find((gr) => gr.field === path);
116
+ fields[path] = {
117
+ value,
118
+ confidence: g?.confidence ?? 1,
119
+ pageIndex: g?.pageIndex,
120
+ bbox: g?.bbox,
121
+ };
122
+ }
123
+ visit(data, "");
124
+ return fields;
125
+ }
126
+ function computeGlobalConfidence(invariants, groundings) {
127
+ const invConfidence = invariants?.confidenceScore ?? 1;
128
+ if (groundings.length === 0)
129
+ return invConfidence;
130
+ const groundingAvg = groundings.reduce((sum, g) => sum + (g.confidence ?? 1), 0) / groundings.length;
131
+ return Math.max(0, Math.min(1, invConfidence * groundingAvg));
132
+ }
133
+ export class DocumentExtractor {
134
+ baseConfig;
135
+ constructor(config = {}) {
136
+ this.baseConfig = config;
137
+ }
138
+ resolveProvider(options = {}) {
139
+ if (options.customVLM)
140
+ return options.customVLM;
141
+ if (this.baseConfig.customVLM)
142
+ return this.baseConfig.customVLM;
143
+ return resolveProvider({
144
+ provider: options.provider ?? this.baseConfig.provider,
145
+ apiKey: options.apiKey ?? this.baseConfig.apiKey,
146
+ model: options.model ?? this.baseConfig.model,
147
+ baseUrl: options.baseUrl ?? this.baseConfig.baseUrl,
148
+ });
149
+ }
150
+ async ingestPage(input) {
151
+ const { buffer, mimeType } = await readInput(input);
152
+ const base64 = toBase64String(buffer);
153
+ const image = { mimeType, base64, width: 0, height: 0 };
154
+ if (isDocumentImage(mimeType)) {
155
+ image.width = A4_PAGE_SIZE.width;
156
+ image.height = A4_PAGE_SIZE.height;
157
+ }
158
+ else {
159
+ const meta = await getImageMetadata(image);
160
+ image.width = meta.width;
161
+ image.height = meta.height;
162
+ }
163
+ return {
164
+ index: 0,
165
+ image,
166
+ size: { width: image.width, height: image.height },
167
+ };
168
+ }
169
+ getTileOptions(options) {
170
+ if (options.tiling === "off")
171
+ return undefined;
172
+ if (options.tiling === "auto" || options.tiling === undefined) {
173
+ return { maxTileWidth: 1536, maxTileHeight: 1536, overlap: 0.15 };
174
+ }
175
+ return options.tiling;
176
+ }
177
+ async prepareTiles(page, options) {
178
+ if (isDocumentImage(page.image.mimeType)) {
179
+ return [page.image];
180
+ }
181
+ const tileOpts = this.getTileOptions(options);
182
+ if (!tileOpts || !needsTiling(page.size, tileOpts)) {
183
+ return [page.image];
184
+ }
185
+ const plan = planTiling(page.index, page.size, tileOpts);
186
+ const tileImages = [];
187
+ for (const tile of plan.tiles) {
188
+ const cropped = await cropTile(page.image, tile);
189
+ tileImages.push(cropped);
190
+ options.onProgress?.({ step: "tiling", page: page.index, tile: tile.row * tile.cols + tile.col });
191
+ }
192
+ return tileImages;
193
+ }
194
+ runInvariants(data, tables, options) {
195
+ const engine = new InvariantEngine();
196
+ for (const check of options.invariants ?? []) {
197
+ engine.addCheck(check);
198
+ }
199
+ const context = data !== null && typeof data === "object" ? { ...data, tables } : { value: data, tables };
200
+ return engine.check(context);
201
+ }
202
+ async callProvider(provider, tileImages, prompt, schema, options) {
203
+ options.onProgress?.({ step: "vlm", page: 0 });
204
+ return provider.extract({
205
+ images: tileImages,
206
+ prompt,
207
+ schema,
208
+ responseMimeType: "application/json",
209
+ maxTokens: options.maxTokens,
210
+ temperature: options.temperature ?? 0,
211
+ seed: options.seed,
212
+ });
213
+ }
214
+ async extract(input, schema, options = {}) {
215
+ const start = Date.now();
216
+ const provider = this.resolveProvider(options);
217
+ const page = await this.ingestPage(input);
218
+ const tileImages = await this.prepareTiles(page, options);
219
+ const wrappedSchema = wrapSchema(schema);
220
+ const providerSchema = compileZodToJsonSchema(wrappedSchema);
221
+ const prompt = buildPrompt(schema.constructor.name, options);
222
+ let raw = await this.callProvider(provider, tileImages, prompt, providerSchema, options);
223
+ let parsed;
224
+ try {
225
+ parsed = JSON.parse(raw.text);
226
+ }
227
+ catch {
228
+ throw new Error(`Provider returned invalid JSON: ${raw.text.slice(0, 200)}`);
229
+ }
230
+ let data = wrappedSchema.shape.data.parse(parsed.data);
231
+ let groundings = parsed.groundings ?? [];
232
+ let tables = parsed.tables ?? [];
233
+ let invariantReport;
234
+ let repairs = 0;
235
+ if (options.prove) {
236
+ invariantReport = this.runInvariants(data, tables, options);
237
+ if (!invariantReport.ok && options.autoRepair) {
238
+ const repairPrompt = buildRepairPrompt(prompt, invariantReport);
239
+ const repairRaw = await this.callProvider(provider, tileImages, repairPrompt, providerSchema, options);
240
+ const repairParsed = JSON.parse(repairRaw.text);
241
+ data = wrappedSchema.shape.data.parse(repairParsed.data);
242
+ groundings = repairParsed.groundings ?? [];
243
+ tables = repairParsed.tables ?? [];
244
+ invariantReport = this.runInvariants(data, tables, options);
245
+ repairs = 1;
246
+ }
247
+ }
248
+ const stitchedTables = new TableStitcher().stitch(tables);
249
+ const confidence = computeGlobalConfidence(invariantReport, groundings);
250
+ const fields = collectFields(data, groundings);
251
+ return {
252
+ data,
253
+ confidence,
254
+ fields,
255
+ tables: stitchedTables,
256
+ groundings,
257
+ invariants: invariantReport,
258
+ provenance: {
259
+ provider: provider.name,
260
+ model: provider.model ?? "unknown",
261
+ durationMs: Date.now() - start,
262
+ tilesUsed: tileImages.length,
263
+ repairs,
264
+ },
265
+ };
266
+ }
267
+ }
268
+ //# sourceMappingURL=extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../../src/core/extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import type { NormalizedBBox } from "../grounding/bbox.js";
2
+ import type { GroundedField, PageImage, VLMProvider } from "../providers/types.js";
3
+ import type { InvariantReport } from "../validators/invariants.js";
4
+ export interface ExtractedTable {
5
+ pageIndex: number;
6
+ rows: unknown[][];
7
+ header?: string[];
8
+ bbox: NormalizedBBox;
9
+ html?: string;
10
+ /** Optional per-cell metadata (colspan/rowspan). */
11
+ spans?: Array<Array<{
12
+ rowspan?: number;
13
+ colspan?: number;
14
+ } | undefined>>;
15
+ }
16
+ export interface FieldResult {
17
+ value: unknown;
18
+ confidence: number;
19
+ pageIndex?: number;
20
+ bbox?: NormalizedBBox;
21
+ }
22
+ export interface ExtractionProvenance {
23
+ provider: string;
24
+ model: string;
25
+ durationMs: number;
26
+ tilesUsed: number;
27
+ repairs: number;
28
+ }
29
+ export interface ExtractionResult<T> {
30
+ /** Typed extraction payload. */
31
+ data: T;
32
+ /** Global confidence score in [0, 1]. */
33
+ confidence: number;
34
+ /** Per-field confidence and grounding (best available). */
35
+ fields: Record<string, FieldResult>;
36
+ /** Extracted and optionally stitched tables. */
37
+ tables: ExtractedTable[];
38
+ /** Visual grounding records for all detected fields. */
39
+ groundings: GroundedField[];
40
+ /** Invariant check report when `prove: true` is used. */
41
+ invariants?: InvariantReport;
42
+ provenance: ExtractionProvenance;
43
+ }
44
+ export interface TileOptions {
45
+ /** Maximum tile width in pixels (default 1536). */
46
+ maxTileWidth?: number;
47
+ /** Maximum tile height in pixels (default 1536). */
48
+ maxTileHeight?: number;
49
+ /** Overlap ratio between tiles in [0, 1] (default 0.15). */
50
+ overlap?: number;
51
+ /** Minimum number of pixels per tile. */
52
+ minPixels?: number;
53
+ /** Maximum number of pixels per tile. */
54
+ maxPixels?: number;
55
+ }
56
+ export interface ExtractionOptions {
57
+ /** Provider to use; defaults to env-variable resolution. */
58
+ provider?: "gemini" | "openai" | "anthropic" | "custom";
59
+ /** Model id; falls back to provider default. */
60
+ model?: string;
61
+ /** API key or falls back to environment variables. */
62
+ apiKey?: string;
63
+ /** Base URL override for OpenAI-compatible endpoints. */
64
+ baseUrl?: string;
65
+ /** Custom VLM provider callable. */
66
+ customVLM?: VLMProvider;
67
+ /** Tiling behaviour: `auto`, `off`, or explicit options. */
68
+ tiling?: "auto" | "off" | TileOptions;
69
+ /** Run invariant checks. */
70
+ prove?: boolean;
71
+ /** Custom invariant checks. */
72
+ invariants?: Array<{
73
+ id: string;
74
+ expression: string;
75
+ tolerance?: number;
76
+ }>;
77
+ /** Re-invoke the VLM with the discrepancy report when invariants fail. */
78
+ autoRepair?: boolean;
79
+ /** Max output tokens. */
80
+ maxTokens?: number;
81
+ /** Sampling temperature. */
82
+ temperature?: number;
83
+ /** Deterministic seed. */
84
+ seed?: number;
85
+ /** Prompt override. */
86
+ prompt?: string;
87
+ /** Optional progress callback. */
88
+ onProgress?: (p: {
89
+ step: string;
90
+ page: number;
91
+ tile?: number;
92
+ }) => void;
93
+ }
94
+ export interface IngestedPage {
95
+ index: number;
96
+ image: PageImage;
97
+ size: {
98
+ width: number;
99
+ height: number;
100
+ };
101
+ }
102
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * A normalized bounding box in the form `[ymin, xmin, ymax, xmax]`
3
+ * where each value is in the range [0, 1] relative to the page dimensions.
4
+ */
5
+ export type NormalizedBBox = [ymin: number, xmin: number, ymax: number, xmax: number];
6
+ export interface PointBox {
7
+ x1: number;
8
+ y1: number;
9
+ x2: number;
10
+ y2: number;
11
+ }
12
+ export interface PageSize {
13
+ width: number;
14
+ height: number;
15
+ }
16
+ export interface GroundedEntity<T = unknown> {
17
+ value: T;
18
+ pageIndex: number;
19
+ bbox: NormalizedBBox;
20
+ confidence?: number;
21
+ source: "vlm" | "ocr" | "anchor";
22
+ }
23
+ /**
24
+ * Convert absolute pixel coordinates into a normalized [ymin, xmin, ymax, xmax] box.
25
+ */
26
+ export declare function normalizeBBox(box: PointBox, pageSize: PageSize): NormalizedBBox;
27
+ /**
28
+ * Convert a normalized box back to absolute pixel coordinates.
29
+ */
30
+ export declare function denormalizeBBox(bbox: NormalizedBBox, pageSize: PageSize): PointBox;
31
+ /**
32
+ * Compute the Intersection over Union (IoU) of two normalized boxes.
33
+ * Returns a value in [0, 1].
34
+ */
35
+ export declare function iou(a: NormalizedBBox, b: NormalizedBBox): number;
36
+ /**
37
+ * Greedily merge overlapping boxes whose IoU is at least `iouThreshold`.
38
+ */
39
+ export declare function mergeBoxes(boxes: NormalizedBBox[], iouThreshold?: number): NormalizedBBox[];
40
+ //# sourceMappingURL=bbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bbox.d.ts","sourceRoot":"","sources":["../../../src/grounding/bbox.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAEtF,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;CAClC;AAsBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAY/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAQlF;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CAqBhE;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,cAAc,EAAE,EACvB,YAAY,SAAM,GACjB,cAAc,EAAE,CA4BlB"}
@@ -0,0 +1,98 @@
1
+ function validBox(b) {
2
+ return (Number.isFinite(b[0]) &&
3
+ Number.isFinite(b[1]) &&
4
+ Number.isFinite(b[2]) &&
5
+ Number.isFinite(b[3]) &&
6
+ b[0] <= b[2] &&
7
+ b[1] <= b[3]);
8
+ }
9
+ function safeBox(b) {
10
+ return [
11
+ Math.min(b[0], b[2]),
12
+ Math.min(b[1], b[3]),
13
+ Math.max(b[0], b[2]),
14
+ Math.max(b[1], b[3]),
15
+ ];
16
+ }
17
+ /**
18
+ * Convert absolute pixel coordinates into a normalized [ymin, xmin, ymax, xmax] box.
19
+ */
20
+ export function normalizeBBox(box, pageSize) {
21
+ const minX = Math.min(box.x1, box.x2);
22
+ const maxX = Math.max(box.x1, box.x2);
23
+ const minY = Math.min(box.y1, box.y2);
24
+ const maxY = Math.max(box.y1, box.y2);
25
+ return [
26
+ minY / pageSize.height,
27
+ minX / pageSize.width,
28
+ maxY / pageSize.height,
29
+ maxX / pageSize.width,
30
+ ];
31
+ }
32
+ /**
33
+ * Convert a normalized box back to absolute pixel coordinates.
34
+ */
35
+ export function denormalizeBBox(bbox, pageSize) {
36
+ const [ymin, xmin, ymax, xmax] = safeBox(bbox);
37
+ return {
38
+ x1: xmin * pageSize.width,
39
+ y1: ymin * pageSize.height,
40
+ x2: xmax * pageSize.width,
41
+ y2: ymax * pageSize.height,
42
+ };
43
+ }
44
+ /**
45
+ * Compute the Intersection over Union (IoU) of two normalized boxes.
46
+ * Returns a value in [0, 1].
47
+ */
48
+ export function iou(a, b) {
49
+ const aBox = safeBox(a);
50
+ const bBox = safeBox(b);
51
+ if (!validBox(aBox) || !validBox(bBox))
52
+ return 0;
53
+ const ymin = Math.max(aBox[0], bBox[0]);
54
+ const xmin = Math.max(aBox[1], bBox[1]);
55
+ const ymax = Math.min(aBox[2], bBox[2]);
56
+ const xmax = Math.min(aBox[3], bBox[3]);
57
+ const interWidth = xmax - xmin;
58
+ const interHeight = ymax - ymin;
59
+ if (interWidth <= 0 || interHeight <= 0)
60
+ return 0;
61
+ const interArea = interWidth * interHeight;
62
+ const aArea = (aBox[2] - aBox[0]) * (aBox[3] - aBox[1]);
63
+ const bArea = (bBox[2] - bBox[0]) * (bBox[3] - bBox[1]);
64
+ const unionArea = aArea + bArea - interArea;
65
+ return unionArea === 0 ? 0 : interArea / unionArea;
66
+ }
67
+ /**
68
+ * Greedily merge overlapping boxes whose IoU is at least `iouThreshold`.
69
+ */
70
+ export function mergeBoxes(boxes, iouThreshold = 0.5) {
71
+ if (boxes.length === 0)
72
+ return [];
73
+ const working = boxes.map(safeBox);
74
+ let changed = true;
75
+ while (changed) {
76
+ changed = false;
77
+ for (let i = 0; i < working.length; i++) {
78
+ for (let j = i + 1; j < working.length; j++) {
79
+ if (iou(working[i], working[j]) >= iouThreshold) {
80
+ const merged = [
81
+ Math.min(working[i][0], working[j][0]),
82
+ Math.min(working[i][1], working[j][1]),
83
+ Math.max(working[i][2], working[j][2]),
84
+ Math.max(working[i][3], working[j][3]),
85
+ ];
86
+ working.splice(j, 1);
87
+ working[i] = merged;
88
+ changed = true;
89
+ break;
90
+ }
91
+ }
92
+ if (changed)
93
+ break;
94
+ }
95
+ }
96
+ return working;
97
+ }
98
+ //# sourceMappingURL=bbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bbox.js","sourceRoot":"","sources":["../../../src/grounding/bbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export * from "./compiler/zod-compiler.js";
2
+ export * from "./grounding/bbox.js";
3
+ export * from "./normalizers/currency.js";
4
+ export * from "./normalizers/tabular.js";
5
+ export * from "./validators/invariants.js";
6
+ export * from "./core/types.js";
7
+ export { DocumentExtractor } from "./core/extractor.js";
8
+ export * from "./providers/types.js";
9
+ export { resolveProvider } from "./providers/factory.js";
10
+ export { GeminiProvider } from "./providers/gemini-provider.js";
11
+ export { OpenAIProvider } from "./providers/openai-provider.js";
12
+ export { AnthropicProvider } from "./providers/anthropic-provider.js";
13
+ export * from "./tiling/tiler.js";
14
+ export { cropTile, getImageMetadata } from "./tiling/cutter.js";
15
+ export { TableStitcher } from "./stitcher/table-stitcher.js";
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAE3C,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export * from "./compiler/zod-compiler.js";
2
+ export * from "./grounding/bbox.js";
3
+ export * from "./normalizers/currency.js";
4
+ export * from "./normalizers/tabular.js";
5
+ export * from "./validators/invariants.js";
6
+ export * from "./core/types.js";
7
+ export { DocumentExtractor } from "./core/extractor.js";
8
+ export * from "./providers/types.js";
9
+ export { resolveProvider } from "./providers/factory.js";
10
+ export { GeminiProvider } from "./providers/gemini-provider.js";
11
+ export { OpenAIProvider } from "./providers/openai-provider.js";
12
+ export { AnthropicProvider } from "./providers/anthropic-provider.js";
13
+ export * from "./tiling/tiler.js";
14
+ export { cropTile, getImageMetadata } from "./tiling/cutter.js";
15
+ export { TableStitcher } from "./stitcher/table-stitcher.js";
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAE3C,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Parse an accounting number in multi-region formats and return a plain number.
3
+ *
4
+ * Supported inputs:
5
+ * - `$1,250.50` => 1250.5
6
+ * - `1.250,50 €` => 1250.5
7
+ * - `1,250` => 1250
8
+ * - `(450.00)` => -450
9
+ * - `-1.250,50` => -1250.5
10
+ *
11
+ * Returns `null` if the value cannot be parsed.
12
+ */
13
+ export declare function parseAccountingNumber(val: string | number): number | null;
14
+ //# sourceMappingURL=currency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../../src/normalizers/currency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAmFzE"}