|
|
@@ -0,0 +1,26 @@
|
|
|
+
|
|
|
+const fs = require('fs');
|
|
|
+const tfnode = require('@tensorflow/tfjs-node');
|
|
|
+const mobilenet = require('@tensorflow-models/mobilenet');
|
|
|
+
|
|
|
+const modelPromise = mobilenet.load();
|
|
|
+
|
|
|
+module.exports.parse = async (fileObj) => {
|
|
|
+ try {
|
|
|
+ const model = await modelPromise;
|
|
|
+ const tfimage = tfnode.node.decodeImage(fs.readFileSync(fileObj.path));
|
|
|
+ return {
|
|
|
+ value: {
|
|
|
+ tags: ((await model.classify(tfimage)) || [])
|
|
|
+ .map(x => x.className)
|
|
|
+ .reduce((acc, i) => acc = acc.concat(i.split(",").map(x => x.trim())), [])
|
|
|
+ }
|
|
|
+ };
|
|
|
+ }
|
|
|
+ catch (err) {
|
|
|
+ console.error(err);
|
|
|
+ }
|
|
|
+ return {};
|
|
|
+}
|
|
|
+
|
|
|
+module.exports.createThumbnail = async (fileObj, w, h, quality) => { return null; };
|