两种方案对比分析

SDK直接拍照 vs 文件监控自动上传 — 选择最适合您的方案

方案一

📷 SDK 相机拍照模式

通过 WebSocket 直接连接高拍仪 SDK(eloamwebservice),在网页端完成拍照、纠偏、预览和上传的全流程。

  • 无需安装额外软件,打开浏览器即可拍照
  • 支持自动纠偏(SetDeskew)框选试卷
  • 照片直接返回 base64,网页预览后上传
  • 适合少量、即时拍照场景
方案二

📁 文件监控模式

使用官方 EloamCamera.exe 软件拍照(功能完整),Node.js 监控保存目录,发现新图片即自动上传到阿里云。

  • 利用官方软件完整功能(自动框选、多种模式)
  • 拍照后全自动上传,无需人工干预
  • 适合批量、连续扫描作业
  • 可作为 SDK 方案的补充或替代

工作流程对比

方案一:SDK 拍照流程

1用户在浏览器点击「拍照」按钮
2服务器通过 WebSocket(9000) 连接 eloamwebservice
3发送 InitDevs → (可选 SetDeskew) → OpenCamera
4等待 3 秒让摄像头稳定,发送 ScanImage
5SDK 返回 base64 JPEG 数据
6服务器转发 base64 到浏览器预览
7用户确认后点击「上传到阿里云」或自动上传

方案二:文件监控流程

1双击 start.bat,服务启动自动开始监控
2chokidar 开始监听指定文件夹
3用户打开 EloamCamera.exe 拍照保存
4软件保存 JPG/PNG 到监控目录
5chokidar 检测到新文件(awaitWriteFinish 等待写入完成)
6服务器自动将文件上传到阿里云
7(可选)上传后删除源文件

详细对比

对比维度方案一:SDK 拍照方案二:文件监控
实现原理 WebSocket 连接 eloamwebservice:9000,发送 SDK 命令链 chokidar 监听文件系统 add 事件
用户操作 打开浏览器 → 点「拍照」→ 预览 → 上传 打开 EloamCamera.exe → 拍照 → 保存(自动上传)
拍照功能 基础 仅拍照,无实时预览、无手动框选 完整 官方软件全部功能(自动框选、视频预览、多种模式)
自动纠偏 SetDeskew SDK 接口(可靠性依赖 SDK) 官方软件自带(实时预览框选效果更好)
上传流程 拍照→预览→手动点上传到阿里云(也可自动上传) 全自动 保存即上传阿里云,无需人工干预
批量效率 每张需等待 3 秒+,逐张操作 连续拍照连续上传,互不阻塞
网络依赖 依赖 需要浏览器到服务器网络 依赖 服务器到阿里云网络(拍照无需网络)
SDK 依赖 强依赖 eloamwebservice 必须运行且正常 无依赖 不调用 SDK,只需官方软件
稳定性 InitDevs 偶发 ret=2,需重试;WebSocket 可能断连 文件系统事件稳定成熟,无中间服务
部署复杂度 需安装 eloamwebservice,端口 9000 不能冲突 只需 Node.js 服务,不依赖外部服务
图片质量 可调 quality=80,约 200-500KB 全量 EloamCamera 软件原始分辨率保存
文件名控制 灵活 可自定义任意文件名格式 受限于 使用 EloamCamera 生成的原始文件名
需要安装 eloamwebservice + Node.js 服务 EloamCamera.exe + Node.js 服务
监控反馈 实时预览、上传状态即刻可见 上传历史页面(每 5 秒自动刷新)

各场景推荐方案

选择 SDK 拍照模式

  • ✓ 偶尔拍照(每天几张到几十张)
  • ✓ 需要实时预览 + 确认后上传
  • ✓ 需要自定义文件名格式
  • ✓ 不想启动额外的软件(浏览器就够了)
  • ✓ 只需要基础拍照功能,不需要高级框选

选择文件监控模式

  • ✓ 批量扫描(试卷、文档上百份)
  • ✓ 希望"只管放纸、自动上传"
  • ✓ 需要官方软件的完整框选预览功能
  • ✓ 对稳定性要求高,不希望依赖 SDK
  • ✓ 多人共用一台电脑,操作越简单越好

局限性说明

方案一:SDK 拍照局限性方案二:文件监控局限性
SDK 偶发不稳定 InitDevs 有时返回 ret=2 (Init again),需自动重试
拍照速度较慢 每次需 InitDevs + OpenCamera + 等待 3s + ScanImage,约 5-6 秒一张
无实时预览 拍照前看不到摄像头画面,只能盲拍
端口冲突风险 eloamwebservice 占用 9000 端口,可能被 EloamCamera.exe 抢占
无法手动框选 仅依靠 SetDeskew 自动纠偏,效果不如人工调整
WebSocket 连接限制 浏览器到服务器再到 SDK,链路较长
密码明文保存 FTP密码存在本地 ftp_config.json,使用本机的老师都能看到
需要额外软件 必须启动 EloamCamera.exe 才能拍照
文件名不可控 上传文件名基于 EloamCamera 生成的原始名称
无实时预览 上传结果仅在历史记录中查看,无照片预览
延迟反馈 文件检测有约 1 秒延迟(awaitWriteFinish 等待写入完成),不是即时
无法删除失败文件 上传失败时源文件仍保留,需手动处理
缺少图片预处理 不能在上传前压缩或加水印
密码明文保存 FTP密码存在本地 ftp_config.json,使用本机的老师都能看到

能力对比速览

能力项SDK 拍照文件监控胜出
操作便捷性⭐⭐⭐ 需要浏览器操作⭐⭐⭐⭐⭐ 双击即用,保存即上传监控
拍照效率(批量)⭐⭐ 每张 5-6 秒⭐⭐⭐⭐ 连续拍无等待监控
功能完整性⭐⭐ 基础拍照+纠偏⭐⭐⭐⭐⭐ 官方完整功能监控
稳定性⭐⭐⭐ SDK 偶有异常⭐⭐⭐⭐⭐ 文件系统成熟稳定监控
部署复杂度⭐⭐⭐ 需配置 SDK 服务⭐⭐⭐⭐ 只需 Node.js监控
文件名自定义⭐⭐⭐⭐⭐ 完全可控⭐⭐ 使用原始文件名SDK
实时预览⭐⭐⭐⭐ 网页预览⭐⭐ 无预览SDK
上传反馈⭐⭐⭐⭐ 即时显示状态⭐⭐⭐ 历史记录刷新SDK

总结建议

推荐首选「文件监控模式」作为日常使用方案。只需双击 start.bat,服务自动启动并开始监控文件夹。打开 EloamCamera.exe 拍照保存,图片立即自动上传到阿里云。全程无需打开浏览器

相比 SDK 方案,文件监控模式更稳定(不依赖 WebSocket 中间服务)、更高效(连续拍照不等待)、功能更完整(官方软件全部功能可用)。唯一的不足是无法自定义文件名和没有网页预览,但通过上传历史记录可以查看结果。

⚠ 两种方案的共同安全问题:阿里云FTP密码保存在本机 ftp_config.json 明文文件中,所有能使用这台电脑的老师都能看到。建议阿里云上为每个学校创建独立的FTP账号,以便在密码泄露时隔离风险。

SDK 拍照模式适合以下场景:没有 EloamCamera.exe 的环境、偶尔拍几张、需要网页端实时看到照片预览后再决定是否上传。两种方案可以同时启用、互补使用——日常批量用文件监控,临时单独拍用 SDK 模式。