"Suite [Python] Traduisons automatiquement le PDF anglais (mais sans s'y limiter) avec la traduction DeepL ou Google dans un fichier texte, sans HTML." https://qiita.com/Cartelet/items/a00d4cec8216d04f9274
J'ai essayé.
Il y a plusieurs versions montrées dans l'article, mais cette fois j'ai utilisé le "code de version amélioré de décomposition de texte" ajouté le 8/11.
Activé pour décomposer les paragraphes dans une certaine mesure sans passer par Word. Puisqu'il traduit paragraphe par paragraphe (généralement), la vitesse de traduction est beaucoup plus rapide que celle de chaque phrase.
J'ai enregistré ce code sous pdftrans.py.
$ python3 pdftrans.py
Lorsqu'il est exécuté comme
Traceback (most recent call last):
File "pdftrans.py", line 1, in <module>
from selenium import webdriver
ModuleNotFoundError: No module named 'selenium'
Parce qu'il est sorti
$ sudo pip3 install selenium
Installé en tant que. J'avais aussi besoin de pyperclip, alors
$ sudo pip3 install pyperclip
Installé en tant que.
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/common/service.py", line 76, in start
stdin=PIPE)
File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver.exe': 'chromedriver.exe'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "pdftrans.py", line 165, in <module>
TranslateFromClipboard(*args)
File "pdftrans.py", line 75, in TranslateFromClipboard
chrome_options=options)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
self.service.start()
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/common/service.py", line 83, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'chromedriver.exe' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
Parce que c'est devenu
https://sites.google.com/a/chromium.org/chromedriver/homeから chromedriver_linux64.zip Téléchargez et décompressez.
$ ls -alh
16M au total
drwxrwxr-x 2 nanbuwks nanbuwks 4.0K 17 août 21:07 .
drwxrwxr-x 91 nanbuwks nanbuwks 56K 17 août 21:06 ..
-rwxr-xr-x 1 nanbuwks nanbuwks 11M 29 mai 06:05 chromedriver
-rw-rw-r-- 1 nanbuwks nanbuwks 5.1M 17 août 21:06 chromedriver_linux64.zip
-rw-r--r-- 1 nanbuwks nanbuwks 8.0K 17 août 16:53 pdftrans.py
Je l'ai placé dans le même répertoire que pdftrans.py.
Puis la ligne 9 de pdftrans.py
DRIVER_PATH = 'chromedriver.exe'
Changé l'endroit où il se trouve comme suit.
DRIVER_PATH = './chromedriver'
Pour le moment, j'ai décidé d'exécuter pdftrans.py dans le répertoire contenant le script, en simplifiant le paramètre PATH.
Traceback (most recent call last):
File "pdftrans.py", line 165, in <module>
TranslateFromClipboard(*args)
File "pdftrans.py", line 75, in TranslateFromClipboard
chrome_options=options)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 84
J'utilisais la version 83, mais je l'ai mise à jour avec la dernière version et l'ai changée en version: 84.0.4147.125 (version officielle) (64 bits).
$ python3 pdftrans.py
1.Anglais → japonais 2.Japonais → anglais 1
1. DeepL 2.GoogleTranslate 1
Voulez-vous exporter le résultat de la traduction? Oui/n y
1. txt 2. HTML 3. both 2
Entrez un nom pour le fichier de sortie (la valeur par défaut est'translated_text.html')
Veuillez entrer le titre (de l'article) zigbeebdb
Souhaitez-vous voir la progression de la traduction ici? Oui/n n
Appuyez sur Entrée lorsque vous êtes prêt
1/900 0% done
2/900 0% done
3/900 0% done
4/900 0% done
・
・
・
――Cette fois, j'ai essayé le PDF de 87 pages.
8/16 postscript Accélération de la possibilité d'ouvrir un grand nombre de Chrome avec plusieurs threads. Il s'agit uniquement d'une exportation HTML. De plus, dans le cas de DeepL, veuillez noter que si vous en ouvrez trop, il sera restreint et la traduction s'arrêtera.
«Je pensais que ce serait bien si je faisais un autre travail même si cela prenait du temps, mais comme le presse-papiers est contrôlé, je pense que le travail parallèle est délicat. «L'utilisation a été écrite dans l'article qui était à la base de l'article référencé, mais j'ai essayé de l'utiliser sans le lire correctement, et c'était tout. Si vous le lisez correctement et copiez les informations de caractère PDF dans le presse-papiers à l'avance, cela a fonctionné correctement!
"[Python] Traduisons automatiquement le PDF anglais (mais sans s'y limiter) avec la traduction DeepL ou Google pour en faire un fichier texte." https://qiita.com/Cartelet/items/c56477033cda17a2a28a
Avec 30 parallèles simultanés, le même document de 87 pages de 1249 phrases que ci-dessus pouvait être traduit en environ 10 minutes, mais la moyenne de charge était excellente.
Il semble bon de concevoir en fonction de l'environnement afin que les frais généraux ne soient pas appliqués.
En fait, lorsque je l'ai mis à 10 en même temps, le traitement a pris environ 6 minutes.
Recommended Posts