jscanify:支持 Node.js/浏览器/React 移动文档扫描仪

boyanx4个月前技术教程19

家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。

什么是 jscanify

Open-source pure Javascript implemented mobile document scanner. Powered with opencv.js. Supports the web, NodeJS, React, and others.

jscanify 是开源的纯 Javascript 实现的移动文档扫描仪,由 opencv.js 提供支持,支持: Web、NodeJS、React 等环境。

jscanify 的典型特征包括:

  • 纸张检测和突出显示
  • 带畸变校正的纸张扫描

目前 jscanify 在 Github 通过 MIT 协议开源,有超过 1k 的 star,是一个值得关注的前端开源项目。

如何使用 jscanify

首先导入相应的库:

$ npm i jscanify
// 安装 jscanify 然后导入
import jscanify from 'jscanify'

使用起来也非常简单:

const scanner = new jscanify();
// image的onload触发后可以调用方法
image.onload = function () {
  const highlightedCanvas = scanner.highlightPaper(image);
  document.body.appendChild(highlightedCanvas);
};

以上 image 元素表示图片对象,即 。

当然,jscanify 还支持在用户相机中突出显示纸张。以下代码不断从用户的相机读取数据并突出显示纸张:



// 原始视频

// 高亮后的视频

以下是利用
navigator.mediaDevices.getUserMedia 获取用户摄像头数据的示例:

const scanner = new jscanify();
const canvasCtx = canvas.getContext("2d");
const resultCtx = result.getContext("2d");
navigator.mediaDevices.getUserMedia({video: true}).then((stream) => {
  video.srcObject = stream;
  video.onloadedmetadata = () => {
    video.play();

    setInterval(() => {
      canvasCtx.drawImage(video, 0, 0);
      const resultCanvas = scanner.highlightPaper(canvas);
      resultCtx.drawImage(resultCanvas, 0, 0);
    }, 10);
  };
});

当然,开发者还可以通过利用 jsPDF 库和 toDataURL 函数来实现导出为 PDF 的目的。

download.addEventListener("click", function() {
  // jsPDF 只支持 jpeg
  var imgData = canvas.toDataURL("image/jpeg", 1.0);
  var pdf = new jsPDF();
  pdf.addImage(imgData, 'JPEG', 0, 0);
  pdf.save("download.pdf");
}, false);

更多关于 jscanify 的用法和示例可以参考文末资料,本文不再过多展开.

参考资料

https://github.com/ColonelParrot/jscanify

https://colonelparrot.github.io/jscanify/

https://stackoverflow.com/questions/23681325/convert-canvas-to-pdf

标签: pdfobject.js

相关文章

优于o1预览版,推理阶段KV缓存减一半,LightTransfer降本还能增效

LLM 在生成 long CoT 方面展现出惊人的能力,例如 o1 已能生成长度高达 100K tokens 的序列。然而,这也给 KV cache 的存储带来了严峻挑战。为应对这一难题,“hybri...

PDF格式发明人去世:享年81岁

来源:快科技美国当地时间4月17日周五,PDF格式发明人、Adobe公司联合创始人查尔斯格什克(Charles“Chuck”Geschke)不幸去世,享年81岁。PDF格式诞生于1992年,全程“Po...

如何使用 PDFKit 在 Node.js 中创建 PDF文件

借助 PDFKit 的强大功能,只需使用几个简单的命令即可制作精美的 PDF 文档。PDFKit 是一个 Node.js 库,可让开发人员轻松创建和使用 PDF 文件。 它提供了简单而有效的 API,...

破解机器人抓取透明物体难题,地瓜机器人 &CASIA新方案发布

IT之家 3 月 5 日消息,全球机器人领域顶会 ICRA 2025(IEEE 机器人与自动化国际会议)日前公布了论文录用结果,地瓜机器人主导研发的 DOSOD 开放词汇目标检测算法与 MODEST...

硕士博士福音:超好用的7大PDF工具汇总

作为硕士博士,日常工作之一就是阅读文献。PDF文件作为文献的载体,和大家的关系也是抬头不见低头见。我们都知道PDF文件的优势明显,能够避免格式错乱以及文件被误改,但不如Word文档修改得顺畅。在日常科...

文档在线预览(三)使用前端实现word、excel、pdf、ppt 在线预览

文档在线预览(三)使用前端实现word、excel、pdf、ppt 在线预览

关于实现文档在线预览的做法,之前文章提到了的两种实现方式:1、通过将文档转成图片:详见《文档在线预览(一)通过将txt、word、pdf转成图片实现在线预览功能》;2、将文档转成html:详见《文档在...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。