Signature_pad: 使用标志捕获生物特征数据

创建于 2017-01-20  ·  52评论  ·  资料来源: szimek/signature_pad

你好。

是否可以获得与标志相关的生物特征数据? 我说,书写速度,行数等等。我需要确保用户不会出于法律目的拒绝自己签名的真实性。 这个组件是我见过的唯一一个能写出平滑符号的组件,所以我想数据正在被捕获。 最终目标是获取最终用户签名 + 与该签名相关的生物特征信息 + 合法的第三方时间戳; 然后,对整个包进行编码,并发送到数据库。 有可能吗?

非常感谢。

enhancement

最有用的评论

关于这个主题的任何更新?

所有52条评论

这取决于你到底有什么数据,但我认为这是可能的。 有ISO/IEC 19794-7:2014 “_指定以多维时间序列形式捕获的签名/签名行为数据的数据交换格式_”,所以使用这个标准而不是提出我们自己的标准会很棒. 不幸的是,我无权访问此文档,也不知道格式实际上是什么样子:/

非常感谢您的回答! 我会期待这个标准和
我会在这里报告我可以获得的任何预付款以供进一步使用。

El 21/1/2017 10:21,“Szymon Nowak”通知@github.com escribió:

这取决于你到底有什么数据,但我认为它会是
可能的。 有 ISO/IEC 19794-7:2014
http://www.iso.org/iso/catalogue_detail.htm?csnumber=55938指定用于签名/签名行为数据的数据交换格式多维时间序列的形式”,所以它会很棒
使用这个标准而不是我们自己的标准。 不幸的是,我没有
可以访问此文档,但不知道格式的实际外观
喜欢 :/


您收到此消息是因为您编写了该主题。
直接回复此邮件,在 GitHub 上查看
https://github.com/szimek/signature_pad/issues/213#issuecomment-274250329 ,
或使线程静音
https://github.com/notifications/unsubscribe-auth/APdPAIzn5SZW2nwNKDD3evH4ijb_1Mk7ks5rUc4wgaJpZM4LphIH
.

@kalihos您还可以尝试最新的测试版(1.6.0-beta.1),它有#toData方法返回所有按行分组的点,但目前它只返回时间、x 和 y 坐标每个点。 给它添加速度和加速度相当容易,但我认为我们无法捕捉到其他任何东西。

您可以在演示页面上试用此 beta 版本 - 只需绘制任何内容,然后在开发工具控制台中调用signaturePad.toData()

当然,捕捉速度和加速度会很棒,而且足够了
法律上保证签名者不能拒绝授权。 无论如何,
新的#toData 方法对我来说是一个很好的通知。 我会尝试并反馈
你。

非常感谢!

2017-01-22 14:35 GMT+01:00 Szymon Nowak [email protected]

@kalihos https://github.com/kalihos你也可以试试最新的
beta 版本 (1.6.0-beta.1),它具有返回所有的 #toData 方法
点按行分组,但目前它只返回时间、x 和 y
每个点的坐标。 添加速度和
加速到它,但我认为我们无法捕捉到其他任何东西。

您可以在演示页面上试用此测试版
https://szimek.github.io/signature_pad/ - 画任何东西然后
在开发工具控制台中调用 signaturePad.toData()。


你收到这个是因为你被提到了。
直接回复此邮件,在 GitHub 上查看
https://github.com/szimek/signature_pad/issues/213#issuecomment-274331306
或使线程静音
https://github.com/notifications/unsubscribe-auth/APdPAH0oBwyertm7moGPS24Fubi33MKOks5rU1sJgaJpZM4LphIH
.

我想加速度和速度可以从时间戳中推断出来——但是,就其价值而言,如果在调用toData时可以选择包含这些数据点,或者有一种新方法来估算它们,那就太好了.

顺便说一句 - 我喜欢测试版。 已经对其进行了一些测试,我期待将来能够将原始数据存储在数据库中。 好东西! 👍

@JD-罗布斯

顺便说一句 - 我喜欢测试版。

谢谢! :)

已经对其进行了一些测试,我期待将来能够将原始数据存储在数据库中。

这正是我更喜欢使用一些现有标准来存储这些东西的原因。 一旦人们开始将它存储在他们的数据库中,就很难在下一个版本中对其进行修改。 最初,它是私有的,仅用于绘制 SVG 并帮助进行单元测试。

