Maison > développement back-end > Tutoriel Python > Conseils Python extrait et organise automatiquement les factures PDF par lots

Conseils Python extrait et organise automatiquement les factures PDF par lots

Libérer: 2023-08-10 15:58:20
avant
2085 Les gens l'ont consulté


Cet article partage une solution de cas de bureautique Python basée sur PDF, qui est également une véritable demande soulevée par une femme financière. Jetons d'abord un coup d'œil à la demande.

Description des exigences

Il existe plusieurs factures de type PDF dans un certain dossierConseils Python extrait et organise automatiquement les factures PDF par lots

Chaque facture PDF est de type Image pure, les informations textuelles à l'intérieur ne peuvent pas être copiées manuellement (en fait, la plupart des factures peuvent être copiées partie du texte, mais nous l'expliquerons sous forme d'images), à peu près comme le montre la figure ci-dessous : Conseils Python extrait et organise automatiquement les factures PDF par lots

Les conditions à remplir sont : obtenir le montant total, le numéro d'identification fiscale et l'émetteur , soit les trois cases suivantes Position : Conseils Python extrait et organise automatiquement les factures PDF par lots

Enfin combiné avec des opérations par lots, après avoir obtenu les informations ci-dessus, stockez-les dans Excel ! Conseils Python extrait et organise automatiquement les factures PDF par lots

Idées et mise en œuvre du code

L'exigence est essentiellement un problème de reconnaissance d'image, car le contenu du PDF est de type image et le texte ne peut pas être extrait directement par des méthodes conventionnelles. La solution consiste à utiliser la reconnaissance optique de caractères (OCR) pour reconnaître le texte dans l'image. Mais en même temps, il convient de noter que le PDF n'est pas une image après tout. Afin de compléter l'OCR, en plus de l'OCR lui-même, vous devez également télécharger GhostscriptImageMagick 用来完成类型转换。已 Windows En prenant le système comme exemple, vous devez installer le fichier. trois logiciels suivants sur votre ordinateur :

  1. Ghostscript 32 位
  2. Ghostscript 32 位
  • ImageMagick 32 位
  • tesseract-OCR 32 位
  • 三个软件的下载安装没有特殊的地方(tesseract 配置稍复杂但网络有上诸多教程,这里不再赘述),读者可自行搜索下载及配置,下面讲解代码。首先导入需要的模块:

    from wand.image import Image
    from PIL import Image as PI
    import pyocr
    import pyocr.builders
    import io
    import re
    import os
    import shutil
    Copier après la connexion

    具体的模块用途可以参考下面具体代码。其中 wandpyocr 由于是非标准库需要自行额外安装。打开命令行输入:

    pip install wand
    pip install pyocr
    Copier après la connexion

    本需求还涉及对接 Excel,可考虑利用 openpyxl 库的 Workbook 用以创建新的 Excel 文件:

    from openpyxl import Workbook
    Copier après la connexion

    需求中的 发票.pdf 放在桌面上。可通过下面基于 os 模块的代码获取桌面路径:

    # 获取桌面路径包装成一个函数
    def GetDesktopPath():
        return os.path.join(os.path.expanduser("~"), 'Desktop')
    
    path = GetDesktopPath() + r'\发票.pdf'
    Copier après la connexion

    获取配置好的 tesseract

    ImageMagick 32位🎜🎜 32 位</section></li></ol><p data-tool="mdnice编辑器" style="padding-top : 8px;padding-bottom : 8px;line-height : 26px ;color: black;"> ),读者可自行搜索下载及配置,下面讲解代码。首先导入需要的模块:🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">tool = pyocr.get_available_tools()[0]</pre><div class="contentsignin">Copier après la connexion</div></div><div class="contentsignin">Copier après la connexion</div></div><p data-tool="mdnice编辑器" style="padding-top: 8px;padding-bottom: 8px;line-height: 26px;color: black;">具体的模块用途可以参考下面具体代码。其中 <code style="padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family : "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(255, 100, 65);font-size: 13px;">wandpyocr本需求还涉及对接 Excel, openpyxl 库的