Pour le moment, j'ai emballé les données d'image scannées par l'entreprise avec un zip, et quand je les ai ramenées à la maison et les ai développées, les personnages ont été déformés pour une raison quelconque ... Quelle expérience avez-vous? ** J'ai! (Demi-gile) ** Cependant, comme seul le numéro de série inattendu reste sans être brouillé, il arrive souvent que l'ordre des fichiers puisse être compris. (Exemple æ– ‡ å — 000.jpg, æ– ‡ ås001.jpg) Si vous ne pouvez supprimer que cette partie déformée du nom de fichier et former un beau fichier de numéro de série, cela aura l'air bien et sera utile pour les travaux ultérieurs. Comme il s'agissait d'environ 100 feuilles de données, ce serait un problème de le modifier, j'ai donc décidé de créer un script Python léger. En passant, j'ai essayé de rendre possible la conversion des données d'image en un seul PDF avec une seule touche.
À ce moment-là, j'utilisais ** Pillow ** pour le traitement d'image et ** PyPDF2 ** pour la conversion PDF, donc je voudrais expliquer à ce sujet.
Le script est répertorié sur github. Veuillez vous référer à LISEZ-MOI pour savoir comment utiliser le script.
Je l'ai écrit à la hâte, donc c'est un script désordonné, mais il comprend les fonctions suivantes
Je vais le présenter brièvement ci-dessous. Veuillez l'ignorer car il s'agit d'un contenu redondant name2number(folderpass, digits, extension) À partir des images dans le chemin du dossier contenant les données d'image reçues en argument (uniquement celles spécifiées par l'extension) Les noms de fichiers sont sérialisés à partir de la partie non déformée (000 dans æ– ‡ å — 000.jpg). Le système d'exploitation est utilisé pour réécrire le nom du fichier et le module re est utilisé pour gérer les expressions régulières. La valeur de retour est un tableau de noms de fichiers pour lesquels le traitement a été ignoré.
changeNameHand(existfiles) La valeur de retour de name2number est un tableau contenant les noms de fichiers couverts par des numéros de série et la réécriture des noms de fichiers ignorés. Lorsque cette fonction le reçoit comme argument, elle écoute de manière interactive le nom du fichier dans l'entrée / sortie standard et le réécrit. Le système d'exploitation est utilisé pour réécrire le nom du fichier et le module re est utilisé pour gérer les expressions régulières. De plus, le module Oreiller (PIL) est utilisé pour l'affichage de l'image pour la confirmation de l'image.
addstr(before, after, digits, extension) Cette fonction attache la chaîne de caractères de l'argument avant le numéro de série et la chaîne de caractères de l'argument après le numéro de série. Je l'utilise lorsque le numéro de série seul n'est pas de bon goût Le système d'exploitation est utilisé pour réécrire le nom du fichier et le module re est utilisé pour gérer les expressions régulières.
image2pdf(filename, digits, extension, removeflug) Utilisez Pillow et PyPDF2 pour combiner les données d'image dans le répertoire actuel en un seul PDF. J'expliquerai en détail plus tard
makeZip(filename, flug) Compressez les données dans le répertoire actuel. J'utilise le module Zipfile.
main() Une fonction pour obtenir des arguments de ligne de commande. J'utilise le module argparse pour obtenir des arguments de ligne de commande.
fileName2SerialNumber.py
def image2pdf(filename, digits, extension, removeflug):
u"""
Fonction pour convertir un fichier image en PDF
"""
if (extension != ".jpg " and ".png " and ".gif"): #Joue sinon une image
print("Fichiers image non pris en charge! jpg, png,Onacious avec 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%Écrire à la page 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("Fini l'écriture! nom de fichier%s \n" % filename)
for file in removefiles:
os.remove(file)
print("nom de fichier%Supprimé s" % str(file))
print("--------------------------------------------------------")
print("la fin! Livrables: %s" % filename)
return None
Pillow est un module de traitement d'image en Python. Vous pouvez entrer avec PIP.
Pour ouvrir un fichier en tant qu'image
python
image = PIL.Image.open(file)
ça ira.
Cette fois, je veux enregistrer l'image au format PDF, je vais donc la réécrire en PDF. Donc
python
image.save(image, "PDF", resolution = 100.0)
Vous pouvez enregistrer l'image au format PDF en faisant. Il est également possible de changer librement la qualité de l 'image en changeant la partie "PDF" en une autre norme d' image ou en réglant la résolution sur autre chose que 100. Il semble qu'il soit nécessaire de réécrire l'extension du fichier image en .pdf avant de lire le fichier image comme point lors de la conversion au format PDF. Donc dans ce script
python
pdfFile = str(file).replace(extension, ".pdf")
L'extension est modifiée comme.
Aussi, bien que non utilisé dans cette fonction, pour afficher une image Après avoir ouvert l'image avec PIL.image.open ()
python
image.show()
Il peut être affiché avec.
PyPDF2 est un module pratique qui vous permet de combiner plusieurs fichiers PDF en un seul et d'extraire des données texte du PDF. Vous pouvez utiliser PIP.
Tout d'abord, créez une instance pour exporter le fichier.
python
fileWriter = PdfFileWriter()
De plus, l'instance de lecture du fichier PDF est
python
fileReader = PdfFileReader(open(pdffile, "rb"), "rb")
Créez avec. Comme l'ouverture du fichier est impliquée, utilisez avec
python
with open(pdfFile, "rb") as f:
fileReader = PdfFileReader(f, "rb")
Je pense que c'est moins gênant à faire.
Pour vérifier le nombre total actuel de pages
python
pageNum = fileReader.getNumPages()
Le nombre de pages est entré dans pageNum.
Pour ajouter une page PDF
python
fileWriter.addPage(fileReader.getPage(pageNumber))
ça ira. Renvoie l'objet page avec le numéro de page spécifié par getpage (nombre de pages). La page est ajoutée au nombre spécifié en ajoutantPage avec l'objet de page comme argument.
Lorsque l'édition est terminée, il est finalement exporté sous forme de fichier PDF.
Pour l'export
python
fileWriter.write(open(filename, "wb")
Vous pouvez écrire avec. Puisque la fonction open est utilisée, utilisez l'instruction with
python
with open(filename, "wb") as outputs:
fileWriter.write(outputs)
Je pense que c'est moins gênant à faire.
Utilisez Pillow et PyPDF2 pour améliorer l'efficacité du travail!
Recommended Posts