【问题标题】:Azure Computer Vision API - OCR to Text on PDF filesAzure 计算机视觉 API - PDF 文件上的 OCR 到文本
【发布时间】:2019-03-04 15:42:35
【问题描述】:

我正在尝试利用计算机视觉 API 对作为扫描文档但被视为图像 PDF 的 PDF 文件进行 OCR。

我已经对其进行了测试,它告诉我 PDF 是“InvalidImageFormat”、“输入数据不是有效图像”。当我在 PNG 上测试它时,它工作得很好。

是否有针对 PDF 图像使用 API,或者是否有 Azure API 可以结合使用来执行 PDF > PNG > Text?

【问题讨论】:

    标签: pdf ocr microsoft-cognitive


    【解决方案1】:

    编辑

    由于回答了额外的服务,虽然我没有亲自尝试过其中一些,但它们可能适合这个目的。

    https://docs.microsoft.com/en-us/azure/search/cognitive-search-concept-intro

    在未来的某个时间点,当它进入 GA 时。 https://aws.amazon.com/textract/

    原答案

    不幸的是,Azure 的计算机视觉 API 没有 PDF 集成。要使用 Azure 计算机视觉,您需要自己将 pdf 更改为图像(JPG、PNG、BMP、GIF)。

    Google 现在提供 pdf 集成,到目前为止,我已经从测试中看到了一些非常好的结果。

    这是通过视觉客户端的 asyncBatchAnnotateFiles 方法完成的(我一直在使用 API 的 NodeJS 变体)

    它可以处理多达2000页的文件,结果分为20个页面段并输出到谷歌云存储。

    https://cloud.google.com/vision/docs/pdf

    【讨论】:

    【解决方案2】:

    Microsoft Azure 最近提供的最新 OCR 服务称为Recognize Text,其性能明显优于之前的OCR engine。识别文本现在可以与 Read 一起使用,它可以读取和数字化多达 200 页的 PDF 文档。

    【讨论】:

    • 确实,好消息!多页 TIFF(即传真)也
    • 识别文本现已被弃用。阅读取代它并增加了相当多的功能:Upgrade guideRead API spec
    【解决方案3】:

    有一个名为 Azure 表单识别器(目前为预览版 - 2019 年 11 月)的新认知服务 API,应该可以完成这项工作:

    https://azure.microsoft.com/en-gb/services/cognitive-services/form-recognizer/

    它可以处理你想要的文件格式:

    格式必须是 JPG、PNG 或 PDF(文本或扫描)。嵌入文本的 PDF 最好,因为性格上没有错误的可能性 提取和定位。

    https://docs.microsoft.com/en-us/azure/cognitive-services/form-recognizer/overview

    这是官方表单识别器 API 文档的链接:

    https://westus2.dev.cognitive.microsoft.com/docs/services/form-recognizer-api/operations/AnalyzeWithCustomModel

    注意:

    【讨论】:

    • PDF 中的一些限制:页数应少于 50 页,没有单选按钮或复选框,并且不支持复杂的表格。
    【解决方案4】:

    抱歉,您必须将 PDF 页面分解为图像(JPG 和 PNG)。然后将图像发送到计算机视觉。将其分解也是一个好主意,这样您就不必对所有页面进行 OCR,只需对重要的页面进行 OCR。

    【讨论】:

      【解决方案5】:

      有一个新的读取 API 可以处理 PDF https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/concept-recognizing-text

      Computer Vision’s Read API is Microsoft’s latest OCR technology that extracts
      printed text (seven languages), handwritten text (English only), digits, and 
      currency symbols from images and multi-page PDF documents.
      

      读取 API 参考:https://westcentralus.dev.cognitive.microsoft.com/docs/services/computer-vision-v3-ga/operations/5d986960601faab4bf452005

      它工作得很好,但还没有很多语言。

      【讨论】:

        【解决方案6】:

        您可以使用 fitz 将 pdf 转换为每个页面的图像。

        # import packages
        import fitz
        import numpy as np
        import cv2
        
        #set path to pdf
        path2doc = <path to pdf>
        
        #open pdf with fitz
        doc = fitz.open(path2doc)
        
        # determine number of pages
        pagecount = doc.pageCount
        
        # loop over all pages and convert to image (here jpeg)
        for i in range(pagecount):
            page = doc[i]
            pix = page.getPixmap().getImageData(output='JPEG')
            jpg_as_np = np.frombuffer(pix, dtype=np.uint8)
            image = cv2.imdecode(jpg_as_np, flags=1)
        

        完成后,您可以将它们发送到 API

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-12-09
          • 1970-01-01
          • 2020-09-16
          • 1970-01-01
          • 2021-12-30
          • 1970-01-01
          相关资源
          最近更新 更多