Convertit un fichier PDF en une image (PNG) avec un fichier par page. Vérification de la sortie des formulaires commerciaux Puisque le prétraitement est supposé, plusieurs fichiers PDF peuvent être traités ensemble.
--Environnement dans lequel s'exécute Python3. Cet article utilise Python 3.8.1 (Windows 64 bits)
Chef de famille (source) https://poppler.freedesktop.org/
Les binaires pour Windows sont disponibles ici. http://blog.alivate.com.au/poppler-windows/
La procédure d'installation est résumée sur ce site. http://pdf-file.nnn2.com/?p=863 Si vous n'incluez pas le fichier de langue dans la seconde moitié de l'explication, le nom du fichier japonais sera déformé, alors assurez-vous de l'inclure.
Comme imread () et imwrite () ne peuvent pas gérer les noms de fichiers autres que ascii, il est nécessaire de changer le nom de fichier en caractères ascii lors du post-traitement en utilisant openCV-Python.
Il est normal d'encoder en URL quelque chose comme base = urllib.parse.quote (pdf_file.stem)
, mais les gens ne peuvent pas le lire.
S'il est difficile de renommer les données d'origine, il existe également une telle contre-mesure. À propos du traitement des problèmes lors de la gestion des chemins de fichiers, y compris le japonais dans Python OpenCV cv2.imread et cv2.imwrite https://qiita.com/SKYS/items/cbde3775e2143cad745
pip install pdf2image
Cliquez ici pour Github https://github.com/Belval/pdf2image
pdf2img.py
import pathlib
import pdf2image
pdf_files = pathlib.Path('in_pdf').glob('*.pdf')
img_dir = pathlib.Path('out_img')
for pdf_file in pdf_files:
base = pdf_file.stem
images = pdf2image.convert_from_path(pdf_file, grayscale=True, size=640)
for index, image in enumerate(images):
image.save(img_dir/pathlib.Path(base + '-{}.png'.format(index + 1)),
'png')
Ce que je fais est simple: je lis un fichier PDF dans le dossier in_pdf du répertoire courant et j'envoie {nom de fichier PDF} - {page} .png dans le dossier out_img.
Exemple) Certains form.pdf → Certains form-1.png Certains form-2.png
Paramètres de conversion d'image
images = pdf2image.convert_from_path(pdf_file, grayscale=True, size=640)
Vous pouvez le définir sur.
grayscale = True
. Si vous définissez grayscale = False
ou omettez la spécification, colorsize = n
. Taille calculée par la valeur DPI si non spécifiéedpi = n
(la valeur par défaut est 200 DPI). Lorsqu'il y a une spécification de taille, qui a la prioritéIl existe de nombreux autres paramètres que vous pouvez effectuer, mais pour le moment, cela suffit.
Le format d'image est
image.save(img_dir/pathlib.Path(base + '-{}.png'.format(index + 1)), 'png')
Où
image.save(img_dir/pathlib.Path(base + '-{}.jpg'.format(index + 1)), 'jpeg')
Ensuite, il sera sorti au format JPEG.
Recommended Posts