【问题标题】:Connecting a webpage to an OCR engine [closed]将网页连接到 OCR 引擎 [关闭]
【发布时间】:2018-07-27 23:59:03
【问题描述】:

我正在开发一个网站,该网站有时会询问用户的名字、姓氏、带照片的 ID 和电子邮件地址。 现在我需要验证照片 ID 实际上与输入的名字和姓氏相同,这意味着需要进行一些 OCR 或图像处理。 我不希望通过外部 API 完成此操作,因为我必须向用户保证照片将保留在网站内并且不会暴露给其他第三方。 我真的不知道最好的方法,我在想也许是一些java应用程序?? 任何帮助将不胜感激。

【问题讨论】:

    标签: java web-applications web ocr


    【解决方案1】:

    这里最大的挑战是确保您的解决方案能够处理中等水平的流量。

    您可以通过 API 调用大量 OCR 引擎。 Tesseract 有 dozens of wrappers,并附有文档。显而易见的解决方案是(伪代码):

    show data input form with file upload.
    store uploaded file to disk.
    invoke OCR API with uploaded file, get back strings.
    pattern match (regex or similar) for name.
    

    但是,此解决方案可能会产生可扩展性问题/拒绝服务选项。 OCR 库将与 Web 请求同步运行,并在运行时使用该服务器线程; OCR 应用程序可能(相当)慢,攻击者可以通过上传很难转换的图像来真正减慢它。这意味着只有几个(相对而言)请求可能会导致您的网络服务器崩溃。

    最好将扫描任务放在异步队列中,并让不在您的 Web 请求上下文中运行的应用程序处理它,然后传回验证状态。

    在伪代码中(Web 应用程序)

    show data input form with file upload.
    create database record for user.
    store uploaded file to disk.
    put task on the job queue
    use client-side JavaScript to wait for update of database status (Ajax/React)
    when status changes, show update to user
    

    监听作业队列的应用程序:

    see new job.
    use disk file to start OCR process
    scan for name (Regex) in results
    update database record for this user
    

    大多数 Web 应用程序框架都支持队列;如果你使用 Java,你可以使用 JQM,Spring 支持这种类型的 out of the box.

    【讨论】:

    • 我认为 tesserect 将是这种场景的最佳解决方案,感谢您的异步想法,我可以只显示一个旋转图标并告诉用户不要关闭页面。
    猜你喜欢
    • 2010-12-31
    • 2012-04-19
    • 1970-01-01
    • 2010-12-15
    • 2010-12-15
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多