我只是想知道每行中第一个点的速度和加速度应该是多少 - 0null/undefined

我已经尝试了您出色的测试版,效果很好! 正如您所说,如果能够提供额外的速度和加速度,那就太棒了。 在法律方面,我认为第一点为 0 或 null/undefined 无关紧要,因为它仅用于将一个标志与另一个先前保存的标志进行比较,因此任何人都可以检查是否是同一个人同时签署了两次. 但是,从技术上讲,将第一个点的加速度设置为 0 可能会更好。我认为存储完整数组会更容易,因为 0 总是更容易导出到文件的格式......否则我们会存储“null-5-3-7-2 ...”,在我看来这听起来有点令人困惑......

就标准而言,正如我所说,我正在尝试获取有关它的详细信息,但是不同国家之间在复杂性上的高度法律差异根本没有帮助......例如,在西班牙,没有关于这种“数字手写”的标志,但它被接受了。 但是,与传统的手写标志或数字认证标志相比,您需要证明您的过程是好的,并且您可以确保标志的真实性,但基于西班牙法律命令(http:// noticias.juridicas.com/base_datos/Admin/l59-2003.html - 抱歉,只有西班牙语)。

你好,我们又见面了!

我无论如何都无法访问标准文档,但我一直在查看西班牙法律,并且您当前捕获的数据还不错。 只有压力点和倾斜度等数据是不可能从普通设备上捕获的,但它们并不是完全必要的。 无论如何,速度和加速度将是惊人的,以确保用户不会拒绝他自己的标志。 我正在开始集成您的组件的开发。 如果您在不久的将来添加此类额外数据,我将尝试调整数据库中的数据。 它的工作真的很棒...

非常感谢!

我想如果一个点已经有了速度和加速度,那么它就不再需要时间了。 我会尝试更新它,虽然它可能需要一段时间。 也许有人想创建一个 PR? 😉

@szimek

这正是我更喜欢使用一些现有标准来存储这些东西的原因。 一旦人们开始将它存储在他们的数据库中,就很难在下一个版本中对其进行修改。 最初,它是私有的,仅用于绘制 SVG 并帮助进行单元测试。

这是一个非常好的观点 - 我什至没有想到这么多,我的兴奋之情(虽然我仍将存储 BLOB,但拥有原始生物特征信息也很好)。 我想任何未来的版本仍将基于坐标和时间的基本信息——因此,我想,如果事情发生变化(例如测量/尺度),总会有升级/转换路径。 但是,话又说回来,我并没有真正了解一切是如何实现的。

我只是想知道每行中第一个点的速度和加速度应该是多少 - 0 或空/未定义?

我猜速度会是0,并且将增量加速到第二点? 虽然,那么,最后一点的加速度是多​​少? 也许,两者都应该是 0 - 不确定。

我想如果一个点已经有了速度和加速度,那么它就不再需要时间了。 我会尝试更新它,虽然它可能需要一段时间。 也许有人想创建一个 PR? 😉

或者,我认为toDatafromData行为可以保持原样(只是为了将所需数据保持在最低限度)。

相反,原型上可能有一个附加方法,可以将toData的输出转换为{x: number, y: number, time: number, velocity: number, acceleration: number}[]

也许你是对的。 我可以从时间开始推断出这些信息,
认为比较两个标志可能更容易。 但是,是的,它会超载
不需要的对象。 我将使用您当前的测试版。
它是完美的原样!

El 24/1/2017 18:20,“Szymon Nowak”通知@github.com escribió:

我想如果一个点已经有速度和加速度,那么它就没有
真的需要时间了。 我会尝试更新它,虽然它可能需要一个
尽管。 也许有人想创建一个 PR? 😉


你收到这个是因为你被提到了。
直接回复此邮件,在 GitHub 上查看
https://github.com/szimek/signature_pad/issues/213#issuecomment-274872842
或使线程静音
https://github.com/notifications/unsubscribe-auth/APdPAG5bKRA4vv9_uqT563KiR1eqpZ_hks5rVjLCgaJpZM4LphIH
.

对此+1。
这是完成 ISO 19794-7 的好信息。

@javenosa你有什么信息ISO 19794-7实际指定的数据/格式吗?

笔的 X 坐标(向右移动时增加)
笔的 Y 坐标(移动到顶部时增加)
笔的 Z 坐标(在设备和笔之间移动升降机时增加,此处不适用)
水平速度(速度之间的差异)
垂直速度(速度之间的差异)
水平加速度
垂直加速度
时间
时间差异
压力
角度(此处不适用)

使用您的插件,您可以从此列表中获取最多的项目。

https://image.slidesharecdn.com/onlinesignaturerecognition-130201011136-phpapp02/95/online-signature-recognition-16-638.jpg?cb=1359681345

@javenosa谢谢! 如果有人想做 PR 来添加水平和垂直速度、加速度和时间差,那就太棒了 😉 就像你说的那样,我们无法真正获得 Z 坐标、压力或角度。

一个区别是,在 HTML 画布中,Y 坐标在移动到底部时会增加。 我不确定更改它以符合规范是否有意义,因为使用这些数据然后在画布上绘制会有点烦人,你可能需要知道画布的高度才能知道什么从...中减去

我还想知道我们是否还应该有一些其他方法(或#toData的选项)来返回笔颜色和每行的最大/最小宽度。 签名生物特征数据并不是真正需要的,所以如果有足够多的人抱怨它,也许以后可以添加它。

我认为可以在正确的设备上施加压力(当然,有压力支持,iPhone 6s、iPhone 6s Plus、iPhone 7、iPhone 7 Plus 等)。

我不知道可以在 JS 中获取这些值,这太棒了。

虽然查看https://pressurejs.com源代码,但实现起来似乎并不简单,而且我不确定它是否值得额外的代码,所以也许现在可以推迟它并最终在下一个版本中添加。

是的,pressurejs 是另一种选择(我只是从他们的网站复制 iphone 的版本哈哈)。
我明白你的意思,合理的逻辑。

我测试了pressurejs,似乎总是说不支持该设备(我尝试使用普通的Macbook触控板,iPhone ...)。 无论如何,查看来自@javenosa的规范信息,我认为我们目前正在使用 toData 方法将所有必要的信息存储到数据库中,除了压力(如果没有 Wacom 设备或类似设备很难获得)和角度(类似于以前) . 我目前正在我的应用程序中使用您出色的插件,并且效果很好。 而且,如果我以后需要分析任何签名,我可以读取生物特征信息并获取其他数据,例如速度或加速度。 我认为没有必要存储冗余信息......

@kalihos如果我们决定暂时跳过压力,那么您是对的,所有其他数据(即速度和加速度)都可以从时间中得出。 也许现在只返回时间并在 README 文件中提供一个脚本可以将其转换为具有这些附加数据的东西会更容易。

我只是想知道我们是否还需要返回画布的大小(或者可能更好的最大/最小 X 和 Y 坐标),以便可以反转 Y 坐标(底部为 0,顶部为 0)。

@szimek提供最大/最小 X 和 Y 坐标是个好主意。 但请注意,当保存到 SVG 时,由于可能调整大小,此类信息可能会令人困惑。 如果您想存储最大 X/Y,您不认为仅以 PNG 格式存储签名会更好吗?

尊重 README 文件中的脚本,是的,这是另一个好主意。 仅需要确保出于法律目的(法律主张)的正确比较。

@kalihos我正在考虑仅存储最大/最小X和Y,以便可以为生物特征数据反转Y。 正如@javenosa之前提到的,在规范中 0 位于底部,但在画布中 0 位于顶部。 如果我们想遵循规范,我需要一些方法来“反转”Y 坐标。 当然 max/min X 和 Y 也可以通过迭代#toData方法返回的所有点来导出,因此它不一定需要由#toData本身返回。

@szimek存储最大/最小 X 和 Y 是一个不错的选择,因此您可以恢复整个画布,并且可以完成规范。 无论如何,如果你能确保签名的真实性,我认为完全没有必要从字面上理解规范......但是将其存储为更“纯”是正确的;)

这事有进一步更新吗?
加速度和速度将是“toData”方法的一个惊人特性。

谢谢

@javenosa我目前专注于发布支持 SVG 的 1.6,但没有太多空闲时间,所以进展相当缓慢。

如果你想在 1.6 中看到它,欢迎 PRs ;) 此外,编写一个简单的脚本应该很容易,该脚本从toData获取输出并添加速度和加速度 - 你需要计算的只是时间已经返回的差异。

