Files
ai-utils/src/vision.ts
ztimson 3121d542d4
All checks were successful
Publish Library / Build NPM Project (push) Successful in 1m4s
Publish Library / Tag Version (push) Successful in 17s
OCR
2026-06-09 08:29:46 -04:00

24 lines
772 B
TypeScript

import {createWorker} from 'tesseract.js';
import {AbortablePromise, Ai} from './ai.ts';
export class Vision {
constructor(private ai: Ai) {}
/**
* Convert image to text using Optical Character Recognition
* @param {string} path Path to image
* @returns {AbortablePromise<string | null>} Promise of extracted text with abort method
*/
ocr(path: string): AbortablePromise<string | null> {
let worker: any;
const p = (async () => {
worker = await createWorker(this.ai.options.ocr || 'eng', 2, {cachePath: this.ai.options.path});
const {data} = await worker.recognize(path);
await worker.terminate();
return data.text.trim() || null;
})().finally(() => worker?.terminate());
return Object.assign(p, {abort: () => worker?.terminate()});
}
}