PerfectVector
Autor: Irene Kim

Wyodrębnij logo z Worda bez utraty pikseli

Odzyskaj obraz zapisany w pliku Word lub PowerPoint, sprawdź jego wymiary w pikselach i przytnij, a następnie zdecyduj, czy logo wymaga prześledzenia, czy lepszego źródła.

8 min czytania
Na tej stronie

Aby wyodrębnić logo z dokumentu programu Word bez kolejnej utraty jakości, odzyskaj osadzony plik obrazu i sprawdź go przed wykonaniem zrzutu ekranu lub jego śledzeniem. Zwykły plik DOCX może zawierać bajty obrazu z większą liczbą pikseli, niż sugeruje to umieszczenie na małej stronie. Ekstrakcja pozwala zachować to, co jest przechowywane; nie może przywrócić pikseli, które zostały wcześniej odrzucone.

To samo podejście do kontroli pakietów pozwala odzyskać osadzone media ze zwykłego PPTX. Testowana trasa Pythona poniżej kopiuje te bajty do nowego folderu. Nie renderuje programu Word ani PowerPoint, nie odtwarza wyświetlanego kadru ani nie stosuje efektów strony. Przed użyciem sprawdź, który odzyskany obraz pasuje do zamierzonego logo.

Najpierw wyzdrowiej, a potem oceń źródło

Zachowaj dokument w nienaruszonym stanie. Skopiuj zapisane nośniki, zidentyfikuj właściwe logo i sprawdź rzeczywiste wymiary w pikselach, krawędzie i zamierzony kadr. Zachowaj istniejący wektor, gdy go znajdziesz; śledzić tylko wtedy, gdy raster wymaga edytowalnych ścieżek.

Wypróbuj na własnym obrazie
Otwórz pełne narzędzie
Za darmo i bez rejestracji: upuść obraz, aby zobaczyć podgląd swojego wektora.

Rozmiar przechowywanego obrazu różni się od położenia strony

Obraz osadzony to plik przechowywany w pakiecie dokumentu. Umiejscowienie określa położenie i rozmiar obrazu na stronie lub slajdzie. Przycięcie lub efekt może zmienić to, co widzisz, nie będąc tym samym, co podstawowy plik multimedialny.

Przewodnik po strukturze dokumentu programu Word firmy Microsoft opisuje pakiet DOCX ZIP i jego części składowe. Jego przykład wstawiania obrazu przechowuje dane obrazu w części obrazu i odwołuje się do nich z dokumentu. Nie musisz pisać kodu Open XML, aby wypróbować poniższą ekstrakcję.

Rozdziel te trzy pytania:

PytanieCo sprawdzićCzego nie dowodzi
Ile szczegółów rastrowych jest przechowywanych?Wymiary i krawędzie wyodrębnionego obrazu w pikselachSam rozmiar miejsca docelowego na stronie nie daje odpowiedzi na to pytanie
Czy to jest zatwierdzone logo?Wersja, napis, kolory i zamierzony kadrNajwiększy plik nie jest automatycznie prawidłowy
Czy potrzebuję ścieżek wektorowych?Wymagania dotyczące kolejnego zadania edycji, druku lub wycinaniaSamo wyodrębnianie nie zamienia pikseli w ścieżki

Jeśli klient posiada oryginał projektanta, poproś o niego. Przewodnik dotyczący pozyskiwania logo w niskiej rozdzielczości opisuje tę selekcję. Sprawdzanie przechowywanych multimediów dokumentu jest przydatne, gdy plik pakietu Office jest najlepszym aktualnie dostępnym źródłem.

Skopiuj multimedia z duplikatu dokumentu

Potrzebujesz lokalnej, zwykłej, niezaszyfrowanej kopii .docx lub .pptx, Pythona 3 i nowej nazwy folderu wyjściowego. To jest proces wyodrębniania plików, a nie przewodnik po menu pakietu Office. Starsze wersje .doc, zaszyfrowane dokumenty, połączone obrazy online i natywne zachowanie funkcji Zapisz jako obraz wykraczają poza testowany zakres.

  1. Zduplikuj dokument. Zachowaj otrzymany plik bez zmian. W przypadku przykładowego polecenia nazwij kopię client-logo.docx i umieść ją obok skryptu.
  2. Zapisz to jako recover-media.py. Używa standardowego zipfile Pythona, odczytuje wpisy multimedialne i zapisuje ich bajty bez dekodowania i ponownej kompresji obrazów:
from pathlib import Path
from zipfile import ZipFile
from hashlib import sha256
import sys
 
