Fourstore commited on
Commit
d9df056
·
verified ·
1 Parent(s): 7af47a9

Create imageProcessor

Browse files
Files changed (1) hide show
  1. endpoints/imageProcessor +68 -0
endpoints/imageProcessor ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const fs = require('fs');
2
+ const https = require('https');
3
+
4
+ async function extractTextFromImage(imageBuffer) {
5
+ return new Promise((resolve, reject) => {
6
+ const base64Image = imageBuffer.toString('base64');
7
+
8
+ const requestData = JSON.stringify({
9
+ "contents": [
10
+ {
11
+ "parts": [
12
+ {
13
+ "inline_data": {
14
+ "mime_type": "image/png",
15
+ "data": base64Image
16
+ }
17
+ },
18
+ {
19
+ "text": "Berikan text yang ada di gambar ini saja, tidak ada informasi lain cukup yang ada di gambar saja"
20
+ }
21
+ ]
22
+ }
23
+ ]
24
+ });
25
+
26
+ const options = {
27
+ hostname: 'generativelanguage.googleapis.com',
28
+ path: '/v1beta/models/gemini-2.5-flash-lite:generateContent',
29
+ method: 'POST',
30
+ headers: {
31
+ 'x-goog-api-key': 'AIzaSyBvQUzfkfgmdxMHmOVFEXdQq3DFi4siRVE',
32
+ 'Content-Type': 'application/json',
33
+ 'Content-Length': Buffer.byteLength(requestData)
34
+ }
35
+ };
36
+
37
+ const req = https.request(options, (res) => {
38
+ let data = '';
39
+
40
+ res.on('data', (chunk) => {
41
+ data += chunk;
42
+ });
43
+
44
+ res.on('end', () => {
45
+ try {
46
+ const response = JSON.parse(data);
47
+ if (response.candidates && response.candidates[0] && response.candidates[0].content) {
48
+ const text = response.candidates[0].content.parts[0].text;
49
+ resolve({ status: true, response: text });
50
+ } else {
51
+ resolve({ status: false, response: 'Tidak ada teks yang ditemukan' });
52
+ }
53
+ } catch (error) {
54
+ reject(error);
55
+ }
56
+ });
57
+ });
58
+
59
+ req.on('error', (error) => {
60
+ reject(error);
61
+ });
62
+
63
+ req.write(requestData);
64
+ req.end();
65
+ });
66
+ }
67
+
68
+ module.exports = { extractTextFromImage };