Bonjour à la communauté, je suis nouveau dans la programmation. Donc, merci d'avance, je lance le programme en pycharm, le Convert démarre et semble fonctionner sans problème (Parsing Page... -> Création de page... etc.) puis, quand je vais dans le répertoire où se trouvait mon fichier enregistré, pour vérifier, si la conversion a fonctionné, je vois ce qui est affiché dans l'image jointe (le fichier docx est affiché comme des images, comme des pièces, pas comme du texte) et je me demandais si vous aviez une idée de pourquoi cela se produit et si vous avoir une idée de comment y remédier.
Salut, bienvenue. D'après la capture d'écran, je suppose que le "texte" que vous avez vu n'est pas du vrai texte. Pouvez-vous copier et coller le texte ? Ce serait génial si vous pouviez télécharger le pdf (une page à laquelle vous avez échoué suffit) pour mon test.
Désolé, une limitation de pdf2docx
est qu'il ne peut traiter que des fichiers PDF basés sur du texte. Votre page pdf se compose de plusieurs images, qui ne seraient pas ocr-ed, mais copiées directement dans docx. La capture d'écran ci-dessous montre les images en pdf.
ok, je vais y penser, merci pour votre réponse rapide. Je ne sais pas si vous avez déjà fait l'interface utilisateur, mais j'ai fait une interface utilisateur conviviale de base pour votre programme et voici le code de celui-ci.
from pdf2docx import Converter
from tkinter import *
from tkinter.filedialog import *
from tkinter import filedialog
root = Tk()
root.title('PDF_2_Docx Converter')
root.geometry('500x500')
root.config(bg='grey')
def pdf_file_location():
Tk().withdraw()
filename = askopenfilename()
file_path_pdf_entry.insert(0, filename)
def docx_folder_location():
Tk().withdraw()
folder_selected = filedialog.askdirectory() + "/" + 'New_DOCX.docx'
file_path_docx_entry.insert(0, folder_selected)
def convert_button_function():
cv = Converter(file_path_pdf_entry.get())
cv.convert(file_path_docx_entry.get(), start=0, end=None)
cv.close()
"""Labels"""
label1 = Label(text='PDF to Docx', font='Impact 40', bg='white', fg='#1E90FF')
label1.grid(column=2, row=1, sticky='n', pady=50, padx=120)
"""Entries"""
# PDF file entry
file_path_pdf_entry = Entry(border=5)
file_path_pdf_entry.grid(ipadx=90, ipady=4, padx=20, sticky='nw', column=2, pady=1, row=2)
# Docx file entry
file_path_docx_entry = Entry(border=5)
file_path_docx_entry.grid(column=2, ipady=4, ipadx=90, padx=20, sticky='nw', pady=70, row=3)
"""Buttons"""
# Convert Button
converter_button = Button(text='Convert', bg='#1E90FF', fg='white', font='impact 20', border=5,
command=convert_button_function)
converter_button.grid(padx=175, sticky='s', ipady=5, ipadx=10, column=2, row=4)
select_pdf_file = Button(text='Select PDF file', fg='black', bg='white', border=3,
command=pdf_file_location)
select_pdf_file.grid(column=2, sticky='ne', row=2, pady=6, padx=60)
select_new_file_folder = Button(text='Select new file folder', fg='black', bg='white', border=3,
command=docx_folder_location)
select_new_file_folder.grid(column=2, sticky='ne', row=3, pady=74, padx=26)
root.mainloop()
Très appréciée. C'est une bonne idée -> Je vais mettre l'interface graphique dans le backlog.
Souhaitez-vous apporter un peu plus d'amélioration, par exemple convertir des fichiers multi-pdf dans un dossier défini par l'utilisateur en mode batch. Après cela, veuillez soumettre un PR, afin que je puisse fusionner votre travail avec cette bibliothèque au profit d'un plus grand nombre de personnes.
mode batch, vous voulez dire, enregistrer en tant que fichier batch et l'exécuter ? Je peux le faire Windows exe. Que préfères-tu?
Avec votre interface utilisateur, on peut convertir un fichier à la fois. Mais on peut avoir besoin de convertir beaucoup de fichiers pdf, dans ce cas, il est plus pratique de mettre tous les fichiers pdf dans un dossier, de sélectionner ce dossier et de les convertir tous en une seule fois.
Commentaire le plus utile
ok, je vais y penser, merci pour votre réponse rapide. Je ne sais pas si vous avez déjà fait l'interface utilisateur, mais j'ai fait une interface utilisateur conviviale de base pour votre programme et voici le code de celui-ci.