我不知道如何计算速度和加速度的公式,如果你能告诉我,我可以做 PR。

velocity = change in distance / change in time
acceleration = change in velocity / change in time

Point#velocityFrom(point)可以为你提供 2 点之间的速度,一旦你得到了,你可以使用几乎相同的代码来计算加速度:

// This one already exists
Point.prototype.velocityFrom = function (start) {
  return (this.time !== start.time) ? this.distanceTo(start) / (this.time - start.time) : 1;
};

// This one should be added
Point.prototype.accelerationFrom = function (start) {
  return (this.time !== start.time) ? this.velocityFrom(start) / (this.time - start.time) : 1;
};

如果时间相同,这两种方法可能应该返回0而不是1 ,因为位置也应该相同......

有趣的项目! ISO 生物测量标准是我们即将实施的 ASN-1 编码二进制标准。 幸运的是,2015 年发布了一个 XML 版本,它更容易实现。

关于来自 javenosa 的帖子,值得一提的是,大多数通道(在 ISO 标准中称为通道)都是可选的。 只有 x,y 和 t 是必需的,其余是可选的。 因此,拥有压力或 Z 坐标、角度等可能会很好,但对于完全兼容的生物特征数据集来说,这不是强制性的。 此外,稍后可以从现有的 x、y 和 t 值(例如(速度、加速度等))计算许多其他值。 所以我会从一个最基本的数据集开始:x,y,t ...

