@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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
34
|
-
|
|
61
|
+
if (url.includes('localhost:4200/api')) {
|
|
62
|
+
urlsToTry.push(url.replace('localhost:4200/api', 'localhost:3000'));
|
|
35
63
|
}
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
40
|
-
|
|
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
|
-
|
|
51
|
-
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
//
|
|
60
|
-
|
|
61
|
-
//
|
|
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
|
|
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 =
|
|
162
|
+
const maxAttempts = 120; // 2 minutes max for larger documents
|
|
91
163
|
while (attempts < maxAttempts) {
|
|
92
|
-
yield new Promise((resolve) => setTimeout(resolve, 1000));
|
|
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(
|
|
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
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
//
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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
|
|
174
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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
|
-
|
|
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
|
-
|
|
230
|
-
|
|
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
|
-
|
|
233
|
-
|
|
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
|
-
|
|
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
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
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
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
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
|
|
408
|
+
description: 'Extract text, tables, figures, and visual elements from images and documents using Azure AI services with OCR',
|
|
279
409
|
props: {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
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
|
|
294
|
-
{ label: '
|
|
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
|
-
|
|
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
|
|
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: '
|
|
324
|
-
{ label: '
|
|
325
|
-
{ label: '
|
|
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 {
|
|
335
|
-
//
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
//
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
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 (
|
|
345
|
-
|
|
346
|
-
|
|
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
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
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
|
-
//
|
|
374
|
-
|
|
375
|
-
|
|
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
|
-
//
|
|
378
|
-
const maxSize = 15 * 1024 * 1024;
|
|
634
|
+
// File size check (15MB limit)
|
|
635
|
+
const maxSize = 15 * 1024 * 1024;
|
|
379
636
|
if (fileData.length > maxSize) {
|
|
380
|
-
throw new Error(`File
|
|
637
|
+
throw new Error(`File too large (${(fileData.length / 1024 / 1024).toFixed(1)}MB). Maximum is 15MB.`);
|
|
381
638
|
}
|
|
382
|
-
//
|
|
639
|
+
// ========================================
|
|
640
|
+
// PROCESSING
|
|
641
|
+
// ========================================
|
|
383
642
|
let docIntelligenceResult = null;
|
|
384
643
|
let visionResult = null;
|
|
385
|
-
|
|
386
|
-
|
|
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,
|
|
668
|
+
docIntelligenceResult = yield processWithDocumentIntelligence(fileData, docIntelligenceEndpoint, docIntelligenceKey, effectiveOcrMode, languageHints, pageRange);
|
|
389
669
|
}
|
|
390
670
|
catch (error) {
|
|
391
|
-
|
|
392
|
-
|
|
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
|
|
396
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
410
|
-
|
|
722
|
+
// ========================================
|
|
723
|
+
// BUILD RESPONSE
|
|
724
|
+
// ========================================
|
|
725
|
+
// Extract text with confidence
|
|
726
|
+
let textResult;
|
|
411
727
|
if (docIntelligenceResult) {
|
|
412
|
-
|
|
728
|
+
textResult = extractTextFromDocumentIntelligenceResult(docIntelligenceResult);
|
|
413
729
|
}
|
|
414
|
-
else
|
|
415
|
-
|
|
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
|
-
|
|
420
|
-
|
|
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 (
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
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
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
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 (
|
|
463
|
-
response.
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
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
|
-
|
|
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
|
-
|
|
474
|
-
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 (
|
|
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
|
-
|
|
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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"}
|