Windows11下使用node-tesseract-ocr报write EOF错误求解决
问题描述
在Windows 11系统中运行Node.js脚本,使用node-tesseract-ocr读取PNG文件文本内容,执行代码如下:
const tesseract = require("node-tesseract-ocr"); const fs = require("fs/promises"); async function main() { const img = await fs.readFile("buddy-screenshot.png"); const text = await tesseract.recognize(img); console.log("Result:", text); } main();
运行后出现以下错误:
node:events:371 throw er; // Unhandled 'error' event ^ Error: write EOF at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:98:16) Emitted 'error' event on Socket instance at: at emitErrorNT (node:internal/streams/destroy:157:8) at emitErrorCloseNT (node:internal/streams/destroy:122:3) at processTicksAndRejections (node:internal/process/task_queues:83:21) { errno: -4095, code: 'EOF', syscall: 'write' }
错误原因
这个write EOF错误主要由以下情况导致:
- Tesseract OCR引擎未正确安装或配置:
node-tesseract-ocr是Tesseract引擎的Node.js封装,若系统未安装Tesseract或未将其加入环境变量,Node.js进程无法与引擎建立正常通信,写入数据时连接提前断开。 - Buffer传入方式不兼容:部分版本的
node-tesseract-ocr对直接传入文件Buffer的支持存在问题,导致数据传输异常。 - 依赖版本兼容性问题:老旧版本的
node-tesseract-ocr可能存在与Windows环境下Node.js的兼容性BUG。
解决方法
- 安装并配置Tesseract OCR引擎
- 下载Windows版Tesseract安装包(推荐UB Mannheim编译的稳定版本),安装时勾选Add to PATH选项。
- 重启命令行窗口,执行
tesseract --version验证引擎是否能正常调用。
- 修改代码,传入文件路径而非Buffer
改为直接传入文件路径,避免Buffer处理的兼容性问题:const tesseract = require("node-tesseract-ocr"); async function main() { const text = await tesseract.recognize("buddy-screenshot.png"); console.log("Result:", text); } main(); - 更新
node-tesseract-ocr到最新稳定版
执行以下命令重新安装依赖:npm uninstall node-tesseract-ocr npm install node-tesseract-ocr - 验证图片路径正确性
确保buddy-screenshot.png位于脚本执行的当前工作目录,或使用绝对路径指定文件位置。
内容的提问来源于stack exchange,提问作者Lemec Cinq
相关产品推荐
相关产品推荐