@Lonzak如果有人可以提供与现在的数据结构相比数据结构应该是什么样子的信息,那就太好了。 因为目前#toData方法返回 x、y 坐标和时间,所以我想这只是将当前结构转换为 ISO 标准所期望的任何内容的问题。

是的,没问题:查看架构和提供的示例。 对于 XML<->JS 转换,您可以使用jsonix 。 但正如已经提到的,这是较新的基于 XML 的标准,较旧的基于 ASN-1 的版本创建 imho (DER,支持编码指令的 BER 编码器)要复杂得多。我们没有找到任何支持的开源编码器/解码器那)...

@szimek很棒的库,在 react native 项目中使用它,它像黄油一样光滑!
@kalihos你知道一个好的签名识别/匹配sdk吗?

对不起,但我什么都没有。 我只将它用于低风险文件,所以
我不希望任何人拒绝他自己的标志。

El 21/9/2017 23:21,“Mark Vayngrib”通知@github.com escribió:

@szimek https://github.com/szimek很棒的库,在反应中使用它
原生项目,它像黄油一样光滑!
@kalihos https://github.com/kalihos你知道一个好的签名吗
识别/匹配sdk?


你收到这个是因为你被提到了。
直接回复此邮件,在 GitHub 上查看
https://github.com/szimek/signature_pad/issues/213#issuecomment-331285500
或使线程静音
https://github.com/notifications/unsubscribe-auth/APdPANXnge-rnI2TRuV9w-uqdp8kn_nbks5sktNEgaJpZM4LphIH
.

@mgierw谢谢! 但是,既然有了SignaturePad#toData ,就可以(可能)编写一个小脚本来获取该函数的输出并将其转换为该标准所期望的格式。 它甚至不必成为这个库的一部分。

就像是:

const data = convertToISO(signaturePad.toData());

如果有人提出这样的库,我会将有关它的信息添加到自述文件中。

你好,
这个对话真的很有趣!
有人尝试实施 ISO 标准吗?
我想帮忙

有这方面的消息吗?

当你在谈论速度和加速度时,力量呢? 有一个名为 pressurejs 的库,它允许您测量支持它的设备上的触摸力。 我不是这个话题,所以我对法律部分一无所知。

这个库的@Springrbua v3 支持指针事件,如果设备提供它,它可以提供此类信息。 所以这应该是可能的,但我不打算在第一个 3.0.0 版本中使用它,因为没有时间和设备来测试它。

感谢您的快速答复。 我最近才发现 pressurejs,所以我很好奇它是否也可以用于数字签名。

@szimek很棒的库,在 react native 项目中使用它,它像黄油一样光滑!