source = Path(sys.argv[1])
output = Path(sys.argv[2])
if source.suffix.lower() not in {".docx", ".pptx"}:
    raise SystemExit("Use an ordinary, unencrypted DOCX or PPTX copy.")
 
with ZipFile(source, "r") as package:
    members = [
        item for item in package.infolist()
        if not item.is_dir()
        and item.filename.startswith(("word/media/", "ppt/media/"))
    ]
    if not members:
        raise SystemExit("No files found in the expected embedded-media folders.")
    output.mkdir(exist_ok=False)
    for index, member in enumerate(members, 1):
        data = package.read(member)
        target = output / f"{index:03d}-{Path(member.filename).name}"
        target.write_bytes(data)
        print(member.filename, "->", target, sha256(data).hexdigest())
  1. Uruchom go z tego folderu. Folder wyjściowy nie może jeszcze istnieć:
python3 recover-media.py client-logo.docx recovered-logo

W przypadku kopii programu PowerPoint zmień nazwę pliku wejściowego na nazwę pliku .pptx i wybierz inny folder wyjściowy. Jeśli Twój system nazywa Python 3 python zamiast python3, zamiast tego użyj tego pliku wykonywalnego.

  1. Przeczytaj dane wyjściowe i sprawdź pliki. Wydrukowana ścieżka pokazuje element pakietu, taki jak word/media/image1.png lub ppt/media/image1.png. Długi ciąg szesnastkowy to odcisk palca SHA-256 składający się z jego bajtów. Numerowane nazwy wyników pomagają zachować odrębność wielu elementów multimedialnych; image1 nie gwarantuje, że plik jest Twoim logo.
  2. Otwórz prawdopodobnych kandydatów w przeglądarce obrazów. Sprawdź wymiary w pikselach i sprawdź najmniejsze litery, cienkie linie i krawędzie przy powiększeniu 100%. Porównaj zamierzoną wersję i przytnij z dokumentem lub referencją zatwierdzoną przez klienta.

Jeśli polecenie zgłosi, że folder wyjściowy istnieje, użyj nowej nazwy folderu, aby zachować wcześniejsze wyniki. Jeśli nie znajdzie żadnych oczekiwanych wpisów multimedialnych, dokument może używać innego rodzaju treści lub odniesienia zamiast osadzonego obrazu, jakiego oczekuje ta trasa. Poproś o oryginalny obraz lub odpowiedni niezaszyfrowany eksport. Zmiana nazwy starszego pliku .doc na .docx nie powoduje konwersji jego zawartości.

Co odzyskał test pakietu

Utworzyliśmy prawidłowe pliki DOCX i PPTX z oryginalnym logo PNG 1600 × 900, ponownie otworzyliśmy pakiety z ich bibliotekami autorskimi i niezależnie wyodrębniliśmy multimedia. PNG odzyskany z DOCX dokładnie pasował do bajtów wejściowych, pomimo czterocalowej szerokości umieszczenia zapisanej w dokumencie.

Plik PPTX zawierał ten sam plik PNG oraz metadane dla 25% lewego przycięcia. Wyodrębnianie nadal zwracało pełny 1600 × 900 zapisany plik PNG z tym samym odciskiem bajtowym. To jest obserwacja danych pakietu; nie renderowaliśmy slajdu ani nie testowaliśmy, jak wyglądało jego przycięcie w programie PowerPoint.

Zredukowaliśmy także logo do 400 × 225 JPEG przed osadzeniem go w innym formacie DOCX. Wyodrębnianie zwróciło te same zmniejszone bajty JPEG, nadal 400 × 225. Ta celowa kontrola pokazuje granicę: przywołanie zapisanego obrazu nie odwraca wcześniejszej redukcji. Nie wykazuje wady kompresji pakietu Office.

Rzeczywiste wyodrębnione media z kontrolowanych pakietów
Preview wyświetlający odzyskane logo PNG 1600 900 i wcześniej zmniejszone logo 400 w formacie 225 JPEG, z uwagami odróżniającymi przechowywane media od rozmieszczenia DOCX i metadanych przycięcia PPTX
Oryginalnie zapisany plik PNG jest odtwarzany bajt po bajcie. Plik JPEG zmniejszony przed osadzeniem pozostaje zmniejszony po wyodrębnieniu.

Były to testy pakietów autorstwa biblioteki, a nie natywne testy interfejsu użytkownika programu Word lub PowerPoint, testy zapisu jako obrazu lub renderowania wyświetlania. Dla tego porównania nie przeprowadzono żadnej konwersji PerfectVector.

Wybierz odzyskany zasób przed śledzeniem

