Estoy desarrollando estas extensiones de Chrome y quiero usar la biblioteca tesseract.js para reconocer texto en una imagen. Solo que no tengo ni idea de cómo importar la biblioteca. Estoy usando el manifiesto V3, por lo que no es posible importar usando el enlace CDN (por lo que leí en la documentación). Así que instalé la biblioteca localmente usando npm --save , y luego la empaqueté en la web con npx webpack , pero aún no puedo obtener ninguna de las funciones importadas.
Probé las opciones dadas por la documentación de tesseract.js, que son:
import Tesseract from 'tesseract.js'; Tesseract.recognize( 'https://tesseract.projectnaptha.com/img/eng_bw.png', 'eng', { logger: m => console.log(m) } ).then(({ data: { text } }) => { console.log(text); })y
import { createWorker } from 'tesseract.js'; const worker = createWorker({ logger: m => console.log(m) }); (async () => { await worker.load(); await worker.loadLanguage('eng'); await worker.initialize('eng'); const { data: { text } } = await worker.recognize('https://tesseract.projectnaptha.com/img/eng_bw.png'); console.log(text); await worker.terminate(); })(); Pero tampoco funciona, porque tesseract.js no es un archivo válido según el trabajador del servicio. Como dije anteriormente, también intenté importarlo usando el enlace CDN, pero debido a las regulaciones de CSP, Chrome no puede importar bibliotecas no locales en Manifest V3 usando enlaces. en esta imagen se puede ver la estructura del archivo. Copié algunos de los archivos de tesseract de la carpeta node_modules en la carpeta de services para facilitar el acceso.
¿Alguien puede explicarme cómo se supone que debo importar tesseract.js en una extensión de Chrome? Aparentemente no es tan fácil como usar import Tesseract from 'tesseract.js';
No sé si esto es lo que @wOxxOm quiso decir con su respuesta,
El trabajador de servicio no puede crear trabajadores anidados, crbug.com/1219164. Tendrás que hacerlo en una página html visible.
pero cuando ejecuto tesseract.min.js COMO un script de contenido, ya sea mencionándolo en el manifiesto o usando chrome.scripting.executeScript() , Tesseract se convierte en una variable global para todos los scripts de contenido en esa página, y así puedo realmente lo uso en mi script. De todas formas gracias por tu ayuda