【问题标题】:Scan datamatrix codes from pdf file and save them to csv从pdf文件扫描datamatrix代码并将它们保存到csv
【发布时间】:2021-06-10 13:58:01
【问题描述】:

一个任务: 扫描pdf文件中的datamatrix代码并保存到csv。

File

最终结果: 010466010514027621)ZPTsFWoUgqe,91009492ZCUruNv8/rQRlZyH/mZhkRY11D5aW4aLjpVn3DVxFIi7l9gV/pvguWxiVnpTRI0SFkNx1dPavcQYjiQ6DCSnNw==

我无法在脑海中形成这段代码的结构。

我开始研究处理 pdf 文件的库,特别是 PyPDF2,但遇到了一个问题。 PyPDF2 在文件中找不到任何内容。我试图在pdf文件的代码中找到序列但什么都看不懂。

请帮助我处理这段代码(写入 csv 除外)。 有可能从 PDF 中提取信息而不渲染到图像中,因为大量代码和代码速度起着重要作用。

如果有人知道pdf的结构,请告诉我是否可以绘制出datamatrix代码的每个像素(黑色方块)的位置,是否可以将所有这些翻译成最终形式.

如有任何信息,我将不胜感激。谢谢。

【问题讨论】:

    标签: python-3.x csv pdf gs1-datamatrix


    【解决方案1】:

    你可以使用我的解决方案:

    import fitz, cv2, argparse
    from pylibdmtx import pylibdmtx
    
    def reader(pdf, csv):
        pdf_file = fitz.open(pdf)
        csv_file = open(csv, 'ab')
        for current_page_index in range(len(pdf_file)):
          for img_index,img in enumerate(pdf_file.get_page_images(current_page_index)):
            image = fitz.Pixmap(pdf_file, img[0])
            if image.height>50:
              image.save("1.png")
              img = cv2.imread('1.png')
              border = cv2.copyMakeBorder(img, 10, 10, 10, 10, cv2.BORDER_CONSTANT, None, value = [255, 255, 255]) 
              csv_file.write(pylibdmtx.decode(border)[0].data)
              csv_file.write(b'\n')
        csv_file.close()
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多