@auxee/piece-image-document-intelligence 0.0.6 → 0.1.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auxee/piece-image-document-intelligence",
3
- "version": "0.0.6",
3
+ "version": "0.1.1",
4
4
  "description": "Auxee custom image and document intelligence piece for extracting text and visual elements from images and documents using AI-driven OCR and image processing",
5
5
  "type": "commonjs",
6
6
  "main": "./src/index.js",
@@ -1,8 +1,7 @@
1
1
  export declare const extractTextFromImage: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").PieceAuthProperty, {
2
- fileUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
2
+ importMethod: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
3
+ fileInput: import("@activepieces/pieces-framework").DynamicProperties<true>;
3
4
  outputFormat: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
4
- languageHints: import("@activepieces/pieces-framework").ShortTextProperty<false>;
5
- objectCategories: import("@activepieces/pieces-framework").ShortTextProperty<false>;
6
- pageRange: import("@activepieces/pieces-framework").ShortTextProperty<false>;
7
5
  ocrMode: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
6
+ advancedOptions: import("@activepieces/pieces-framework").DynamicProperties<false>;
8
7
  }>;
@@ -5,69 +5,141 @@ const tslib_1 = require("tslib");
5
5
  const pieces_framework_1 = require("@activepieces/pieces-framework");
6
6
  const pieces_common_1 = require("@activepieces/pieces-common");
7
7
  const mime_types_1 = tslib_1.__importDefault(require("mime-types"));
8
+ // ============================================================================
9
+ // UTILITY FUNCTIONS
10
+ // ============================================================================
8
11
  function getFileExtension(filename) {
9
12
  const parts = filename.split('.');
10
13
  return parts.length > 1 ? parts.pop().toLowerCase() : '';
11
14
  }
