我正在尝试使用 tesseract.js 节点模块从图像中提取文本,我正在使用 nextjs 14。即使我已经安装了 tesseract.js 模块,我也会收到错误,当我尝试提取时,模块找不到:
Error: Cannot find module '...(projectdirectory)/.next/worker-script/node/index.js'
at Module._resolveFilename (node:internal/modules/cjs/loader:1142:15)
at Module._load (node:internal/modules/cjs/loader:983:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:142:12)
at MessagePort.<anonymous> (node:internal/main/worker_thread:186:26)
at [nodejs.internal.kHybridDispatch] (node:internal/event_target:822:20)
at MessagePort.<anonymous> (node:internal/per_context/messageport:23:28) {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
它应该查看不在 .next 中的节点模块 因此,我尝试更改文件中worker-sript的路径
const worker = await createWorker('eng',1,{workerPath: "./node_modules/tesseract.js/src/worker-script/node/index.js"});
但是更改路径后会抛出另一个错误:
TypeError: fetch is not a function
我不知道为什么会发生...从我这边来看一切都很好,除了这个..功能之外,我的项目中一切正常
我尝试更改工作模块的路径,这里是代码:
import {createWorker} from 'tesseract.js';
export const imgToText = async () =>{
//const converter = await createWorker('eng')
const worker = await createWorker('eng',1,{workerPath: "./node_modules/tesseract.js/src/worker-script/node/index.js"});
try {
const img = "/fake.png"
const text = await worker.recognize(img);
console.log(text.data.text);
return text.data.text;
} catch (error) {
console.log("image extraction error", error);
throw error;
} finally {
await worker.terminate();
}
}
我希望这里有图像中的文字。
但是我得到了
fetch is not a function
,所以我尝试安装节点获取模块,但它也不起作用。
谢谢你!
我遇到了同样的问题,我偶然发现了这篇文章,按照第一条评论中的说明进行操作,结果成功了!
尝试修改您的配置以将其标记为外部包。请参阅https://nextjs.org/docs/app/api-reference/next-config-js/serverComponentsExternalPackages 这对于许多 Node.js 库来说是必需的。它改变了代码的转译和打包方式,但我不知道具体细节。
https://www.reddit.com/r/nextjs/comments/18qa0eo/deleted_by_user/