aboutsummaryrefslogtreecommitdiff
path: root/src/client/cognitive_services
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/cognitive_services')
-rw-r--r--src/client/cognitive_services/CognitiveServices.ts40
1 files changed, 9 insertions, 31 deletions
diff --git a/src/client/cognitive_services/CognitiveServices.ts b/src/client/cognitive_services/CognitiveServices.ts
index bbc438a9b..076907f09 100644
--- a/src/client/cognitive_services/CognitiveServices.ts
+++ b/src/client/cognitive_services/CognitiveServices.ts
@@ -42,7 +42,7 @@ export enum Confidence {
*/
export namespace CognitiveServices {
- const executeQuery = async <D, R>(service: Service, manager: APIManager<D>, data: D): Promise<Opt<R>> => {
+ const ExecuteQuery = async <D, R>(service: Service, manager: APIManager<D>, data: D): Promise<Opt<R>> => {
return fetch(Utils.prepend(`${RouteStore.cognitiveServices}/${service}`)).then(async response => {
let apiKey = await response.text();
if (!apiKey) {
@@ -103,15 +103,15 @@ export namespace CognitiveServices {
return request.post(options);
},
- analyzer: async (target: Doc, keys: string[], service: Service, converter: Converter) => {
+ analyzer: async (target: Doc, keys: string[], url: string, service: Service, converter: Converter) => {
let batch = UndoManager.StartBatch("Image Analysis");
- let imageData = Cast(target.data, ImageField);
+
let storageKey = keys[0];
- if (!imageData || await Cast(target[storageKey], Doc)) {
+ if (!url || await Cast(target[storageKey], Doc)) {
return;
}
let toStore: any;
- let results = await executeQuery<string, any>(service, Manager, imageData.url.href);
+ let results = await ExecuteQuery<string, any>(service, Manager, url);
if (!results) {
toStore = "Cognitive Services could not process the given image URL.";
} else {
@@ -122,6 +122,7 @@ export namespace CognitiveServices {
}
}
target[storageKey] = toStore;
+
batch.end();
}
@@ -129,31 +130,6 @@ export namespace CognitiveServices {
export type Face = { faceAttributes: any, faceId: string, faceRectangle: Rectangle };
- export const generateMetadata = async (target: Doc, threshold: Confidence = Confidence.Excellent) => {
- let converter = (results: any) => {
- let tagDoc = new Doc;
- results.tags.map((tag: Tag) => {
- let sanitized = tag.name.replace(" ", "_");
- let script = `return (${tag.confidence} >= this.confidence) ? ${tag.confidence} : "${ComputedField.undefined}"`;
- let computed = CompileScript(script, { params: { this: "Doc" } });
- computed.compiled && (tagDoc[sanitized] = new ComputedField(computed));
- });
- tagDoc.title = "Generated Tags";
- tagDoc.confidence = threshold;
- return tagDoc;
- };
- Manager.analyzer(target, ["generatedTags"], Service.ComputerVision, converter);
- };
-
- export const extractFaces = async (target: Doc) => {
- let converter = (results: any) => {
- let faceDocs = new List<Doc>();
- results.map((face: Face) => faceDocs.push(Docs.Get.DocumentHierarchyFromJson(face, `Face: ${face.faceId}`)!));
- return faceDocs;
- };
- Manager.analyzer(target, ["faces"], Service.Face, converter);
- };
-
}
export namespace Inking {
@@ -209,7 +185,8 @@ export namespace CognitiveServices {
analyzer: async (target: Doc, keys: string[], inkData: InkData) => {
let batch = UndoManager.StartBatch("Ink Analysis");
- let results = await executeQuery<InkData, any>(Service.Handwriting, Manager, inkData);
+
+ let results = await ExecuteQuery<InkData, any>(Service.Handwriting, Manager, inkData);
if (results) {
results.recognitionUnits && (results = results.recognitionUnits);
target[keys[0]] = Docs.Get.DocumentHierarchyFromJson(results, "Ink Analysis");
@@ -217,6 +194,7 @@ export namespace CognitiveServices {
let individualWords = recognizedText.filter((text: string) => text && text.split(" ").length === 1);
target[keys[1]] = individualWords.join(" ");
}
+
batch.end();
}