Pliki o tej samej nazwie nie reprezentują tej samej kopii: użyj skrótu treści, aby zidentyfikować dane wejściowe

Klient przesłał dwa dokumenty, oba o nazwie `final.pdf`, który został przetłumaczony? Opieranie się na nazwach plików w odpowiedzi na to pytanie jest niebezpieczne. Pliki o tej samej nazwie mogą mieć różną zawartość, a pliki o zmienionych nazwach mogą mieć te same bajty. Skróty treści nadają się do ustalenia zgodności wersji, ale nie należy im nadawać znaczenia, którego nie mają.

Pliki o tej samej nazwie niekoniecznie są takie same, a pliki o zmienionych nazwach mogą mieć dokładnie tę samą zawartość. Jeśli zespół do śledzenia tłumaczeń wykorzystuje nazwy plików, łatwo jest uzyskać niewłaściwą wersję. W tym artykule wyjaśniono, jak używać funkcji mieszania treści do pozostawiania danych wejściowych i wyjściowych na poziomie bajtów oraz czego skrót może, a czego nie może udowodnić.

W przykładach wykorzystano próbki syntetyczne w celu zademonstrowania metod przetwarzania. Kod został przetestowany wyłącznie w izolowanym środowisku i nie stanowi gwarancji wszystkich rzeczywistych plików lub efektów produktu. Przed przystąpieniem do przetwarzania ważnych dokumentów prosimy o zachowanie oryginałów i zapoznanie się z nimi zgodnie z granicami i pozycjami akceptacji w tekście.

Dlaczego nazwy plików są zawodne? Wniosek w jednym zdaniu

Użyj skrótu treści, aby odpowiadał wersji, a nazwa pliku ma wyłącznie charakter informacyjny. Poniższa tabela wyjaśnia, co należy zrobić w typowych sytuacjach.

twoja sytuacjaZalecane praktykipowód
Obydwa dokumenty noszą nazwę final.pdfPorównaj skróty SHA-256, a nie nazwy plikówZawartość plików o tej samej nazwie może być różna
Nazwa pliku została zmienionaUżyj skrótu, aby potwierdzić, czy jest to ta sama zawartość bajtówNazwa nie uczestniczy w podsumowaniu bajtów
Należy potwierdzić, któremu wejściu odpowiada tłumaczenieRejestruj oddzielnie dane wejściowe i wyjścioweDane wejściowe i wyjściowe mają różną zawartość bajtów
Pliki mogą zostać ponownie zapisane lub metadane mogą zostać nadpisaneNagraj ponownie jako nową zawartość bajtuZmiany w metadanych lub parametrach kompresji mogą mieć wpływ na skróty

Pozostaw bajtowy odcisk palca dla wejścia

SHA-256 oblicza skrót na podstawie bajtów pliku. Duże pliki można czytać fragmentami bez konieczności jednoczesnego ładowania ich do pamięci. Wynik mieszania nie ma nic wspólnego z rozmiarem porcji, dzielenie na porcje to tylko strategia odczytu, a nie część tożsamości pliku. Poniższe strumienie pamięci są próbkami syntetycznymi i nie zawierają prawdziwych dokumentów.

Użyj tej samej treści i różnych bloków, aby zweryfikować implementację

import hashlib
from io import BytesIO

def digest(stream, chunk_size=65536):
    if type(chunk_size) is not int or chunk_size <= 0:
        raise ValueError("positive chunk size required")
    h = hashlib.sha256()
    while block := stream.read(chunk_size):
        h.update(block)
    return h.hexdigest()

raw = b"synthetic document version A\n"
a = digest(BytesIO(raw), 3)
assert a == digest(BytesIO(raw), 4096)
assert a == hashlib.sha256(raw).hexdigest()
assert a != digest(BytesIO(raw.replace(b"A", b"B")))
assert digest(BytesIO(b"")) == hashlib.sha256(b"").hexdigest()
try:
    digest(BytesIO(raw), 0)
except ValueError:
    pass
else:
    raise AssertionError("zero chunk must be rejected")