Nie wybieraj wyłącznie według nazwy pliku lub rozmiaru pliku. Dokument może zawierać inne obrazy lub warianty, a przechowywany obraz może zawierać treść poza widocznym przycięciem. Potwierdź kształt, znak słowny, wersję i wymagane przycięcie logo, zanim potraktujesz je jako źródło.

Jeśli odzyskasz istniejący plik wektorowy, zachowaj go i sprawdź, czy zawiera potrzebne ścieżki. Rasteryzacja tylko po to, by ponownie go prześledzić, nie przynosi żadnych korzyści. W przewodniku po formacie pliku logo opisano edytowalne wzorce i kopie dostarczane. Odzyskiwanie wyłącznie plików PDF to osobne zadanie objęte sprawdzaniem i konwertowaniem grafiki PDF.

W przypadku rastra sprawdź, które piksele faktycznie odzyskałeś. Jeśli małe litery są już niewyraźne, połamane lub ich brakuje, poszukaj oryginału lub celowo je odbuduj. Powiększenie przechowywanego egzemplarza nie świadczy o zagubieniu kształtów liter. Większy obraz z niewłaściwym kadrowaniem lub przestarzałym brandingiem to także niewłaściwe źródło.

Na potrzeby przyszłego przekazywania dokumentów firma Microsoft dokumentuje kontrolę kompresji obrazu dla programów Word, PowerPoint i Excel. Jest to ustawienie zapobiegawcze, które należy omówić z autorem dokumentu, a nie testowana tutaj operacja odzyskiwania. Jeśli to możliwe, poproś o osobny plik oryginalnego logo.

Wektoryzuj tylko wtedy, gdy następne zadanie wymaga ścieżek

PerfectVector pasuje, gdy odzyskany plik jest logo rastrowym, którego widoczne kształty mają być edytowalnymi ścieżkami wektorowymi. Użyj wektoryzatora logo z najlepiej akceptowanym obrazem, a następnie porównaj podgląd z tym źródłem, szczególnie z najmniejszymi literami, licznikami i cienkimi liniami.

Ekstrakcja i wektoryzacja rozwiązują różne problemy. Pierwszy pobiera zapisane dane obrazu; drugi interpretuje kształty rastrowe jako ścieżki. Żadne z nich nie potwierdza, że ​​wybrałeś zatwierdzone logo, a ślad nie może udowodnić, co pierwotnie oznaczało brakujące piksele. Edycja i eksport wyniku PerfectVector wymaga jego odblokowania; chroniony podgląd jest przeznaczony tylko do przeglądania.

Często zadawane pytania

Czy wyodrębnienie logo z programu Word przywraca jego pierwotną jakość? Pobiera to, co jest nadal przechowywane w dokumencie. Jeśli jest to oryginalny obraz, możesz odzyskać zapisane w nim bajty. Jeśli został on zmniejszony przed przechowywaniem, ekstrakcja nie przywraca odrzuconych pikseli.

Czy wyodrębniony obraz będzie pasował do kadru widocznego na stronie? Nie koniecznie. Pakiet może przechowywać pełny obraz niezależnie od umiejscowienia lub przycięcia metadanych. Porównaj odzyskany plik z zamierzoną grafiką i potwierdź przycięcie przed jego użyciem.

Czy mogę używać tego samego skryptu w programie PowerPoint? Tak, w przypadku testowanego tutaj zwykłego, niezaszyfrowanego przepływu pracy PPTX. Nadaj skryptowi kopię PPTX i nową nazwę folderu wyjściowego. Kopiuje multimedia z oczekiwanych folderów pakietów; nie renderuje slajdu ani nie stosuje jego efektów.

Źródła

  1. Microsoft Learn — Struktura dokumentu WordprocessingML — objaśnia pakiet DOCX ZIP i jego części składowe.
  2. Microsoft Learn — wstaw obraz do dokumentu edytora tekstu — wyświetla zapisane dane obrazu w części obrazu, do której odwołuje się dokument.
  3. Python — plik zip — Dokumentuje czytnik archiwum biblioteki standardowej używany przez testowany skrypt ekstrakcyjny.
  4. Wsparcie firmy Microsoft — Wyłącz kompresję obrazu — opisuje ustawienie kompresji zapobiegawczej na potrzeby przyszłego przekazywania dokumentów.

Jeśli odzyskany raster wymaga edytowalnych ścieżek, zacznij od tego logo. Przed zatwierdzeniem wyniku sprawdź małe litery i cienkie szczegóły podglądu wektorowego względem wyodrębnionego obrazu.

Więcej z bloga

PerfectVector

Zamień logo lub grafikę w
czysty, edytowalny SVG

Wektoryzuj i sprawdzaj podgląd za darmo, bez dziennego limitu.