[PYTHON] Konvertieren Sie verstümmelte gescannte Bilder mit Pillow und PyPDF in PDF

Einführung

Zur Zeit komprimiere ich die von der Firma gescannten Bilddaten, und wenn ich sie mit nach Hause nehme und erweitere, sind die Zeichen aus irgendeinem Grund verstümmelt ... Welche Erfahrungen hast du? ** Ich habe! (Half-Gile) ** Da jedoch nur die unerwartete Seriennummer erhalten bleibt, ohne verstümmelt zu werden, ist es häufig der Fall, dass die Reihenfolge der Dateien verstanden werden kann. (Beispiel æ– ‡ å - 000.jpg, æ– ‡ ås001.jpg) Wenn Sie nur dieses verstümmelte Teil aus dem Dateinamen entfernen und eine schöne Seriennummerndatei erstellen können, sieht es gut aus und ist für spätere Arbeiten hilfreich. Da es sich um ungefähr 100 Datenblätter handelte, wäre es mühsam, sie zu ändern, und ich entschied mich, ein leichtes Python-Skript zu erstellen. Ich habe übrigens versucht, Bilddaten mit einem Tastendruck in ein PDF zu konvertieren.

Zu dieser Zeit habe ich ** Pillow ** für die Bildverarbeitung und ** PyPDF2 ** für die PDF-Konvertierung verwendet, daher möchte ich dies erläutern.