@mvayngrib您究竟是如何设法使其与 RN 一起工作的?

@ntelkedzhiev我正在使用react-native-signature-pad ,它是这个库的包装器。 或者更确切地说,我正在使用该包装器的一个分支,因为我想将宽度/高度与数据 URL 一起返回(https://github.com/tradle/react-native-signature-pad)

@mvayngrib感谢您告诉我! 我也在做同样的事情。 我还尝试更新https://github.com/kevinstumpf/react-native-signature-pad以使用此 repo 的新更新版本,但这需要比我现在更多的时间。 我认为所有模块都必须放在一个文件中,并且它们应该是 CJS/UMD 格式。

关于这个主题的任何更新?

嗨,我找到了生物识别实施标准。
https://github.com/biosignin/bsi-core
它有点旧,但值得作为起点

你好! 这将是该项目的一个很好的补充。 有什么消息吗?

你是说脉搏、血压、瞳孔大小、体温?

2020 年 9 月 15 日星期二凌晨 1:24 corrrso [email protected]写道:

你好! 这将是该项目的一个很好的补充。 有什么消息吗?


您收到此消息是因为您订阅了此线程。
直接回复此邮件,在 GitHub 上查看
https://github.com/szimek/signature_pad/issues/213#issuecomment-692553010
或退订
https://github.com/notifications/unsubscribe-auth/AK7MVVQPIVBQFFOLU3NGV4TSF4QCBANCNFSM4C5GCIDQ
.

--
这是我的签名

你是说脉搏、血压、瞳孔大小、体温?

2020 年 9 月 15 日星期二凌晨1:24 * > 写道:嗨! 这将是该项目的一个很好的补充。 有什么消息吗? — 您收到此消息是因为您订阅了此线程。 直接回复此邮件,在 GitHub< #213(评论) > 上查看,或取消订阅https://github.com/notifications/unsubscribe-auth/AK7MVVQPIVBQFFOLU3NGV4TSF4QCBANCNFSM4C5GCIDQ
——这是我的签名

他指的是 ISO 19794-7 规范中定义的行程压力、加速度、速度等。
这被认为对合法验证签名有用的生物特征数据,在意大利和西班牙等一些国家,仅签名图像是不够的。

你是说脉搏、血压、瞳孔大小、体温?

2020 年 9 月 15 日,星期二,凌晨 1:24 corrrso _ @ _。 * > 写道:嗨! 这将是该项目的一个很好的补充。 有什么消息吗? — 您收到此消息是因为您订阅了此线程。 直接回复此邮件,在 GitHub< #213(评论) > 上查看,或取消订阅https://github.com/notifications/unsubscribe-auth/AK7MVVQPIVBQFFOLU3NGV4TSF4QCBANCNFSM4C5GCIDQ
——这是我的签名

他指的是 ISO 19794-7 规范中定义的行程压力、加速度、速度等。
这被认为对合法验证签名有用的生物特征数据,在意大利和西班牙等一些国家,仅签名图像是不够的。

是的。 在西班牙,这是对高级数字签名的要求。

我尝试在https://github.com/javyxx/signature_pad中做简单的修改以节省压力

https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pressure

你好...

如果有人感兴趣,我在我的 fork 中做了一个基本的实现来在可用时捕获压力,我还实现了一个函数来将捕获的数据转换为 ISO 19794-7 规范。

欢迎任何评论、测试、修复或改进。

无论如何与这个项目合并可能会很有趣

我分叉了您的存储库以更新 szimek 原始存储库中的最新更改。
我认为添加加速度 AX 和 AY 很有趣,它们可以像速度一样计算。 (速度增量/增量时间)
你有什么意见?

你有什么意见?

您好,证书...

我也尝试添加加速,但我在验证 xml 数据结果时遇到了问题。 ISO 指定了一个最大值,有时我的值大于该最大值。 ISO中有一种方法可以让您按比例放大和缩小值,但对我来说并不太清楚,我没有更多时间进行调查。 对不起。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

crazzeto picture crazzeto  ·  8评论

lowe493 picture lowe493  ·  5评论

auam88 picture auam88  ·  4评论

MarcGodard picture MarcGodard  ·  8评论

Emmark picture Emmark  ·  4评论