aboutsummaryrefslogtreecommitdiffstats
path: root/src/offscreen/ocr/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/offscreen/ocr/index.js')
-rw-r--r--src/offscreen/ocr/index.js59
1 files changed, 0 insertions, 59 deletions
diff --git a/src/offscreen/ocr/index.js b/src/offscreen/ocr/index.js
deleted file mode 100644
index dfe93c9..0000000
--- a/src/offscreen/ocr/index.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import Tesseract from "./static/tesseract.esm.min.js";
-
-let ocrWorker = null;
-const WORKER_PATH = chrome.runtime.getURL("offscreen/ocr/static/worker.min.js");
-const CORE_PATH = chrome.runtime.getURL("offscreen/ocr/static");
-
-/**
- * Creates (or reuses) a Tesseract.js worker and recognises text from
- * the given image data URL. The worker is configured to only recognise
- * uppercase alphanumerics (excluding `0`, `O`, `1`, `I`) suitable for
- * CAPTCHA text.
- *
- * @param {string} dataURL - A `data:image/png;base64,…` string.
- * @returns {{ text: string, confidence: number }}
- */
-async function performOcrInOffscreen(dataURL) {
- if (!ocrWorker) {
- ocrWorker = await Tesseract.createWorker("eng", 1, {
- workerPath: WORKER_PATH,
- corePath: CORE_PATH,
- workerBlobURL: false
- });
-
- await ocrWorker.setParameters({
- // The only characters that appears
- tessedit_char_whitelist: "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"
- });
- }
-
- const { data } = await ocrWorker.recognize(dataURL);
- return data;
-}
-
-// Listen for messages from the Service Worker
-/**
- * Handles two message types from the background service worker:
- * - `"OFFSCREEN_OCR_REQUEST"`: runs OCR on the supplied data URL.
- * - `"OFFSCREEN_TERMINATE_OCR_WORKER"`: terminates the worker to free memory.
- */
-chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
- if (message.type === "OFFSCREEN_OCR_REQUEST" && message.dataURL) {
- performOcrInOffscreen(message.dataURL)
- .then(function({ text, confidence }) {
- sendResponse({ success: true, text, confidence });
- })
- .catch(function(error) {
- sendResponse({ success: false, error: error.message });
- });
- return true;
- }
-
- if (message.type === "OFFSCREEN_TERMINATE_OCR_WORKER") {
- if (ocrWorker) {
- ocrWorker.terminate();
- ocrWorker = null;
- }
- sendResponse({ success: true });
- }
-});