Das Skript ist unter [github] aufgeführt (https://github.com/tubone24/fileName2SerialNumber). Informationen zur Verwendung des Skripts finden Sie unter READ ME.

Einführung von Funktionen

Ich habe es in Eile geschrieben, es ist also ein chaotisches Skript, aber es besteht aus den folgenden Funktionen

Ich werde es unten kurz vorstellen. Bitte überspringen Sie es, da es sich um redundanten Inhalt handelt name2number(folderpass, digits, extension) Aus den Bildern im Ordnerpfad, die die als Argument empfangenen Bilddaten enthalten (nur die durch die Erweiterung angegebenen) Die Dateinamen werden aus dem nicht verstümmelten Teil (000 in æ– ‡ å - 000.jpg) serialisiert. Das Betriebssystem wird verwendet, um den Dateinamen neu zu schreiben, und das Modul re wird verwendet, um reguläre Ausdrücke zu verarbeiten. Der Rückgabewert ist ein Array von Dateinamen, für die die Verarbeitung übersprungen wurde.

changeNameHand(existfiles) Der Rückgabewert von name2number ist ein Array, das die Dateinamen enthält, die von der Seriennummer abgedeckt werden, und das Umschreiben des Dateinamens wird übersprungen. Wenn diese Funktion es als Argument empfängt, hört sie interaktiv auf den Dateinamen in der Standardeingabe / -ausgabe und schreibt ihn neu. Das Betriebssystem wird verwendet, um den Dateinamen neu zu schreiben, und das Modul re wird verwendet, um reguläre Ausdrücke zu verarbeiten. Darüber hinaus wird das Pillow (PIL) -Modul für die Bildanzeige zur Bildbestätigung verwendet.

addstr(before, after, digits, extension) Diese Funktion fügt die Zeichenfolge des Arguments vor der Seriennummer und die Zeichenfolge des Arguments nach der Seriennummer hinzu. Ich benutze es, wenn die Seriennummer allein nicht geschmackvoll ist Das Betriebssystem wird verwendet, um den Dateinamen neu zu schreiben, und das Modul re wird verwendet, um reguläre Ausdrücke zu verarbeiten.

image2pdf(filename, digits, extension, removeflug) Verwenden Sie Pillow und PyPDF2, um die Bilddaten im aktuellen Verzeichnis in einer einzigen PDF-Datei zu kombinieren. Ich werde später im Detail erklären

makeZip(filename, flug) Zippen Sie die Daten im aktuellen Verzeichnis. Ich verwende das Zipfile-Modul.

main() Eine Funktion zum Abrufen von Befehlszeilenargumenten. Ich verwende das argparse-Modul, um Befehlszeilenargumente abzurufen.

Konvertieren Sie Bilder mit Pillow und PyPDF in PDF

Image2pdf () Skriptauszug

fileName2SerialNumber.py


def image2pdf(filename, digits, extension, removeflug):
    u"""
Funktion zum Konvertieren von Bilddateien in PDF
    """
    if (extension != ".jpg " and ".png " and ".gif"): #Spielen Sie, wenn kein Bild
        print("Nicht unterstützte Bilddateien! jpg, png,Onacious mit gif")
        sys.exit(1)
    
    fileWriter = PdfFileWriter()
    files = os.listdir()
    ext = re.compile(extension)
    files.sort()
    count = 1
    removefiles = []
    for file in files:
        num = re.search('\\d{' + str(digits) +'}', file)
        if (num == None):
            pass
        else:
            if (ext.search(file) and num):
                image = PIL.Image.open(file)
                pdfFile = str(file).replace(extension, ".pdf")
                image.save(pdfFile, "PDF", resolution = 100.0)
                with open(pdfFile, "rb") as f:
                    fileReader = PdfFileReader(f, "rb")
                    pageNum = fileReader.getNumPages()
                    for i in range(pageNum):
                        fileWriter.addPage(fileReader.getPage(i))
                        print("%s%Schreiben Sie auf Seite d" % (str(file), count))
                        count += 1
                    removefiles.append(pdfFile)
                    if (removeflug):
                        removefiles.append(file)
                    with open(filename, "wb") as outputs:
                        fileWriter.write(outputs)
    print("-------------------------------------------------------")
    print("Fertiges Schreiben! Dateiname%s \n" % filename)
    
    for file in removefiles:
        os.remove(file)
        print("Dateiname%Gelöschte s" % str(file))
    
    print("--------------------------------------------------------")
    print("das Ende! Ergebnisse: %s" % filename)
    return None

Kissen (PIL) arbeiten

Pillow ist ein Modul zur Bildverarbeitung in Python. Sie können mit PIP eingeben.

So öffnen Sie eine Datei als Bild

python


image = PIL.Image.open(file)

Wird besorgt.

Dieses Mal möchte ich das Bild als PDF speichern, damit ich es in PDF umschreiben kann. Deshalb

python


image.save(image, "PDF", resolution = 100.0)

Sie können das Bild im PDF-Format speichern, indem Sie dies tun. Es ist auch möglich, die Bildqualität frei zu ändern, indem Sie den Teil "PDF" auf einen anderen Bildstandard ändern oder die Auflösung auf einen anderen Wert als 100 einstellen. Bei der Konvertierung in das PDF-Format muss die Erweiterung der Bilddatei vor dem Lesen der Bilddatei in PDF umgeschrieben werden. Also in diesem Skript

python


pdfFile = str(file).replace(extension, ".pdf")

Die Erweiterung wird geändert als.

Auch wenn in dieser Funktion nicht verwendet, um ein Bild anzuzeigen Nach dem Öffnen des Bildes mit PIL.image.open ()

python


image.show()

Es kann mit angezeigt werden.

Arbeiten mit PyPDF2

PyPDF2 ist ein praktisches Modul, mit dem Sie mehrere PDF-Dateien zu einer kombinieren und Textdaten aus der PDF-Datei extrahieren können. Sie können PIP verwenden.

Erstellen Sie zunächst eine Instanz zum Exportieren der Datei.

python


fileWriter = PdfFileWriter()

Die Instanz zum Lesen der PDF-Datei ist ebenfalls

python


fileReader = PdfFileReader(open(pdffile, "rb"), "rb")

Erstellen mit. Da das Öffnen der Datei beteiligt ist, verwenden Sie mit

python


with open(pdfFile, "rb") as f:
    fileReader = PdfFileReader(f, "rb")

Ich denke, dass es weniger mühsam ist, dies zu tun.

So überprüfen Sie die aktuelle Gesamtzahl der Seiten

python


pageNum = fileReader.getNumPages()

Die Anzahl der Seiten wird in pageNum eingegeben.

So fügen Sie eine PDF-Seite hinzu

python


fileWriter.addPage(fileReader.getPage(pageNumber))

Wird besorgt. Gibt das Seitenobjekt mit der von getpage angegebenen Seitenzahl (Anzahl der Seiten) zurück. Die Seite wird der angegebenen Nummer hinzugefügt, indem Sie Seite mit dem Seitenobjekt als Argument hinzufügen.

Nach Abschluss der Bearbeitung wird es schließlich als PDF-Datei exportiert.

Für den Export

python


fileWriter.write(open(filename, "wb")

Sie können mit schreiben. Da wir die open-Funktion verwenden, verwenden Sie die with-Anweisung

python


with open(filename, "wb") as outputs:
     fileWriter.write(outputs)

Ich denke, dass es weniger mühsam ist, dies zu tun.

abschließend

Verwenden Sie Pillow und PyPDF2, um die Arbeitseffizienz zu verbessern!

Recommended Posts

Konvertieren Sie verstümmelte gescannte Bilder mit Pillow und PyPDF in PDF
Erstellen Sie eine API zum Konvertieren von PDF-Dateien in TIF-Bilder mit FastAPI und Docker
Konvertieren Sie PDF in Image mit ImageMagick
Konvertieren Sie mit pdfplumber von PDF in CSV
Konvertieren Sie PDF-Dateien mit GIMP in PNG-Dateien
DICOM zu PNG Konvertierung mit aufsteigend und absteigend
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
Konvertieren Sie PDFs mit Python in Massenbilder
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Konvertieren Sie das Bild in .zip mit Python in PDF
Ich habe ein Programm erstellt, um Bilder mit Python und OpenCV in ASCII-Grafik umzuwandeln
Extrahieren Sie Bilder und Tabellen mit Python aus PDF, um die Berichtslast zu verringern
Konvertieren Sie den Farbraum von RGB nach CIELAB mit PIL (Pillow)
Konvertieren Sie Bilder mit PIL (Python Imaging Library) in Sepia.
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Aktiviert, um PNG mit Pillow of Python in JPG zu konvertieren
Konvertieren Sie in Python usw. geschriebene Dateien in PDF mit Syntax-Hervorhebung
Konvertieren Sie Bilder aus dem PIL-Format, die mit Django aus dem Formular gelesen wurden, in das base64-Format
Bereiten Sie eine Umgebung für die Verwendung von OpenCV und Pillow mit AWS Lambda vor
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Konvertieren Sie .ipynb in .html (mit BatchFile)
Konvertieren Sie Markdown in Python in PDF
Konvertieren Sie A4 PDF alle 2 Seiten in A3
Konvertieren Sie die Liste mit Python in DataFrame
Konvertieren Sie Sätze mit gensim in Vektoren
Konvertierung von pdf nach txt 2 [pyocr]
Laden Sie Bilder mit Falcon hoch und laden Sie sie herunter
Konvertieren Sie Gesichtsbilder mit PULSE in eine hohe Bildqualität, damit Sie die Poren und die Textur sehen können
So verarbeiten Sie Kamerabilder mit Teams und Zoom Volumen der Emotionsanalyse mit Tensorflow
Ich habe ein CLI-Tool erstellt, um Bilder in jedem Verzeichnis in PDF zu konvertieren
Erhalten Sie Tweets mit der Google Cloud-Funktion und speichern Sie Bilder automatisch in Google Fotos
Ich habe versucht, datetime <-> string mit tzinfo mit strftime () und strptime () zu konvertieren.
Konvertieren Sie eine Tabelle in CSV und laden Sie sie mit Cloud-Funktionen in den Cloud-Speicher hoch
Ich habe ein Netzwerk erstellt, um Schwarzweißbilder in Farbbilder umzuwandeln (pix2pix)
Stellen Sie die PDF-Datei ab und stempeln Sie alle Seiten mit vertraulichen Stempeln (Bildern).
Lesen Sie die CSV-Datei mit Python und konvertieren Sie sie unverändert in DataFrame
So suchen Sie mit Pythons Astroquery und erhalten passende Bilder mit Skyview
Konvertieren Sie Memos sofort mit Python 2to3
Lernen Sie mit Chainer, monochrome Bilder einzufärben
Bilder mit Pupil, Python und OpenCV aufnehmen
Konvertieren Sie Zeichenketten mit RoBERTa in Merkmalsmengen
Konvertieren Sie Excel-Daten mit Python in JSON
Generieren Sie mit Pillow (PIL) viele Einzelzeichenbilder.
Verwenden Sie PIL oder Pillow mit Cygwin Python
Konvertieren Sie an E-Mails angehängte PDF-Dateien in das Textformat
Fügen Sie mit Pythonista Bilder zu iOS-Fotos hinzu
Konvertieren Sie ein Array (struct) mit golang in json
Fügen Sie Bildern mit Python2.7 Gaußsches Rauschen hinzu
Konvertieren Sie chinesische Zahlen mit Python in arabische Zahlen
Importieren und Exportieren von GeoTiff-Bildern mit Python
Schneiden Sie Bilder aus und verbinden Sie sie mit ImageMagick
Laden Sie Bilder mit Python auf Google Drive hoch
Beispiel für die Wavelet-Konvertierung von Bildern in Python
Konvertieren Sie das PDF des mobilen Suica-Nutzungsverlaufs mit tabula-py in das Pandas-Datenrahmenformat
So konvertieren Sie Webseiten mit VBA (Excel) (Selenium Basic) in PDF, PNG, JPG
Konvertieren Sie Model sofort mit Django in Dictionary und initialisieren Sie Form mit explosiver Geschwindigkeit