[PYTHON] Essayez de traduire un PDF anglais, partie 1

"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é.

environnement

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.

Paramètres de la bibliothèque, etc.


$ 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).

Courir


$ 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

・
・
・

résultat

image.png

Essayez d'utiliser

――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

Postscript que j'ai essayé avec la version haute vitesse de la version 8/16

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. image.png

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

Essayez de traduire un PDF anglais, partie 1
Le PDF anglais est traduit en japonais
Essayez de traduire avec Python tout en conservant la mise en page PDF
Essayez la programmation Linux normale, partie 7
Essayez la programmation Linux normale, partie 3
Essayez d'utiliser SQLAlchemy + MySQL (partie 1)
Essayez la programmation Linux normale, partie 4
Essayez d'utiliser SQLAlchemy + MySQL (partie 2)
Essayez la programmation Linux normale, partie 6
Essayez d'utiliser Pillow sur iPython (partie 1)
Essayez d'utiliser Pillow sur iPython (partie 2)
Essayez l'apprentissage en profondeur avec TensorFlow Partie 2
Essayez d'utiliser Pillow sur iPython (partie 3)