Funkcja rozpoczyna odczyt od aktualnej pozycji strumienia. Przed dokonaniem formalnego wywołania powinno być jasne, czy strumień jest na początku. Jeśli parser odczytał już część treści, wynikiem bezpośredniego obliczenia nie jest „hash całego pliku". Najbezpieczniejszym podejściem jest indywidualne włączenie danych wejściowych tylko do odczytu lub jawne zresetowanie ich przed obliczeniem ich w strumieniu docelowym.

Jaka jest różnica między tymi samymi bajtami i tą samą treścią?

Hash odzwierciedla tylko to, czy bajty są spójne, a różne operacje mają na niego różny wpływ.

StanJak hash może się zmieniaćJak to wyjaśnić
Zmień tylko nazwę plikui nie zmienił sięNazwy nie uczestniczą w abstraktach bajtów
Metadane PDF zostały przepisaneZmianaStrona może wyglądać tak samo lub inaczej
Zapisz ponownie skompresowany plikZmianaParametry kompresji lub znaczniki czasowe mogą wpływać na bajty
Przetłumacz na inny językZazwyczaj rzeczy się zmieniająWejście i wyjście powinny być nagrywane oddzielnie

📊 Porównanie rdzenia

Metody ocenyCo może powiedzieć?To niczego nie dowodzi
Porównaj nazwy plikówOznacza to tylko, że imiona są takie sameCzy treść jest spójna
Porównanie podsumowania SHA-256Sprawdź, czy zawartość ByteDance jest dokładnie taka samaNiezależnie od tego, czy masz prawo do korzystania z dokumentu, czy też posiadasz prawa autorskie

🎯 Która metoda ci odpowiada?

Jeśli musisz potwierdzić, czy oba dokumenty są zgodne

Porównując podsumowania SHA-256, streszczenia są takie same, ale zawierają tę samą zawartość bajtów instrukcji, więc nazwa pliku nie jest używana jako odniesienie.

Jeśli musisz namierzyć źródło swojego tłumaczenia

Osobno zapisuj podsumowania wejścia i wyjścia, a następnie przypisuj wersje językowe i terminologiczne.

Jeśli planujesz użyć hasha do określania uprawnień plików

Nie rób tego. Hash nie jest dostępem do uprawnień i wymaga osobnej kontroli dostępu.

❓ Najczęściej zadawane pytania (FAQ)

1. Czy zmiana nazwy pliku zmienia hash?

Nie. Nazwa nie uczestniczy w podsumowaniu bajtów; zmieniana jest tylko nazwa pliku, a skrót pozostaje niezmieniony.

2. Tylko dlatego, że strona wygląda tak samo, czy hash zawsze musi być identyczny?

Niekoniecznie. Gdy metadane PDF są przepisywane, hash może się zmienić, nawet jeśli strona wyświetla się tak samo.

3. Czy hashe mogą decydować, czy użytkownicy mają prawo pobierać pliki?

Nie. Znajomość podsumowania pliku nie oznacza, że masz prawo go pobrać, ani nie oznacza, że jesteś właścicielem praw autorskich.

4. Jakie są ryzyka związane z deduplikacją między dzierżawcami?

Może wyciekać informacja o tym, "czy plik już istnieje", więc kontrola dostępu musi być stosowana nawet po trafieniu do pamięci podręcznej.

Lista tłumaczeń zaczyna się tutaj

Przed wysłaniem pliku do OmniDoc (wpis produktu) zapisz podsumowanie wejścia; Po pobraniu tłumaczenia nagraj abstrakt wyjściowy i połącz go z wersjami językowymi i terminologicznymi. Jeśli kolega później zgłosi, że "wynik jest nieprawidłowy", obie strony mogą najpierw potwierdzić, że ten sam zestaw plików jest sprawdzany, zamiast wielokrotnie zgadywać wiele nazw plików final.

Źródła: Python hashlib.

📝 Podsumowanie

Ta sama nazwa nie oznacza tej samej kopii; nazwy plików służą jedynie do celów odniesienia. Wykorzystanie hashów treści do zapisywania wejść i wychodów pozwala zespołom najpierw wyrównać plik, a następnie omówić wyniki tłumaczenia.

Doświadczenie teraz: Prześlij dokument, aby zacząć tłumaczyć, zachowując oryginalne formatowanie

Zaktualizowano 2026-11-11