12
- function isImageFile(filename) {
15
+ function isImageFile(filename, mimeType) {
13
16
  const ext = getFileExtension(filename);
14
- return ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff', 'tif'].includes(ext);
17
+ const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff', 'tif'];
18
+ if (imageExtensions.includes(ext))
19
+ return true;
20
+ if (mimeType && mimeType.startsWith('image/'))
21
+ return true;
22
+ return false;
15
23
  }
16
- function isDocumentFile(filename) {
24
+ function isDocumentFile(filename, mimeType) {
17
25
  const ext = getFileExtension(filename);
18
- return ['pdf', 'docx', 'doc', 'xlsx', 'xls', 'pptx', 'ppt'].includes(ext);
26
+ const documentExtensions = ['pdf', 'docx', 'doc', 'xlsx', 'xls', 'pptx', 'ppt'];
27
+ if (documentExtensions.includes(ext))
28
+ return true;
29
+ if (mimeType) {
30
+ const documentMimeTypes = [
31
+ 'application/pdf',
32
+ 'application/msword',
33
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
34
+ 'application/vnd.ms-excel',
35
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
36
+ 'application/vnd.ms-powerpoint',
37
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
38
+ ];
39
+ if (documentMimeTypes.some(dmt => mimeType.includes(dmt)))
40
+ return true;
41
+ if (mimeType.includes('pdf') || mimeType.includes('office') || mimeType.includes('document'))
42
+ return true;
43
+ }
44
+ return false;
19
45
  }
46
+ // ============================================================================
47
+ // FILE DOWNLOAD
48
+ // ============================================================================
20
49
  function downloadFileFromUrl(url) {
21
50
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
22
- var _a;
23
- try {
24
- const response = yield pieces_common_1.httpClient.sendRequest({
25
- method: pieces_common_1.HttpMethod.GET,
26
- url: url,
27
- responseType: 'arraybuffer',
28
- });
29
- let fileData;
30
- if (response.body instanceof ArrayBuffer) {
31
- fileData = Buffer.from(response.body);
51
+ var _a, _b, _c;
52
+ let urlsToTry = [url];
53
+ // Try alternative URLs for step-file URLs
54
+ if (url.includes('/v1/step-files/') || url.includes('/step-files/')) {
55
+ if ((_a = process.env) === null || _a === void 0 ? void 0 : _a['AP_INTERNAL_API_URL']) {
56
+ const internalApiUrl = process.env['AP_INTERNAL_API_URL'].replace(/\/$/, '');
57
+ const pathMatch = url.match(/(\/v1\/step-files\/.*)/);
58
+ if (pathMatch)
59
+ urlsToTry.push(`${internalApiUrl}${pathMatch[1]}`);
32
60
  }
33
- else if (Buffer.isBuffer(response.body)) {
34
- fileData = response.body;
61
+ if (url.includes('localhost:4200/api')) {
62
+ urlsToTry.push(url.replace('localhost:4200/api', 'localhost:3000'));
35
63
  }
36
- else if (typeof response.body === 'string') {
37
- fileData = Buffer.from(response.body, 'binary');
64
+ if (url.includes('127.0.0.1:4200/api')) {
65
+ urlsToTry.push(url.replace('127.0.0.1:4200/api', '127.0.0.1:3000'));
38
66
  }
39
- else {
40
- fileData = Buffer.from(String(response.body), 'binary');
67
+ if (url.includes('/api/v1/step-files/')) {
68
+ const pathMatch = url.match(/\/api(\/v1\/step-files\/.*)/);
69
+ if (pathMatch && ((_b = process.env) === null || _b === void 0 ? void 0 : _b['AP_API_URL'])) {
70
+ const apiUrl = process.env['AP_API_URL'].replace(/\/$/, '');
71
+ urlsToTry.push(`${apiUrl}${pathMatch[1]}`);
72
+ }
41
73
  }
42
- // Extract filename from URL or use default
43
- const urlParts = url.split('/');
44
- const urlFilename = ((_a = urlParts[urlParts.length - 1]) === null || _a === void 0 ? void 0 : _a.split('?')[0]) || 'file';
45
- const filename = decodeURIComponent(urlFilename);
46
- const ext = getFileExtension(filename);
47
- const mimeType = ext ? mime_types_1.default.lookup(ext) || 'application/octet-stream' : 'application/octet-stream';
48
- return { data: fileData, filename, mimeType: mimeType };
49
74
  }
50
- catch (error) {
51
- throw new Error(`Failed to download file from URL: ${error.message}`);
75
+ urlsToTry = [...new Set(urlsToTry)];
76
+ let lastError = null;
77
+ for (const urlToTry of urlsToTry) {
78
+ try {
79
+ const response = yield pieces_common_1.httpClient.sendRequest({
80
+ method: pieces_common_1.HttpMethod.GET,
81
+ url: urlToTry,
82
+ responseType: 'arraybuffer',
83
+ });
84
+ if (response.status && response.status >= 400) {
85
+ throw new Error(`HTTP ${response.status} error downloading file`);
86
+ }
87
+ let fileData;
88
+ if (response.body instanceof ArrayBuffer) {
89
+ fileData = Buffer.from(response.body);
90
+ }
91
+ else if (Buffer.isBuffer(response.body)) {
92
+ fileData = response.body;
93
+ }
94
+ else if (typeof response.body === 'string') {
95
+ fileData = Buffer.from(response.body, 'binary');
96
+ }
97
+ else if (response.body === null || response.body === undefined) {
98
+ throw new Error('Empty response body');
99
+ }
100
+ else {
101
+ fileData = Buffer.from(String(response.body), 'binary');
102
+ }
103
+ if (!fileData || fileData.length === 0) {
104
+ throw new Error('Downloaded file is empty');
105
+ }
106
+ const urlParts = url.split('/');
107
+ const urlFilename = ((_c = urlParts[urlParts.length - 1]) === null || _c === void 0 ? void 0 : _c.split('?')[0]) || 'file';
108
+ const filename = decodeURIComponent(urlFilename);
109
+ const ext = getFileExtension(filename);
110
+ const mimeType = ext ? mime_types_1.default.lookup(ext) || 'application/octet-stream' : 'application/octet-stream';
111
+ return { data: fileData, filename, mimeType: mimeType };
112
+ }
113
+ catch (error) {
114
+ lastError = error;
115
+ continue;
116
+ }
52
117
  }
118
+ throw new Error(`Failed to download file: ${(lastError === null || lastError === void 0 ? void 0 : lastError.message) || 'Unknown error'}`);
53
119
  });
54
120
  }
55
- function processWithDocumentIntelligence(fileData, filename, endpoint, key, languageHints, pageRange) {
56
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
- var _a;
121
+ // ============================================================================
122
+ // AZURE DOCUMENT INTELLIGENCE PROCESSING
123
+ // ============================================================================
124
+ function processWithDocumentIntelligence(fileData_1, endpoint_1, key_1) {
125
+ return tslib_1.__awaiter(this, arguments, void 0, function* (fileData, endpoint, key, ocrMode = 'auto', languageHints, pageRange) {
126
+ var _a, _b;
58
127
  const baseUrl = endpoint.endsWith('/') ? endpoint.slice(0, -1) : endpoint;
59
- // Use the latest stable API version
60
- const apiUrl = `${baseUrl}/formrecognizer/documentModels/prebuilt-read:analyze?api-version=2024-02-29-preview`;
61
- // Build query parameters
128
+ // Select model based on OCR mode
129
+ // - prebuilt-read: Fast, basic OCR (good for simple text extraction)
130
+ // - prebuilt-layout: Accurate, extracts tables, figures, selection marks (better for complex documents)
131
+ const model = ocrMode === 'accurate' ? 'prebuilt-layout' : 'prebuilt-read';
132
+ const apiUrl = `${baseUrl}/formrecognizer/documentModels/${model}:analyze?api-version=2024-02-29-preview`;
62
133
  const queryParams = [];
63
- if (languageHints && languageHints !== 'auto') {
134
+ if (languageHints)
64
135
  queryParams.push(`locale=${encodeURIComponent(languageHints)}`);
65
- }
66
- if (pageRange && pageRange !== 'auto') {
136
+ if (pageRange)
67
137
  queryParams.push(`pages=${encodeURIComponent(pageRange)}`);
138
+ // For layout model, request additional features
139
+ if (model === 'prebuilt-layout') {
140
+ queryParams.push('features=keyValuePairs');
68
141
  }
69
142
  const fullUrl = queryParams.length > 0 ? `${apiUrl}&${queryParams.join('&')}` : apiUrl;
70
- // Start analysis - Azure Document Intelligence uses Ocp-Apim-Subscription-Key header
71
143
  const analyzeResponse = yield pieces_common_1.httpClient.sendRequest({
72
144
  method: pieces_common_1.HttpMethod.POST,
73
145
  url: fullUrl,
@@ -87,9 +159,9 @@ function processWithDocumentIntelligence(fileData, filename, endpoint, key, lang
87
159
  // Poll for results
88
160
  let result = null;
89
161
  let attempts = 0;
90
- const maxAttempts = 60; // 60 seconds max wait
162
+ const maxAttempts = 120; // 2 minutes max for larger documents
91
163
  while (attempts < maxAttempts) {
92
- yield new Promise((resolve) => setTimeout(resolve, 1000)); // Wait 1 second
164
+ yield new Promise((resolve) => setTimeout(resolve, 1000));
93
165
  const statusResponse = yield pieces_common_1.httpClient.sendRequest({
94
166
  method: pieces_common_1.HttpMethod.GET,
95
167
  url: operationLocation,
@@ -102,7 +174,7 @@ function processWithDocumentIntelligence(fileData, filename, endpoint, key, lang
102
174
  break;
103
175
  }
104
176
  else if (statusResponse.body.status === 'failed') {
105
- throw new Error('Document Intelligence analysis failed');
177
+ throw new Error(`Document Intelligence analysis failed: ${((_b = statusResponse.body.error) === null || _b === void 0 ? void 0 : _b.message) || 'Unknown error'}`);
106
178
  }
107
179
  attempts++;
108
180
  }
@@ -112,20 +184,25 @@ function processWithDocumentIntelligence(fileData, filename, endpoint, key, lang
112
184
  return result;
113
185
  });
114
186
  }
115
- function processWithComputerVision(fileData, filename, endpoint, key, languageHints, objectCategories) {
116
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
117
- var _a, _b;
187
+ // ============================================================================
188
+ // AZURE COMPUTER VISION PROCESSING
189
+ // ============================================================================
190
+ function processWithComputerVision(fileData_1, endpoint_1, key_1) {
191
+ return tslib_1.__awaiter(this, arguments, void 0, function* (fileData, endpoint, key, ocrMode = 'auto', enableObjectDetection = false, enableCaptions = false, languageHints) {
192
+ var _a;
118
193
  const baseUrl = endpoint.endsWith('/') ? endpoint.slice(0, -1) : endpoint;
119
- // Use Read API for OCR - latest stable version
194
+ const result = {};
195
+ // 1. OCR with Read API
120
196
  const readUrl = `${baseUrl}/vision/v3.2/read/analyze`;
121
- // Build query parameters for language hints
122
197
  const queryParams = [];
123
- if (languageHints && languageHints !== 'auto') {
124
- // Computer Vision Read API supports language parameter
198
+ if (languageHints) {
125
199
  queryParams.push(`language=${encodeURIComponent(languageHints.split(',')[0])}`);
126
200
  }
201
+ // For accurate mode, use natural reading order
202
+ if (ocrMode === 'accurate') {
203
+ queryParams.push('readingOrder=natural');
204
+ }
127
205
  const fullReadUrl = queryParams.length > 0 ? `${readUrl}?${queryParams.join('&')}` : readUrl;
128
- // Start read operation
129
206
  const readResponse = yield pieces_common_1.httpClient.sendRequest({
130
207
  method: pieces_common_1.HttpMethod.POST,
131
208
  url: fullReadUrl,
@@ -164,77 +241,109 @@ function processWithComputerVision(fileData, filename, endpoint, key, languageHi
164
241
  }
165
242
  attempts++;
166
243
  }
167
- // Get object detection - Azure Computer Vision detects all objects automatically
168
- // Enable if explicitly requested (not 'auto') or if 'enabled' flag is passed
169
- let objects = [];
170
- const shouldDetectObjects = objectCategories && objectCategories !== 'auto';
171
- if (shouldDetectObjects || objectCategories === 'enabled') {
244
+ // Extract text content and confidence from read result
245
+ if (readResult && readResult.readResults) {
246
+ let totalConfidence = 0;
247
+ let wordCount = 0;
248
+ const pages = readResult.readResults.map((page) => {
249
+ var _a, _b;
250
+ const words = ((_a = page.lines) === null || _a === void 0 ? void 0 : _a.flatMap((line) => {
251
+ var _a;
252
+ return ((_a = line.words) === null || _a === void 0 ? void 0 : _a.map((word) => {
253
+ if (word.confidence !== undefined) {
254
+ totalConfidence += word.confidence;
255
+ wordCount++;
256
+ }
257
+ return {
258
+ text: word.text,
259
+ confidence: word.confidence,
260
+ boundingBox: word.boundingBox,
261
+ };
262
+ })) || [];
263
+ })) || [];
264
+ return {
265
+ page: page.page,
266
+ words,
267
+ lines: ((_b = page.lines) === null || _b === void 0 ? void 0 : _b.map((line) => ({
268
+ text: line.text,
269
+ boundingBox: line.boundingBox,
270
+ }))) || [],
271
+ };
272
+ });
273
+ const content = readResult.readResults
274
+ .map((page) => { var _a; return ((_a = page.lines) === null || _a === void 0 ? void 0 : _a.map((line) => line.text).join('\n')) || ''; })
275
+ .filter(Boolean)
276
+ .join('\n\n');
277
+ result.readResult = { content, pages };
278
+ }
279
+ // 2. Image Analysis for captions, tags, and objects (using v4.0 API)
280
+ if (enableCaptions || enableObjectDetection) {
172
281
  try {
173
- const detectUrl = `${baseUrl}/vision/v3.2/detect`;
174
- const detectResponse = yield pieces_common_1.httpClient.sendRequest({
282
+ const features = [];
283
+ if (enableCaptions)
284
+ features.push('caption', 'denseCaptions');
285
+ if (enableObjectDetection)
286
+ features.push('tags', 'objects');
287
+ const analyzeUrl = `${baseUrl}/computervision/imageanalysis:analyze?api-version=2024-02-01&features=${features.join(',')}`;
288
+ const analyzeResponse = yield pieces_common_1.httpClient.sendRequest({
175
289
  method: pieces_common_1.HttpMethod.POST,
176
- url: detectUrl,
290
+ url: analyzeUrl,
177
291
  headers: {
178
292
  'Content-Type': 'application/octet-stream',
179
293
  'Ocp-Apim-Subscription-Key': key,
180
294
  },
181
295
  body: fileData,
182
296
  });
183
- objects = detectResponse.body.objects || [];
297
+ if (analyzeResponse.body.captionResult) {
298
+ result.captionResult = analyzeResponse.body.captionResult;
299
+ }
300
+ if (analyzeResponse.body.denseCaptionsResult) {
301
+ result.denseCaptionsResult = analyzeResponse.body.denseCaptionsResult;
302
+ }
303
+ if (analyzeResponse.body.tagsResult) {
304
+ result.tagsResult = analyzeResponse.body.tagsResult;
305
+ }
306
+ if (analyzeResponse.body.objectsResult) {
307
+ result.objectsResult = analyzeResponse.body.objectsResult;
308
+ }
184
309
  }
185
310
  catch (error) {
186
- // Object detection is optional, continue without it
187
- console.warn('Object detection failed:', error);
188
- }
189
- }
190
- // Extract text content from read result
191
- let content = '';
192
- if (readResult && readResult.readResults) {
193
- content = readResult.readResults
194
- .map((page) => {
195
- if (page.lines) {
196
- return page.lines.map((line) => line.text).join('\n');
311
+ console.warn('Image analysis failed, falling back to v3.2 API:', error.message);
312
+ // Fallback to v3.2 API for object detection
313
+ if (enableObjectDetection) {
314
+ try {
315
+ const detectUrl = `${baseUrl}/vision/v3.2/detect`;
316
+ const detectResponse = yield pieces_common_1.httpClient.sendRequest({
317
+ method: pieces_common_1.HttpMethod.POST,
318
+ url: detectUrl,
319
+ headers: {
320
+ 'Content-Type': 'application/octet-stream',
321
+ 'Ocp-Apim-Subscription-Key': key,
322
+ },
323
+ body: fileData,
324
+ });
325
+ result.objects = detectResponse.body.objects || [];
326
+ }
327
+ catch (e) {
328
+ console.warn('Object detection failed:', e);
329
+ }
197
330
  }
198
- return '';
199
- })
200
- .filter(Boolean)
201
- .join('\n\n');
331
+ }
202
332
  }
203
- return {
204
- readResult: readResult ? {
205
- content,
206
- pages: ((_b = readResult.readResults) === null || _b === void 0 ? void 0 : _b.map((page) => {
207
- var _a, _b;
208
- return ({
209
- page: page.page,
210
- words: ((_a = page.lines) === null || _a === void 0 ? void 0 : _a.flatMap((line) => {
211
- var _a;
212
- return ((_a = line.words) === null || _a === void 0 ? void 0 : _a.map((word) => ({
213
- text: word.text,
214
- boundingBox: word.boundingBox,
215
- }))) || [];
216
- })) || [],
217
- lines: ((_b = page.lines) === null || _b === void 0 ? void 0 : _b.map((line) => ({
218
- text: line.text,
219
- boundingBox: line.boundingBox,
220
- }))) || [],
221
- });
222
- })) || []
223
- } : undefined,
224
- objects,
225
- };
333
+ return result;
226
334
  });
227
335
  }
336
+ // ============================================================================
337
+ // TEXT EXTRACTION HELPERS
338
+ // ============================================================================
228
339
  function extractTextFromDocumentIntelligenceResult(result) {
229
- if (result.content) {
230
- return result.content;
340
+ var _a, _b;
341
+ let text = result.content || '';
342
+ if (!text && result.paragraphs && result.paragraphs.length > 0) {
343
+ text = result.paragraphs.map(p => p.content).join('\n\n');
231
344
  }
232
- // Fallback: extract from paragraphs or pages
233
- if (result.paragraphs && result.paragraphs.length > 0) {
234
- return result.paragraphs.map(p => p.content).join('\n\n');
235
- }
236
- if (result.pages && result.pages.length > 0) {
237
- return result.pages
345
+ if (!text && result.pages && result.pages.length > 0) {
346
+ text = result.pages
238
347
  .map(page => {
239
348
  if (page.lines && page.lines.length > 0) {
240
349
  return page.lines.map(line => line.content).join('\n');
@@ -247,242 +356,494 @@ function extractTextFromDocumentIntelligenceResult(result) {
247
356
  .filter(Boolean)
248
357
  .join('\n\n');
249
358
  }
250
- return '';
359
+ // Calculate average confidence from words
360
+ let totalConfidence = 0;
361
+ let wordCount = 0;
362
+ (_a = result.pages) === null || _a === void 0 ? void 0 : _a.forEach(page => {
363
+ var _a;
364
+ (_a = page.words) === null || _a === void 0 ? void 0 : _a.forEach(word => {
365
+ if (word.confidence !== undefined) {
366
+ totalConfidence += word.confidence;
367
+ wordCount++;
368
+ }
369
+ });
370
+ });
371
+ // Check for handwriting
372
+ const isHandwritten = ((_b = result.styles) === null || _b === void 0 ? void 0 : _b.some(style => style.isHandwritten === true)) || false;
373
+ return {
374
+ text,
375
+ confidence: wordCount > 0 ? totalConfidence / wordCount : null,
376
+ isHandwritten
377
+ };
251
378
  }
252
379
  function extractTextFromVisionResult(result) {
380
+ var _a;
253
381
  if (!result.readResult) {
254
- return '';
255
- }
256
- if (result.readResult.content) {
257
- return result.readResult.content;
382
+ return { text: '', confidence: null };
258
383
  }
259
- if (result.readResult.pages && result.readResult.pages.length > 0) {
260
- return result.readResult.pages
261
- .map(page => {
262
- if (page.lines && page.lines.length > 0) {
263
- return page.lines.map(line => line.text).join('\n');
264
- }
265
- if (page.words && page.words.length > 0) {
266
- return page.words.map(word => word.text).join(' ');
384
+ const text = result.readResult.content || '';
385
+ // Calculate average confidence
386
+ let totalConfidence = 0;
387
+ let wordCount = 0;
388
+ (_a = result.readResult.pages) === null || _a === void 0 ? void 0 : _a.forEach(page => {
389
+ var _a;
390
+ (_a = page.words) === null || _a === void 0 ? void 0 : _a.forEach(word => {
391
+ if (word.confidence !== undefined) {
392
+ totalConfidence += word.confidence;
393
+ wordCount++;
267
394
  }
268
- return '';
269
- })
270
- .filter(Boolean)
271
- .join('\n\n');
272
- }
273
- return '';
395
+ });
396
+ });
397
+ return {
398
+ text,
399
+ confidence: wordCount > 0 ? totalConfidence / wordCount : null
400
+ };
274
401
  }
402
+ // ============================================================================
403
+ // MAIN ACTION
404
+ // ============================================================================
275
405
  exports.extractTextFromImage = (0, pieces_framework_1.createAction)({
276
406
  name: 'extract_text_from_image',
277
407
  displayName: 'Extract Text from Image/Document',
278
- description: 'Extract text and visual elements from images, PDFs, and documents using Azure AI services',
408
+ description: 'Extract text, tables, figures, and visual elements from images and documents using Azure AI services with OCR',
279
409
  props: {
280
- fileUrl: pieces_framework_1.Property.ShortText({
281
- displayName: 'File URL',
282
- description: 'URL of the file to process (PDF, DOCX, JPG, PNG, etc.). You can use the data selector to get the URL from previous steps (e.g., from Web Form trigger).',
410
+ // Primary input method selector
411
+ importMethod: pieces_framework_1.Property.StaticDropdown({
412
+ displayName: 'Import Method',
413
+ description: 'How to provide the file for processing',
283
414
  required: true,
415
+ options: {
416
+ options: [
417
+ { label: '📁 File Upload', value: 'upload' },
418
+ { label: '🔗 File URL', value: 'url' },
419
+ { label: '📝 Base64 Content', value: 'base64' },
420
+ ],
421
+ },
422
+ defaultValue: 'url',
284
423
  }),
424
+ // Dynamic file input based on import method
425
+ fileInput: pieces_framework_1.Property.DynamicProperties({
426
+ displayName: 'File Input',
427
+ description: '',
428
+ refreshers: ['importMethod'],
429
+ required: true,
430
+ props: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ importMethod }) {
431
+ const props = {};
432
+ const importMethodStr = importMethod;
433
+ if (importMethodStr === 'upload') {
434
+ props['file'] = pieces_framework_1.Property.File({
435
+ displayName: 'File',
436
+ description: 'Select a file to process (PDF, DOCX, JPG, PNG, etc.)',
437
+ required: true,
438
+ });
439
+ }
440
+ else if (importMethodStr === 'url') {
441
+ props['fileUrl'] = pieces_framework_1.Property.ShortText({
442
+ displayName: 'File URL',
443
+ description: 'URL of the file to process. Must be accessible.',
444
+ required: true,
445
+ });
446
+ }
447
+ else if (importMethodStr === 'base64') {
448
+ props['fileContent'] = pieces_framework_1.Property.LongText({
449
+ displayName: 'Base64 Content',
450
+ description: 'Base64-encoded file content',
451
+ required: true,
452
+ });
453
+ props['fileName'] = pieces_framework_1.Property.ShortText({
454
+ displayName: 'File Name',
455
+ description: 'File name with extension (e.g., "document.pdf")',
456
+ required: true,
457
+ });
458
+ }
459
+ return props;
460
+ }),
461
+ }),
462
+ // Output format
285
463
  outputFormat: pieces_framework_1.Property.StaticDropdown({
286
464
  displayName: 'Output Format',
287
465
  description: 'What information to include in the output',
288
466
  required: false,
289
467
  options: {
290
468
  options: [
291
- { label: 'Raw Text Only', value: 'raw' },
292
- { label: 'Structured Data', value: 'structured' },
293
- { label: 'Visual Metadata', value: 'metadata' },
294
- { label: 'Unified JSON (All)', value: 'unified' },
469
+ { label: '📄 Raw Text Only', value: 'raw' },
470
+ { label: '📊 Structured Data (tables, paragraphs, figures)', value: 'structured' },
471
+ { label: '🖼️ Visual Analysis (objects, tags, captions)', value: 'visual' },
472
+ { label: '📦 Complete Analysis (all data)', value: 'complete' },
295
473
  ],
296
474
  },
297
475
  defaultValue: 'raw',
298
476
  }),
299
- languageHints: pieces_framework_1.Property.ShortText({
300
- displayName: 'Language Hints',
301
- description: 'Comma-separated language codes (e.g., "en,fr") or "auto" for automatic detection',
302
- required: false,
303
- defaultValue: 'auto',
304
- }),
305
- objectCategories: pieces_framework_1.Property.ShortText({
306
- displayName: 'Object Categories',
307
- description: 'Enable object detection: set to any value (e.g., "enabled" or "detect") to detect objects in images, or "auto" to disable. When enabled, Azure Computer Vision will automatically detect all objects (people, animals, objects, etc.) in the image.',
308
- required: false,
309
- defaultValue: 'auto',
310
- }),
311
- pageRange: pieces_framework_1.Property.ShortText({
312
- displayName: 'Page Range',
313
- description: 'Page range for PDFs (e.g., "1-5" or "1,3,5") or "auto" for all pages',
314
- required: false,
315
- defaultValue: 'auto',
316
- }),
477
+ // OCR Mode - NOW FUNCTIONAL
317
478
  ocrMode: pieces_framework_1.Property.StaticDropdown({
318
479
  displayName: 'OCR Mode',
319
- description: 'OCR processing mode',
480
+ description: 'Processing mode: Fast (basic OCR) or Accurate (extracts tables, figures, better structure)',
320
481
  required: false,
321
482
  options: {
322
483
  options: [
323
- { label: 'Auto (Balanced)', value: 'auto' },
324
- { label: 'Fast', value: 'fast' },
325
- { label: 'High Accuracy', value: 'accurate' },
484
+ { label: ' Fast (basic text extraction)', value: 'fast' },
485
+ { label: '🎯 Accurate (tables, figures, better structure)', value: 'accurate' },
486
+ { label: '🔄 Auto (choose based on file type)', value: 'auto' },
326
487
  ],
327
488
  },
328
489
  defaultValue: 'auto',
329
490
  }),
491
+ // Advanced options - shown conditionally
492
+ advancedOptions: pieces_framework_1.Property.DynamicProperties({
493
+ displayName: 'Advanced Options',
494
+ description: '',
495
+ refreshers: ['outputFormat'],
496
+ required: false,
497
+ props: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ outputFormat }) {
498
+ const props = {};
499
+ const outputFormatStr = outputFormat;
500
+ props['languageHints'] = pieces_framework_1.Property.ShortText({
501
+ displayName: 'Language',
502
+ description: 'Language code (e.g., "en", "fr", "de"). Leave empty for auto-detection.',
503
+ required: false,
504
+ });
505
+ props['pageRange'] = pieces_framework_1.Property.ShortText({
506
+ displayName: 'Page Range',
507
+ description: 'For PDFs: "1-5" or "1,3,5". Leave empty for all pages.',
508
+ required: false,
509
+ });
510
+ // Only show visual options when relevant
511
+ if (outputFormatStr === 'visual' || outputFormatStr === 'complete') {
512
+ props['enableObjectDetection'] = pieces_framework_1.Property.Checkbox({
513
+ displayName: 'Enable Object Detection',
514
+ description: 'Detect objects in images (people, animals, items)',
515
+ required: false,
516
+ defaultValue: true,
517
+ });
518
+ props['enableCaptions'] = pieces_framework_1.Property.Checkbox({
519
+ displayName: 'Generate Image Captions',
520
+ description: 'AI-generated descriptions of image content',
521
+ required: false,
522
+ defaultValue: true,
523
+ });
524
+ }
525
+ return props;
526
+ }),
527
+ }),
330
528
  },
331
529
  run(context) {
332
530
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
333
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
334
- const { fileUrl, outputFormat = 'raw', languageHints = 'auto', objectCategories = 'auto', pageRange = 'auto', } = context.propsValue;
335
- // Get file data from URL first (we need filename to determine processing method)
336
- if (!fileUrl) {
337
- throw new Error('File URL is required');
338
- }
339
- // Handle both string URLs and file objects with URL property (from previous steps)
340
- let urlToDownload;
341
- if (typeof fileUrl === 'string') {
342
- urlToDownload = fileUrl;
531
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
532
+ const { importMethod, fileInput, outputFormat, ocrMode, advancedOptions } = context.propsValue;
533
+ // Cast values to proper types
534
+ const importMethodValue = importMethod || 'url';
535
+ const outputFormatValue = outputFormat || 'raw';
536
+ const ocrModeValue = ocrMode || 'auto';
537
+ // Extract dynamic properties using bracket notation
538
+ const file = fileInput === null || fileInput === void 0 ? void 0 : fileInput['file'];
539
+ const fileUrl = fileInput === null || fileInput === void 0 ? void 0 : fileInput['fileUrl'];
540
+ const fileContent = fileInput === null || fileInput === void 0 ? void 0 : fileInput['fileContent'];
541
+ const fileName = fileInput === null || fileInput === void 0 ? void 0 : fileInput['fileName'];
542
+ const languageHints = (advancedOptions === null || advancedOptions === void 0 ? void 0 : advancedOptions['languageHints']) || undefined;
543
+ const pageRange = (advancedOptions === null || advancedOptions === void 0 ? void 0 : advancedOptions['pageRange']) || undefined;
544
+ const enableObjectDetection = (_a = advancedOptions === null || advancedOptions === void 0 ? void 0 : advancedOptions['enableObjectDetection']) !== null && _a !== void 0 ? _a : (outputFormatValue === 'visual' || outputFormatValue === 'complete');
545
+ const enableCaptions = (_b = advancedOptions === null || advancedOptions === void 0 ? void 0 : advancedOptions['enableCaptions']) !== null && _b !== void 0 ? _b : (outputFormatValue === 'visual' || outputFormatValue === 'complete');
546
+ let fileData;
547
+ let filename;
548
+ let mimeType;
549
+ // ========================================
550
+ // FILE INPUT HANDLING
551
+ // ========================================
552
+ if (importMethodValue === 'upload') {
553
+ if (!file) {
554
+ throw new Error('Please select a file to upload');
555
+ }
556
+ if (file.data) {
557
+ if (Buffer.isBuffer(file.data)) {
558
+ fileData = file.data;
559
+ }
560
+ else if (file.base64) {
561
+ fileData = Buffer.from(file.base64, 'base64');
562
+ }
563
+ else {
564
+ throw new Error('Invalid file format');
565
+ }
566
+ }
567
+ else if (file.base64) {
568
+ fileData = Buffer.from(file.base64, 'base64');
569
+ }
570
+ else {
571
+ throw new Error('File data is missing');
572
+ }
573
+ filename = file.filename || 'uploaded-file';
574
+ const ext = getFileExtension(filename);
575
+ mimeType = ext ? mime_types_1.default.lookup(ext) || 'application/octet-stream' : 'application/octet-stream';
343
576
  }
344
- else if (fileUrl && typeof fileUrl === 'object' && fileUrl.url) {
345
- // Handle case where user selected file object from previous step (e.g., Web Form)
346
- urlToDownload = fileUrl.url;
577
+ else if (importMethodValue === 'base64') {
578
+ if (!fileContent) {
579
+ throw new Error('Please provide Base64 content');
580
+ }
581
+ if (!fileName) {
582
+ throw new Error('Please provide a file name with extension');
583
+ }
584
+ try {
585
+ fileData = Buffer.from(fileContent, 'base64');
586
+ }
587
+ catch (error) {
588
+ throw new Error(`Invalid Base64 content: ${error.message}`);
589
+ }
590
+ filename = fileName;
591
+ const ext = getFileExtension(filename);
592
+ mimeType = ext ? mime_types_1.default.lookup(ext) || 'application/octet-stream' : 'application/octet-stream';
347
593
  }
348
594
  else {
349
- throw new Error('File URL must be a string or an object with a url property');
350
- }
351
- const downloaded = yield downloadFileFromUrl(urlToDownload);
352
- const fileData = downloaded.data;
353
- const filename = downloaded.filename;
354
- const mimeType = downloaded.mimeType;
355
- // Get Azure credentials from environment
356
- const docIntelligenceEndpoint = (_a = process.env) === null || _a === void 0 ? void 0 : _a['AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT'];
357
- const docIntelligenceKey = (_b = process.env) === null || _b === void 0 ? void 0 : _b['AZURE_DOCUMENT_INTELLIGENCE_KEY'];
358
- const visionEndpoint = (_c = process.env) === null || _c === void 0 ? void 0 : _c['AZURE_COMPUTER_VISION_ENDPOINT'];
359
- const visionKey = (_d = process.env) === null || _d === void 0 ? void 0 : _d['AZURE_COMPUTER_VISION_KEY'];
360
- // Determine what we need based on file type and output format
361
- const isImage = isImageFile(filename);
362
- const isDocument = isDocumentFile(filename);
363
- // Check requirements based on what we'll actually use
364
- const needsDocumentIntelligence = isDocument || outputFormat === 'structured' || outputFormat === 'unified';
365
- const needsComputerVision = isImage || outputFormat === 'metadata' || outputFormat === 'unified';
366
- // Only validate credentials for services we actually need
367
- if (needsDocumentIntelligence && (!docIntelligenceEndpoint || !docIntelligenceKey)) {
368
- throw new Error('AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT and AZURE_DOCUMENT_INTELLIGENCE_KEY environment variables are required for document processing');
369
- }
370
- if (needsComputerVision && (!visionEndpoint || !visionKey)) {
371
- throw new Error('AZURE_COMPUTER_VISION_ENDPOINT and AZURE_COMPUTER_VISION_KEY environment variables are required for image processing');
595
+ // URL method
596
+ if (!fileUrl) {
597
+ throw new Error('Please provide a file URL');
598
+ }
599
+ let urlToDownload;
600
+ if (typeof fileUrl === 'object') {
601
+ if (fileUrl.data || fileUrl.base64) {
602
+ throw new Error('You selected a file object. Please change Import Method to "File Upload" or select the URL property.');
603
+ }
604
+ if (fileUrl.url) {
605
+ urlToDownload = fileUrl.url;
606
+ }
607
+ else {
608
+ throw new Error('Invalid file URL format');
609
+ }
610
+ }
611
+ else {
612
+ urlToDownload = fileUrl;
613
+ }
614
+ const downloaded = yield downloadFileFromUrl(urlToDownload);
615
+ fileData = downloaded.data;
616
+ filename = downloaded.filename;
617
+ mimeType = downloaded.mimeType;
372
618
  }
373
- // If neither service is available and we can't process the file, throw error
374
- if (!needsDocumentIntelligence && !needsComputerVision) {
375
- throw new Error('Unable to determine processing method for this file type');
619
+ // ========================================
620
+ // ENVIRONMENT & VALIDATION
621
+ // ========================================
622
+ const docIntelligenceEndpoint = (_c = process.env) === null || _c === void 0 ? void 0 : _c['AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT'];
623
+ const docIntelligenceKey = (_d = process.env) === null || _d === void 0 ? void 0 : _d['AZURE_DOCUMENT_INTELLIGENCE_KEY'];
624
+ const visionEndpoint = (_e = process.env) === null || _e === void 0 ? void 0 : _e['AZURE_COMPUTER_VISION_ENDPOINT'];
625
+ const visionKey = (_f = process.env) === null || _f === void 0 ? void 0 : _f['AZURE_COMPUTER_VISION_KEY'];
626
+ const isImage = isImageFile(filename, mimeType);
627
+ const isDocument = isDocumentFile(filename, mimeType);
628
+ // Determine effective OCR mode
629
+ let effectiveOcrMode = ocrModeValue;
630
+ if (ocrModeValue === 'auto') {
631
+ // Use accurate mode for documents, fast for images
632
+ effectiveOcrMode = isDocument ? 'accurate' : 'fast';
376
633
  }
377
- // Check file size (15MB limit)
378
- const maxSize = 15 * 1024 * 1024; // 15MB
634
+ // File size check (15MB limit)
635
+ const maxSize = 15 * 1024 * 1024;
379
636
  if (fileData.length > maxSize) {
380
- throw new Error(`File size (${(fileData.length / 1024 / 1024).toFixed(2)}MB) exceeds maximum allowed size (15MB)`);
637
+ throw new Error(`File too large (${(fileData.length / 1024 / 1024).toFixed(1)}MB). Maximum is 15MB.`);
381
638
  }
382
- // File type already determined above
639
+ // ========================================
640
+ // PROCESSING
641
+ // ========================================
383
642
  let docIntelligenceResult = null;
384
643
  let visionResult = null;
385
- // Process with Document Intelligence for documents or when structured data is needed
386
- if ((isDocument || outputFormat === 'structured' || outputFormat === 'unified') && docIntelligenceEndpoint && docIntelligenceKey) {
644
+ let docIntelligenceError = null;
645
+ let visionError = null;
646
+ // Determine which services to use based on file type
647
+ // Computer Vision only supports: JPEG, PNG, GIF, BMP, TIFF, PDF (for OCR)
648
+ // Document Intelligence supports: PDF, JPEG, PNG, BMP, TIFF, DOCX, XLSX, PPTX, HTML
649
+ const ext = getFileExtension(filename);
650
+ const visionSupportedFormats = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'tif', 'pdf'];
651
+ const isVisionCompatible = visionSupportedFormats.includes(ext) || isImage || mimeType.includes('image') || mimeType.includes('pdf');
652
+ // Office documents (xlsx, docx, pptx) should ONLY use Document Intelligence
653
+ const officeFormats = ['xlsx', 'xls', 'docx', 'doc', 'pptx', 'ppt'];
654
+ const isOfficeDocument = officeFormats.includes(ext) ||
655
+ mimeType.includes('spreadsheet') ||
656
+ mimeType.includes('wordprocessing') ||
657
+ mimeType.includes('presentation') ||
658
+ mimeType.includes('msword') ||
659
+ mimeType.includes('ms-excel') ||
660
+ mimeType.includes('ms-powerpoint');
661
+ // Check if file type is unknown (no extension, generic mime type)
662
+ const isUnknownType = !ext && (mimeType === 'application/octet-stream' || !mimeType);
663
+ // Process with Document Intelligence for documents, structured output, OR unknown file types
664
+ // Document Intelligence is more versatile and can handle many formats
665
+ const useDocIntelligence = isDocument || isUnknownType || outputFormatValue === 'structured' || outputFormatValue === 'complete';
666
+ if (useDocIntelligence && docIntelligenceEndpoint && docIntelligenceKey) {
387
667
  try {
388
- docIntelligenceResult = yield processWithDocumentIntelligence(fileData, filename, docIntelligenceEndpoint, docIntelligenceKey, languageHints !== 'auto' ? languageHints : undefined, pageRange !== 'auto' ? pageRange : undefined);
668
+ docIntelligenceResult = yield processWithDocumentIntelligence(fileData, docIntelligenceEndpoint, docIntelligenceKey, effectiveOcrMode, languageHints, pageRange);
389
669
  }
390
670
  catch (error) {
391
- console.warn('Document Intelligence processing failed:', error.message);
392
- // Continue with vision if document intelligence fails
671
+ docIntelligenceError = error.message || 'Unknown error';
672
+ console.warn('Document Intelligence processing failed:', docIntelligenceError);
393
673
  }
394
674
  }
395
- // Process with Computer Vision for images or when metadata is needed
396
- if ((isImage || outputFormat === 'metadata' || outputFormat === 'unified' || !docIntelligenceResult) && visionEndpoint && visionKey) {
675
+ // Process with Computer Vision for images or visual output
676
+ // Skip for Office documents (xlsx, docx, etc.) as Computer Vision doesn't support them
677
+ // Also try as fallback if Document Intelligence failed and file might be an image
678
+ const useComputerVision = !isOfficeDocument && (isImage ||
679
+ outputFormatValue === 'visual' ||
680
+ outputFormatValue === 'complete' ||
681
+ (!docIntelligenceResult && isVisionCompatible) ||
682
+ (!docIntelligenceResult && isUnknownType) // Try Vision as fallback for unknown types
683
+ );
684
+ if (useComputerVision && visionEndpoint && visionKey) {
397
685
  try {
398
- // For images, enable object detection by default if metadata/unified format is requested
399
- // Otherwise, only enable if explicitly requested via objectCategories
400
- const shouldEnableObjectDetection = isImage && (outputFormat === 'metadata' || outputFormat === 'unified')
401
- ? 'enabled' // Enable for images when metadata is requested
402
- : (objectCategories !== 'auto' ? objectCategories : undefined);
403
- visionResult = yield processWithComputerVision(fileData, filename, visionEndpoint, visionKey, languageHints !== 'auto' ? languageHints : undefined, shouldEnableObjectDetection);
686
+ visionResult = yield processWithComputerVision(fileData, visionEndpoint, visionKey, effectiveOcrMode, enableObjectDetection, enableCaptions, languageHints);
404
687
  }
405
688
  catch (error) {
406
- console.warn('Computer Vision processing failed:', error.message);
689
+ visionError = error.message || 'Unknown error';
690
+ console.warn('Computer Vision processing failed:', visionError);
691
+ }
692
+ }
693
+ // Validate we got some results - provide helpful error message
694
+ if (!docIntelligenceResult && !visionResult) {
695
+ const errors = [];
696
+ if (docIntelligenceError) {
697
+ errors.push(`Document Intelligence: ${docIntelligenceError}`);
407
698
  }
699
+ else if (!useDocIntelligence) {
700
+ errors.push('Document Intelligence: Not used for this file type/output format');
701
+ }
702
+ else if (!docIntelligenceEndpoint || !docIntelligenceKey) {
703
+ errors.push('Document Intelligence: Not configured (missing AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT or KEY)');
704
+ }
705
+ if (visionError) {
706
+ errors.push(`Computer Vision: ${visionError}`);
707
+ }
708
+ else if (isOfficeDocument) {
709
+ errors.push(`Computer Vision: Not used (Office documents require Document Intelligence only)`);
710
+ }
711
+ else if (!useComputerVision) {
712
+ errors.push('Computer Vision: Not used for this file type/output format');
713
+ }
714
+ else if (!visionEndpoint || !visionKey) {
715
+ errors.push('Computer Vision: Not configured (missing AZURE_COMPUTER_VISION_ENDPOINT or KEY)');
716
+ }
717
+ // Add file info for debugging
718
+ const fileInfo = `File: "${filename}", Extension: "${ext || 'none'}", MIME: "${mimeType}", Size: ${(fileData.length / 1024).toFixed(1)}KB`;
719
+ errors.push(fileInfo);
720
+ throw new Error(`Processing failed.\n${errors.join('\n')}`);
408
721
  }
409
- // Extract text
410
- let rawText = '';
722
+ // ========================================
723
+ // BUILD RESPONSE
724
+ // ========================================
725
+ // Extract text with confidence
726
+ let textResult;
411
727
  if (docIntelligenceResult) {
412
- rawText = extractTextFromDocumentIntelligenceResult(docIntelligenceResult);
728
+ textResult = extractTextFromDocumentIntelligenceResult(docIntelligenceResult);
413
729
  }
414
- else if (visionResult) {
415
- rawText = extractTextFromVisionResult(visionResult);
730
+ else {
731
+ const visionText = extractTextFromVisionResult(visionResult);
732
+ textResult = Object.assign(Object.assign({}, visionText), { isHandwritten: false });
416
733
  }
417
- // Build response based on output format
418
734
  const response = {};
419
- if (outputFormat === 'raw' || outputFormat === 'unified') {
420
- response.rawText = rawText;
735
+ // Always include text info
736
+ if (outputFormatValue === 'raw') {
737
+ response.text = textResult.text;
738
+ response.confidence = textResult.confidence ? Math.round(textResult.confidence * 100) / 100 : null;
739
+ response.isHandwritten = textResult.isHandwritten;
421
740
  }
422
- if (outputFormat === 'structured' || outputFormat === 'unified') {
423
- if (docIntelligenceResult) {
424
- response.structuredData = {
425
- pages: (_e = docIntelligenceResult.pages) === null || _e === void 0 ? void 0 : _e.map(page => {
426
- var _a, _b, _c;
427
- return ({
428
- pageNumber: page.pageNumber,
429
- words: (_a = page.words) === null || _a === void 0 ? void 0 : _a.map(w => ({
430
- content: w.content,
431
- boundingBox: w.boundingBox,
432
- })),
433
- lines: (_b = page.lines) === null || _b === void 0 ? void 0 : _b.map(l => ({
434
- content: l.content,
435
- boundingBox: l.boundingBox,
436
- })),
437
- tables: (_c = page.tables) === null || _c === void 0 ? void 0 : _c.map(t => ({
438
- rowCount: t.rowCount,
439
- columnCount: t.columnCount,
440
- cells: t.cells.map(c => ({
441
- content: c.content,
442
- rowIndex: c.rowIndex,
443
- columnIndex: c.columnIndex,
444
- })),
445
- })),
446
- });
447
- }),
448
- paragraphs: (_f = docIntelligenceResult.paragraphs) === null || _f === void 0 ? void 0 : _f.map(p => ({
449
- content: p.content,
450
- boundingRegions: p.boundingRegions,
741
+ if (outputFormatValue === 'structured' || outputFormatValue === 'complete') {
742
+ response.text = {
743
+ content: textResult.text,
744
+ confidence: textResult.confidence ? Math.round(textResult.confidence * 100) / 100 : null,
745
+ isHandwritten: textResult.isHandwritten,
746
+ };
747
+ response.structure = {
748
+ pages: ((_g = docIntelligenceResult === null || docIntelligenceResult === void 0 ? void 0 : docIntelligenceResult.pages) === null || _g === void 0 ? void 0 : _g.map(page => {
749
+ var _a, _b;
750
+ return ({
751
+ pageNumber: page.pageNumber,
752
+ dimensions: page.width && page.height ? { width: page.width, height: page.height, unit: page.unit } : undefined,
753
+ lineCount: ((_a = page.lines) === null || _a === void 0 ? void 0 : _a.length) || 0,
754
+ wordCount: ((_b = page.words) === null || _b === void 0 ? void 0 : _b.length) || 0,
755
+ });
756
+ })) || [],
757
+ tables: ((_h = docIntelligenceResult === null || docIntelligenceResult === void 0 ? void 0 : docIntelligenceResult.tables) === null || _h === void 0 ? void 0 : _h.map(table => ({
758
+ rowCount: table.rowCount,
759
+ columnCount: table.columnCount,
760
+ cells: table.cells.map(cell => ({
761
+ content: cell.content,
762
+ row: cell.rowIndex,
763
+ column: cell.columnIndex,
764
+ rowSpan: cell.rowSpan,
765
+ columnSpan: cell.columnSpan,
766
+ isHeader: cell.kind === 'columnHeader' || cell.kind === 'rowHeader',
451
767
  })),
452
- keyValuePairs: (_g = docIntelligenceResult.keyValuePairs) === null || _g === void 0 ? void 0 : _g.map(kvp => {
453
- var _a;
454
- return ({
455
- key: kvp.key.content,
456
- value: (_a = kvp.value) === null || _a === void 0 ? void 0 : _a.content,
457
- });
458
- }),
459
- };
460
- }
768
+ }))) || [],
769
+ figures: ((_j = docIntelligenceResult === null || docIntelligenceResult === void 0 ? void 0 : docIntelligenceResult.figures) === null || _j === void 0 ? void 0 : _j.map(figure => {
770
+ var _a, _b, _c;
771
+ return ({
772
+ caption: (_a = figure.caption) === null || _a === void 0 ? void 0 : _a.content,
773
+ pageNumber: (_c = (_b = figure.boundingRegions) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.pageNumber,
774
+ });
775
+ })) || [],
776
+ paragraphs: ((_k = docIntelligenceResult === null || docIntelligenceResult === void 0 ? void 0 : docIntelligenceResult.paragraphs) === null || _k === void 0 ? void 0 : _k.map(para => {
777
+ var _a, _b;
778
+ return ({
779
+ content: para.content,
780
+ role: para.role, // e.g., 'title', 'sectionHeading', 'footnote'
781
+ pageNumber: (_b = (_a = para.boundingRegions) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.pageNumber,
782
+ });
783
+ })) || [],
784
+ keyValuePairs: ((_l = docIntelligenceResult === null || docIntelligenceResult === void 0 ? void 0 : docIntelligenceResult.keyValuePairs) === null || _l === void 0 ? void 0 : _l.map(kvp => {
785
+ var _a;
786
+ return ({
787
+ key: kvp.key.content,
788
+ value: ((_a = kvp.value) === null || _a === void 0 ? void 0 : _a.content) || '',
789
+ confidence: kvp.confidence ? Math.round(kvp.confidence * 100) / 100 : null,
790
+ });
791
+ })) || [],
792
+ };
461
793
  }
462
- if (outputFormat === 'metadata' || outputFormat === 'unified') {
463
- response.visualMetadata = {
464
- detectedObjects: ((_h = visionResult === null || visionResult === void 0 ? void 0 : visionResult.objects) === null || _h === void 0 ? void 0 : _h.map(obj => ({
465
- object: obj.object,
466
- confidence: obj.confidence,
794
+ if (outputFormatValue === 'visual' || outputFormatValue === 'complete') {
795
+ response.visual = {
796
+ // Image caption (AI-generated description)
797
+ caption: (visionResult === null || visionResult === void 0 ? void 0 : visionResult.captionResult) ? {
798
+ text: visionResult.captionResult.text,
799
+ confidence: Math.round(visionResult.captionResult.confidence * 100) / 100,
800
+ } : null,
801
+ // Dense captions (multiple region descriptions)
802
+ denseCaptions: ((_m = visionResult === null || visionResult === void 0 ? void 0 : visionResult.denseCaptionsResult) === null || _m === void 0 ? void 0 : _m.values.map(cap => ({
803
+ text: cap.text,
804
+ confidence: Math.round(cap.confidence * 100) / 100,
805
+ boundingBox: cap.boundingBox,
806
+ }))) || [],
807
+ // Detected objects
808
+ objects: ((_o = visionResult === null || visionResult === void 0 ? void 0 : visionResult.objectsResult) === null || _o === void 0 ? void 0 : _o.values.map(obj => {
809
+ var _a, _b;
810
+ return ({
811
+ name: ((_a = obj.tags[0]) === null || _a === void 0 ? void 0 : _a.name) || 'unknown',
812
+ confidence: Math.round((((_b = obj.tags[0]) === null || _b === void 0 ? void 0 : _b.confidence) || 0) * 100) / 100,
813
+ boundingBox: obj.boundingBox,
814
+ });
815
+ })) || ((_p = visionResult === null || visionResult === void 0 ? void 0 : visionResult.objects) === null || _p === void 0 ? void 0 : _p.map(obj => ({
816
+ name: obj.object,
817
+ confidence: Math.round(obj.confidence * 100) / 100,
467
818
  boundingBox: obj.rectangle,
468
819
  }))) || [],
469
- tags: ((_j = visionResult === null || visionResult === void 0 ? void 0 : visionResult.tags) === null || _j === void 0 ? void 0 : _j.map(tag => ({
820
+ // Image tags
821
+ tags: ((_q = visionResult === null || visionResult === void 0 ? void 0 : visionResult.tagsResult) === null || _q === void 0 ? void 0 : _q.values.map(tag => ({
470
822
  name: tag.name,
471
- confidence: tag.confidence,
472
- }))) || [],
473
- styles: ((_k = docIntelligenceResult === null || docIntelligenceResult === void 0 ? void 0 : docIntelligenceResult.styles) === null || _k === void 0 ? void 0 : _k.map(style => ({
474
- confidence: style.confidence,
475
- isHandwritten: style.isHandwritten,
823
+ confidence: Math.round(tag.confidence * 100) / 100,
824
+ }))) || ((_r = visionResult === null || visionResult === void 0 ? void 0 : visionResult.tags) === null || _r === void 0 ? void 0 : _r.map(tag => ({
825
+ name: tag.name,
826
+ confidence: Math.round(tag.confidence * 100) / 100,
476
827
  }))) || [],
477
828
  };
829
+ // Include text if not already included
830
+ if (outputFormatValue === 'visual') {
831
+ response.text = textResult.text;
832
+ }
478
833
  }
479
- if (outputFormat === 'unified') {
834
+ if (outputFormatValue === 'complete') {
480
835
  response.metadata = {
481
836
  filename,
482
837
  mimeType,
483
838
  fileSize: fileData.length,
839
+ fileSizeFormatted: `${(fileData.length / 1024).toFixed(1)} KB`,
840
+ pageCount: ((_s = docIntelligenceResult === null || docIntelligenceResult === void 0 ? void 0 : docIntelligenceResult.pages) === null || _s === void 0 ? void 0 : _s.length) || ((_u = (_t = visionResult === null || visionResult === void 0 ? void 0 : visionResult.readResult) === null || _t === void 0 ? void 0 : _t.pages) === null || _u === void 0 ? void 0 : _u.length) || 1,
484
841
  processedAt: new Date().toISOString(),
485
- pageCount: ((_l = docIntelligenceResult === null || docIntelligenceResult === void 0 ? void 0 : docIntelligenceResult.pages) === null || _l === void 0 ? void 0 : _l.length) || ((_o = (_m = visionResult === null || visionResult === void 0 ? void 0 : visionResult.readResult) === null || _m === void 0 ? void 0 : _m.pages) === null || _o === void 0 ? void 0 : _o.length) || 1,
842
+ ocrMode: effectiveOcrMode,
843
+ services: {
844
+ documentIntelligence: !!docIntelligenceResult,
845
+ computerVision: !!visionResult,
846
+ },
486
847
  };
487
848
  }
488
849
  return response;
@@ -1 +1 @@
1
- {"version":3,"file":"extract-text-from-image.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/image-document-intelligence/src/lib/actions/extract-text-from-image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract-text-from-image.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/image-document-intelligence/src/lib/actions/extract-text-from-image.ts"],"names":[],"mappings":"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"}