blob: 432811ef9303beee1f1506370ec327904342ab81 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import Tesseract from "./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");
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
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.type === "OFFSCREEN_OCR_REQUEST" && message.dataURL) {
performOcrInOffscreen(message.dataURL)
.then(({ text, confidence }) => {
sendResponse({ success: true, text, confidence });
})
.catch(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 });
}
});
|