Amélioré pour rendre le résultat de sortie plus facile à voir Suite [Python] Traduisons automatiquement le PDF anglais (mais sans s'y limiter) avec la traduction DeepL ou Google dans un fichier texte, pas de HTML.
C'est difficile de lire les journaux anglais, n'est-ce pas? Faisons traduire, les perspectives seront bien meilleures.
Le problème avec la traduction des PDF est la difficulté de gérer les fichiers PDF. Même si vous comptez sur la bibliothèque pour extraire les caractères automatiquement, cela ne fonctionne pas ou l'ordre des phrases est perturbé. Donc cette fois, je voudrais traduire via le presse-papiers.
Le flux est
Ouvrez le fichier PDF avec Chrome etc. et sélectionnez tout "Ctrl + A" pour copier ↓ Exécutez le programme ↓ Décomposez les phrases de manière à ce qu'elles ne dépassent pas la limite de caractères (5000 caractères) et soient séparées par des points. ↓ Lancer sur un site de traduction ↓ Obtenir des résultats ↓ production
C'est comme ça.
pip install selenium
pip install pyperclip
Veuillez le mettre dans le même répertoire → Chrome Driver
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
import pyperclip as ppc
DRIVER_PATH = 'chromedriver.exe'
options = Options()
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
options.add_argument('--proxy-server="direct://"')
options.add_argument('--proxy-bypass-list=*')
options.add_argument('--start-maximized')
def parse_merge(text, n=4900):
sentences = []
sentence = ""
for i in " ".join(text.splitlines()).split("."):
if len(sentence) + len(i) > n:
sentences.append(sentence)
sentence = ""
sentence += i + "."
sentences.append(sentence)
return sentences
def TranslateFromClipboard(tool, write, filename, isPrint):
driver = webdriver.Chrome(executable_path=DRIVER_PATH,
chrome_options=options)
url = 'https://www.deepl.com/ja/translator' if tool == "DeepL" else 'https://translate.google.co.jp/?hl=ja&tab=TT&authuser=0#view=home&op=translate&sl=auto&tl=ja'
driver.get(url)
transSentence = ""
if tool == "DeepL":
textarea = driver.find_element_by_css_selector(
'.lmt__textarea.lmt__source_textarea.lmt__textarea_base_style')
elif tool == "GT":
textarea = driver.find_element_by_id('source')
for sentence in parse_merge(ppc.paste()):
cbText = ppc.paste()
ppc.copy(sentence)
textarea.send_keys(Keys.CONTROL, "v")
ppc.copy(cbText)
transtext = ""
while transtext == "":
if tool == "DeepL":
transtext = driver.find_element_by_css_selector(
'.lmt__textarea.lmt__target_textarea.lmt__textarea_base_style'
).get_property("value")
elif tool == "GT":
try:
transtext = driver.find_element_by_css_selector(
'.tlid-translation.translation').text
except:
pass
time.sleep(1)
if isPrint: print(transtext)
transSentence += transtext
textarea.send_keys(Keys.CONTROL, "a")
textarea.send_keys(Keys.BACKSPACE)
driver.quit()
if write:
with open(filename, "w", encoding='UTF-8') as f:
for sentence in transSentence.split("。"):
f.write(sentence + "。\n")
if __name__ == "__main__":
args = ["DeepL", False, "translated_text.txt", True]
if input("1. DeepL 2.GoogleTranslate ") == "2": args[0] = "GT"
if input("Voulez-vous écrire le résultat de la traduction dans un fichier? Oui/n ") == "y":
args[1] = True
filename = input(
"Entrez un nom pour le fichier de sortie (la valeur par défaut est'translated_text.txt') ")
if filename:
args[2] = filename
if input("Souhaitez-vous voir la progression de la traduction ici? Oui/n ") == "n":
args[3] = False
input("Appuyez sur Entrée lorsque vous êtes prêt")
TranslateFromClipboard(*args)
Lors de la sortie d'un fichier texte, j'essaie de casser la ligne au niveau du signe de ponctuation pour le moment, veuillez donc le réécrire comme il convient.
DeepL semble être en mesure de traduire des documents moyennant des frais, mais si possible, ceux qui veulent en bénéficier gratuitement, À l'origine, les documents peuvent être traduits avec Google Traduction, mais les gens qui sont désespérés parce qu'il y a des endroits qui ne sont pas traduits ou que l'environnement des formules est foiré Essayez-le, peut-être qu'il progressera.
Recommended Posts