[PYTHON] Konvertieren Sie an E-Mails angehängte PDF-Dateien in das Textformat

Ein Unternehmen sendet mir eine E-Mail mit einem angehängten PDF.

Es ist auch möglich, einen Mail-Dienst zu verwenden, der PDFs wie Google Mail durchsuchen kann, aber ich wollte nicht zu viel ausgehen und ich wollte angemessen damit umgehen, wenn ein bestimmtes Schlüsselwort gefunden wurde, also habe ich Pythons pyPdf ausprobiert.

Zuerst. Aus den Mail-Einstellungen. Stellen Sie die E-Mail-Software ein, die Sie normalerweise verwenden, um "E-Mails auf dem Server zu belassen" und die auf dem Server verbleibenden E-Mails mit E-Mail- und Proc-E-Mails abzurufen. Dieses Mal habe ich die in der Cygwin-Umgebung verwendet und die folgende Einstellungsdatei geschrieben.

.fetchmailrc


defaults
  fetchall
  keep
  mda "/usr/bin/procmail"

poll pop.xxx.com
  protocol pop3
  port 110
  username "XXXXX"
  password "XXXXX"

.procmailrc


MAILDIR=$HOME/Mail/
DEFAULT=/dev/null

:0 H
* ^From:.*[email protected]
/var/spool/mail/t.uehara/

Wenn Sie dies schreiben, wird die E-Mail von test @ example in / var / spool / mail gespeichert, und andere E-Mails werden / dev / null sein (dh verworfen). Da es als Keep auf der Fetchmail-Seite geschrieben ist, bleibt es auf dem Server. Der Speicherort kann überall sein, aber es ist bequem, ihn mit Mutt usw. zu lesen, also habe ich ihn auf / var / spool / mail gesetzt.

Laden Sie dann pyPdf herunter und installieren Sie python setup.py.

http://pybrary.net/pyPdf/

PyPdf-Beispielprogramm und Beispiel für das Schreiben von Anhängen mithilfe eines E-Mail-Pakets Kopieren Sie .html) entsprechend und schreiben Sie ein Skript, um eine PDF-Datei und eine aus der PDF-Datei extrahierte Datei in einem geeigneten Ordner zu generieren.

pdfmail.py


import os
import sys

import email
import mailbox
import mimetypes

import pyPdf

def pdfmail(msgfile):

    fp = open(msgfile)
    msg = email.message_from_file(fp)
    fp.close()

    counter = 1
    for part in msg.walk():
        if part.get_content_maintype() == 'multipart':
            continue
        fname = part.get_filename()
        if not fname:
            ext = mimetypes.guess_extension(part.get_type())
            if not ext:
                ext = '.bin'
            fname = 'part-%03d%s' % (counter, ext)
        counter += 1

        if fname.find('.pdf') != -1:

            print fname

            fp = open('pdf/'+fname, 'wb')
            fp.write(part.get_payload(decode=True))
            fp.close()

            c = getPDFContent('pdf/'+fname).encode("ascii","xmlcharrefreplace")
            fp = open('pdf/'+fname+".txt", 'wb')
            fp.write(c)
            fp.close()
def getPDFContent(path):
    content = ""
    pdf = pyPdf.PdfFileReader(file(path, "rb"))
    for i in range(0, pdf.getNumPages()):
        content += pdf.getPage(i).extractText() + "\n"
    content = " ".join(content.replace(u"\xa0", " ").strip().split())
    return content

if __name__ == '__main__':

    maildir = '/var/spool/mail/t.uehara'
    m = mailbox.Maildir(maildir)
    for key in m.keys():
        pdfmail(maildir+'/new/'+key)

Erstellen Sie abschließend eine Batchdatei wie diese und führen Sie sie regelmäßig mit dem Windows-Taskplaner usw. aus. OK.

pdfmail.bat


C:\cygwin\bin\bash --login -i -c "fetchmail"
C:\cygwin\bin\python2.7.exe pdfmail.py

Recommended Posts

Konvertieren Sie an E-Mails angehängte PDF-Dateien in das Textformat
[Python] Konvertiert PDF-Text für jede Seite in CSV (2/24 Postscript)
Konvertieren Sie Markdown in Python in PDF
Konvertieren Sie A4 PDF alle 2 Seiten in A3
Konvertierung von pdf nach txt 2 [pyocr]
Konvertieren Sie PDF in Image mit ImageMagick
Konvertieren Sie eine große Anzahl von PDF-Dateien mit pdfminer in Textdateien
Konvertieren Sie Daten im XML-Format in Daten im TXT-Format (yolov3)
So konvertieren Sie das Format einfach aus Markdown
Konvertieren Sie mit pdfplumber von PDF in CSV
Konvertieren Sie PDF-Dateien mit GIMP in PNG-Dateien
Konvertieren Sie den Python-Datumstyp in das RFC822-Format
[Tensorflowjs_converter] So konvertieren Sie das Tensorflow-Modell in das Format Tensorflow.js
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
Zum HSV konvertieren
Konvertieren Sie das PDF des mobilen Suica-Nutzungsverlaufs mit tabula-py in das Pandas-Datenrahmenformat
Konvertieren Sie mehrere JPG-Dateien in eine PDF-Datei
Stapelkonvertierung von PSD-Dateien im Verzeichnis in PDF
Konvertieren Sie Daten im JSON-Format in txt (mit yolo)
[Kleine Geschichte] Einfache Möglichkeit, Jupyter in PDF zu konvertieren
Konvertieren Sie Binärpakete für Windows in das Radformat
Wählen Sie PDFMiner, um Textinformationen aus PDF zu extrahieren
[Python] Fortsetzung - Konvertieren Sie PDF-Text Seite für Seite in CSV
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Anfänger versuchen, Word-Dateien sofort in PDF zu konvertieren
Konvertieren Sie eine Textdatei mit hexadezimalen Werten in eine Binärdatei
Konvertieren Sie Qiita-Artikel zur Sicherung in das Jekyll-Post-Format
Konvertieren Sie das Bild in .zip mit Python in PDF
Konvertieren / Zurückgeben von Klassenobjekten in das JSON-Format in Python
So konvertieren Sie Json-Dateien in das CSV- oder EXCEL-Format
Konvertieren Sie die Übersetzungsressourcendatei (.po) in das XLIFF-Format (.xlf).
Konvertieren Sie die XML-Datei im Pascal-VOC-Format in die JSON-Datei im COCO-Format
Jupyter in py umwandeln
Konvertiere keras-yolo3 in onnx
Dikt in Array konvertieren
Konvertieren Sie json in Excel
So geben Sie ein Dokument im PDF-Format mit Sphinx aus
Verwenden Sie pyOCR, um die Beschreibung auf der Karte in Text umzuwandeln
Python / datetime> Implementierung zum Konvertieren des JJJJMMTT-Formats in JJJJ / MM / TT
Linux-Skript zum Konvertieren von Markdown-Dateien vom JupyterLab-Format in das Qiita-Format
Stapelkonvertierung von in MS Forms / Google Forms hochgeladenen Bilddateien in PDF
Konvertieren Sie verstümmelte gescannte Bilder mit Pillow und PyPDF in PDF
[Caffe] Konvertiert die mittlere Datei vom binären Proto-Format in das npy-Format
Skript zum Konvertieren zwischen Xcode-Sprachdateien und tabulatorgetrenntem Text
Konvertieren Sie eine Excel-Datei für verschiedene Zwecke in Python in Text