Nemrégiben szembesültem azzal a kihívással, hogy egy 70 oldalas PowerPoint prezentációt le kellett fordítanom magyar nyelvről angolra. Ez a prezentáció több száz szövegdobozt tartalmazott, amelyek mindegyikét egyesével le kellett volna fordítani, miközben meg kellett őrizni az eredeti formázást is. Ennek kézi fordítása és formázása több napnyi munka lett volna nekem meg nem volt semennyi időm rá, tehát egy gyors megoldás kellett.
Első lépésként feltöltöttem a dokumentumot a ChatGPT-re fordítás céljából, de bár a tartalmat lefordította a csetablakba ömlesztve, nem tudta visszaadni a kész PowerPoint fájlt. Így szükség volt egy hatékonyabb megoldásra. A program felajánlotta, hogy mi lenne ha Pythont használnék a fordításhoz. Mivel nekem nincs ebben semmi tapasztalatom, kértem, hogy vezessen végig a folyamaton.
1. lépés: Python és szükséges könyvtárak telepítése
Az első lépés az volt, hogy létrehozzunk egy Python környezetet, amely képes kezelni a PowerPoint fájlokat és fordítani a szöveget. Első körben arra voltam kíváncsi, hogy lehet ezt telepíteni a gépemre:
I don't have Python in my computer. How do I start?
A ChatGPT válasza:
1. Python letöltése és telepítése:
- Látogasson el a Python weboldalára és töltse le a legfrissebb verziót.
- Győződjön meg róla, hogy a telepítés során hozzáadja a Pythont a rendszer PATH-hoz.
Mivel arról is beszélt a GPT, hogy kell egy kód editor, így megkérdeztem melyiket használjam:
so which Python code editors do you recommend?
A feljanánlott 5 környezet közül a PyCharm integrált fejlesztőkörnyezetet választottuk annak robusztus funkciói és könnyű használata miatt. Mivel ebben sem volt semmi tapasztalatom, kértem, hogy vezessen végig hogy tudom elindítani a scriptet rajta:
ok, now I have downloaded PyCharm what's next?
A ChatGPT válasza:
2. PyCharm beállítása:
- Töltse le és telepítse a PyCharm-ot a JetBrains weboldaláról].
- Hozzon létre egy új projektet a PyCharm-ban.
3. Hozzon létre egy új projektet
Kattintson az "Új projekt" elemre az üdvözlő képernyőn.
Válasszon egy helyet a projekthez.
Győződjön meg arról, hogy a Python értelmező a Python megfelelő verziójára van beállítva. Ezt úgy teheti meg, hogy az "Interpreter" legördülő menüre kattint, és kiválasztja a korábban telepített Python értelmezőt.
Kattintson a "Létrehozás" gombra.
4. Install pip
A 'pip' a Python csomagtelepítője. Általában Pythonnal van telepítve, de a telepítést a következő futtatással biztosíthatja:
python -m ensurepip --upgrade
5. Szükséges könyvtárak telepítése:
- Nyissa meg a terminált (View > Tool Windows > Terminal) a PyCharm-ban és futtassa az alábbi parancsot:
pip install python-pptx googletrans==4.0.0-rc1
Majd megadta a végleges kódsort is amit használnom kell majd az editorban.
Mivel a megadott kód nem tartalmazta a pontos könyvtárat, ahol a lefordítandó .ppt fájl található kértem, hogy írja bele:
can I add an explicit path here?
presentation = Presentation('your_presentation.pptx')
the presentation is here: E:\Dropbox\Epic Consulting\ChatGPT oktató\Előadás\LLM_oktato_anyag_2024_04.pptx
A ChatGPT válasza:
# Specify the path to your presentation file
presentation_path = (
r'E:\Dropbox\Epic Consulting\ChatGPT oktató\Előadás\LLM_oktato_anyag_2024_04.pptx'
)
2. lépés: Kezdeti szkript a `googletrans` használatával
Kezdetben a `googletrans` könyvtárat használtuk a szöveg fordítására. Azonban problémák adódtak a Google Translate API megbízhatóságával, ami folyamatosan hibákat eredményezett. Ezt a GPT szúrta ki, hogy bugos lehet a beimportált library, ezért egy másik megoldást ajánlott nekem.
A munkamódszer az volt, hogy minden hibaüzenetet amit a PyCharm dobott nekem, bedobtam neki mindenféle komment nélkül:
File "E:\Progik\Python progik\pythonProject\.venv\Lib\site-packages\googletrans\gtoken.py", line 62, in update code = self.RETKK.search(r.text).group(1).replace('var ', '') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'group' Process finished with exit code 1
3. lépés: Áttérés a DeepL API-ra
A ChatGPT válasza a fenti hibaüzenetre:
Az Ön által tapasztalt hiba a googletrans könyvtárral kapcsolatos. Ez a könyvtár időnként problémákba ütközik a Google fordítószolgáltatásában bekövetkezett változások miatt.
Alternatív megoldás: a DeepL Translator használata
Megbízhatóbb megközelítés a DeepL Translator API használata, amelyhez API-kulcs szükséges. A következőképpen használhatja:
1. Regisztráció a DeepL API-ra:
- Szerezzen egy API kulcsot a DeepL Pro oldalon.
2. Installáld a deepl Python Package-t: Nyisd meg a terminált PyCharmban és futtasd:
pip install deepl
3. A szkript módosítása:
- Frissítse a szkriptet a DeepL API használatára a `googletrans` helyett.
from pptx import Presentation
import deepl
# Initialize DeepL Translator
api_key = '703e98de-...-...-8eee-...e:fx' # Cserélje le a saját DeepL API kulcsára
translator = deepl.Translator(api_key)
Így tehát a `googletrans` megbízhatatlansága miatt áttértünk a DeepL API-ra, amely robusztusabb és pontosabb fordításokat biztosít. Az API kulcs generálása a megadott instrukciók alapján kb 5 perc volt. Ezzel a módszerrel azonnal sikerült a hibás googletrans libraryt megkerülnünk.
Ekkor egy újabb hibába futottam ami az üres texboxoknál megakasztotta a programot, erre ez volt a GPT válasza:
if hasattr(shape, "text") and shape.text.strip(): # Megnézzük, hogy a szövegdoboz nem üres e
4. lépés: A formázás megőrzése
Ekkorra már sikerült végleg működésre bírni a Python szkriptet amit készítettünk, egy gond volt, hogy az elkészült fájl nem vitte át a formázást. Ez volt a promtom rá:
one thing: the slide headers are lost their formatting (now they are just plain text) What can I do? There are 67 pages...
Ez volt a ChatGPT válasza:
def translate_shape_text(shape, translator):
"""Fordítsa le a szöveget de közben őrízze meg a formátumot."""
if hasattr(shape, "text") and shape.text.strip():
if hasattr(shape, "text_frame"):
text_frame = shape.text_frame
for paragraph in text_frame.paragraphs:
for run in paragraph.runs:
translated_part = translator.translate_text(run.text, target_lang='EN-US').text
run.text = translated_part
# Fordítson le minden diát
for slide in presentation.slides:
for shape in slide.shapes:
translate_shape_text(shape, translator)
A szöveg formázásának megőrzése érdekében a szkriptet úgy módosítottuk, hogy külön kezelje a szövegkereteket és a futó szövegeket. Ez szükségessé tette a bekezdések és a futó szövegek külön-külön történő iterálását minden szövegkeretben.
Végső szkript
Az összes elem kombinálásával létrehoztuk a végső szkriptet, amely lefordítja a szövegeket a prezentációban és megőrzi a formázást, majd kidobja a végeredményt az eredeti fájl mellé, íme:
from pptx import Presentation
import deepl
# Specify the path to your presentation file
presentation_path = (
r'E:\Dropbox\Epic Consulting\ChatGPT oktató\Előadás\LLM_oktato_anyag_2024_04.pptx'
)
# Load the presentation
presentation = Presentation(presentation_path)
# Initialize DeepL Translator
api_key = '703e98de-...-...-8eee-...e:fx' # Replace with your actual DeepL API key
translator = deepl.Translator(api_key)
def translate_shape_text(shape, translator):
"""Translate the text of a shape while preserving its formatting."""
if hasattr(shape, "text") and shape.text.strip():
if hasattr(shape, "text_frame"):
text_frame = shape.text_frame
for paragraph in text_frame.paragraphs:
for run in paragraph.runs:
translated_part = translator.translate_text(run.text, target_lang='EN-US').text
run.text = translated_part
# Translate text in each slide
for slide in presentation.slides:
for shape in slide.shapes:
translate_shape_text(shape, translator)
# Save the translated presentation to a specified location
translated_presentation_path = (
r'E:\Dropbox\Epic Consulting\ChatGPT oktató\Előadás\LLM_oktato_anyag_2024_04_translated.pptx'
)
presentation.save(translated_presentation_path)
Összegzés
A folyamat automatizálásával jelentősen csökkentettük az időt és az erőfeszítést, amelyet egy nagyméretű PowerPoint prezentáció fordítására kellett volna fordítani, miközben megőriztük az eredeti formázást. Az egész fenti folyamat, beszélgetéssel, installálással, hibakereséssel nem volt több, mint másfél óra.
Ez a megközelítés hasonló feladatokhoz is alkalmazható, így órákat vagy akár napokat spórolva a kézi munka során és biztosítva a fordított dokumentumok konzisztenciáját.
Egy bónusz képet is készíttettem a géppel a folyamatról, tessék: