Dlaczego dwukolumnowy plik PDF jest wyodrębniany seryjnie? Najpierw zachowaj współrzędne, a potem porozmawiaj o kolejności czytania

Wyjaśnij, że dwukolumnowa serializacja tekstu PDF wynika z braku struktury semantycznej formatu, wyjaśnij, że parametr sortowania jest tylko sortowaniem geometrycznym. Dostarczono syntetyczny przykład języka Python oparty na partycjonowaniu współrzędnych, aby zademonstrować logikę reorganizacji sekwencji, wyjaśnić obowiązujące granice i ręcznie sprawdzić czerwone linie oraz zapewnić pragmatyczną ścieżkę akceptacji, która łączy przepływ pracy związany z tłumaczeniem OmniDoc.

Sekwencje tekstowe wyodrębnione z dwukolumnowych plików PDF często nie są rozpoznawane niepoprawnie, ale są odczytywane w niewłaściwej kolejności. Ten artykuł jest przeznaczony dla czytelników, którzy muszą wyodrębnić tekst z dwukolumnowych plików PDF, takich jak artykuły i raporty, a następnie je przetłumaczyć lub uporządkować.

Czytelnicy zwykle spotykają się z taką sytuacją: w połowie lewej kolumny po kolejnym zdaniu następuje wyjaśnienie wzoru w prawej kolumnie. Wszystkie postacie mogą zostać rozpoznane poprawnie, ale kolejność zostanie zakłócona. W tym artykule najpierw wyjaśniono, dlaczego występuje serializacja, a następnie na syntetycznym przykładzie zademonstrowano, jak zreorganizować kolejność poprzez dzielenie według współrzędnych. Na koniec podaje obowiązujące granice i listę akceptacji, aby ułatwić Ci ocenę, czy można ich użyć we własnych plikach.

Dlaczego dwukolumnowy plik PDF jest wyodrębniany seryjnie? Wniosek w jednym zdaniu

Najpierw zachowaj współrzędne i stronę źródłową, a następnie posortuj według przepisów regionalnych. Nie kompresuj bezpośrednio całej strony w długi ciąg.

twoja sytuacjaZalecane praktykipowód
Zwykła dwukolumnowa gazeta, serializacja tekstuPrzeczytaj najpierw lewą kolumnę sekcji, a następnie przeczytaj prawą kolumnęNaprzemienne łączenie linia po linii spowoduje zniszczenie akapitów
Chciałem tylko szybko spróbowaćPorównaj wyniki włączania i wyłączania sortsort wykonuje tylko sortowanie geometryczne, odpowiednie dla stron reguł
Strony mają międzykolumnowe tytuły, notatki boczne i przypisyPrzetwarzaj oddzielnie według regionu i sprawdź powiązania regionalneSamo sortowanie geometryczne nie jest w stanie określić przypisania tych treści.
Należy przekazać modelowi translacyjnemuZachowaj współrzędne i numery stron, najpierw uporządkuj zamówienie, a następnie przetłumaczKonteksty w niewłaściwej kolejności trudno zaradzić nawet poprzez zmianę modelu.

Dlaczego zamówienie jest pomieszane?

PDF rejestruje położenie każdego akapitu tekstu, a nie „który to akapit i do której kolumny należy?"Gdy narzędzie do wyodrębniania wyprowadza dane według współrzędnych, jeśli nie ma reguł obszaru, tekst w lewej i prawej kolumnie może być przeplatany.

Takie problemy niekoniecznie pojawiają się na etapie identyfikacji. Być może wszystkie słowa zostały wymienione poprawnie, ale w niewłaściwej kolejności. Dlatego pomysł rozwiązania powinien skupiać się na sortowaniu i podziale na strefy, a nie na ciągłej zmianie łączy rozpoznawania lub tłumaczenia.

Najpierw zachowaj współrzędne, a potem porozmawiaj o kolejności czytania

Przed rozwiązaniem problemu z zamówieniem zachowaj współrzędne i stronę, z której pochodzi tekst. Nie spiesz się, aby skompresować całą stronę w jeden długi ciąg.

  • Zachowaj cztery współrzędne każdego bloku tekstu, aby ułatwić późniejszą ocenę własności obszaru.
  • Zachowaj numer strony źródłowej, aby ułatwić cofanie się i ręczną weryfikację.
  • Po utracie informacji regionalnych kolejne tłumaczenia będą miały niewłaściwy kontekst, a zmiana modelu tłumaczenia może nie być w stanie temu zaradzić.

sort=Ware warto spróbować, ale nie pozwala to na zrozumienie układu

PyMuPDF udostępnia różne formy wyodrębniania, takie jak tekst, słowa, bloki itp. Specyficzne przetwarzaniesort różni się w zależności od typu wyjściowego i wersji. Nie można go ogólnie opisać jako ustalonego algorytmu składu ani nie można obiecać przywrócenia porządku czytania wszystkich dokumentów.

Sugestie dotyczące użycia są następujące:

  • Na stronie reguł możesz najpierw porównać wyniki włączania i wyłączania sortowania.
  • W przypadku stron z tytułami obejmującymi kolumny, przypisami bocznymi i przypisami należy ponownie sprawdzić powiązanie powierzchni.
  • Plik PDF może zawierać znaczniki strukturalne, ale nie oznacza to, że aktualnie używany interfejs ekstrakcji automatycznie wyświetli semantyczne drzewo akapitów, którego potrzebujesz.

W tym artykule nie zaimplementowano uniwersalnego rozpoznawania układu, a jedynie pokazano „jak sortować według istniejących przepisów regionalnych"i jasno wyjaśniono granice możliwości. Interfejs i formularz ekstrakcji można znaleźć w Oficjalny przewodnik po ekstrakcji tekstu PyMuPDF.

Użyj pięciu syntetyzowanych bloków tekstu, aby wyjaśnić problem

Przykładowa strona ma szerokość 600 punktów i 300-punktową granicę między kolumnami; w promieniu 80 punktów od góry znajduje się międzykolumnowy obszar tytułu, a poniżej znajduje się obszar tekstowy. Dane wejściowe są celowo pomieszane: drugi akapit w prawej kolumnie jest umieszczany jako pierwszy, a pierwszy akapit w lewej kolumnie jako ostatni. Każda krotka zawiera cztery współrzędne prostokąta i tekst. Jest to uproszczona struktura zdefiniowana do celów demonstracyjnych i nie jest równoważna pełnej wartości zwracanej przez get_text("blocks").

Oczekiwanym rezultatem powinno być: tytuł, pierwszy akapit w lewej kolumnie, drugi akapit w lewej kolumnie, pierwszy akapit w prawej kolumnie, drugi akapit w prawej kolumnie. Bloki tekstu przekraczające granice kolumn muszą trafiać na listę wyjątków, a nie być po cichu odrzucane lub umieszczane w lewej kolumnie.

Mały przykład, który można uruchomić w całości

W poniższych przykładach używana jest tylko standardowa biblioteka języka Python. Łącząc się z PyMuPDF, możesz zachować pierwsze pięć pól z wyników wyodrębniania bloków i najpierw wykluczyć bloki nietekstowe. Przykład nie otwiera plików zewnętrznych, nie wymaga OCR i nie określa automatycznie granic kolumn.

def order_known_layout(blocks, split_x=300, title_bottom=80):
    groups = {"title": [], "left": [], "right": []}
    rejected = []
    for block in blocks:
        x0, y0, x1, y1, text = block
        if x1 <= x0 or y1 <= y0:
            rejected.append(block)
            continue
        if y1 <= title_bottom:
            region = "title"
        elif y0 < title_bottom:
            rejected.append(block)
            continue
        elif x1 <= split_x:
            region = "left"
        elif x0 >= split_x:
            region = "right"
        else:
            rejected.append(block)
            continue
        groups[region].append(block)
    ordered = []
    for region in ("title", "left", "right"):
        ordered.extend(sorted(groups[region], key=lambda b: (b[1], b[0])))
    return [b[4] for b in ordered], rejected

sample = [(330, 160, 550, 190, "R2"), (40, 100, 270, 130, "L1"),
          (40, 20, 550, 50, "TITLE"), (330, 100, 550, 130, "R1"),
          (40, 160, 270, 190, "L2")]
ordered, rejected = order_known_layout(sample)
assert ordered == ["TITLE", "L1", "L2", "R1", "R2"]
assert rejected == []
wide = (40, 220, 550, 250, "FULL WIDTH BODY")
assert order_known_layout(sample + [wide])[1] == [wide]
assert order_known_layout([]) == ([], [])
print("known-layout examples: 3 assertions passed")

Wartości 80 i 300 w przykładzie pochodzą z ustawień na tej stronie złożonej i nie stanowią progów empirycznych mających zastosowanie do wszystkich plików PDF. Gdy zmieni się szerokość lewej i prawej kolumny następnej strony, jeśli zostaną użyte parametry z poprzedniej strony, może wystąpić „program działa normalnie, ale zawartość jest nieprawidłowa". Reguły regionalne powinny podążać za stroną, przynajmniej zapisywać wersję reguły i rozmiar strony.

📊 Porównanie rdzeni

Metody obsługiCo można zrobić?Co warto zauważyć?
Używaj bezpośredniosort=TrueSortuj geometrycznie według współrzędnych; najpierw spróbuj strony z regułamiNie rozumiem własności tytułów przeszkod, przypisów i przypisów
Sortuj według podziału współrzędnychNajpierw podziel powierzchnię, a następnie odczytuj po segmentach dla łatwiejszej inspekcjiPróg partycji zależy od strony i musi być weryfikowany na podstawie każdej strony
Ręcznie przypisana kolejność odczytuWyniki są najbardziej kontrolowane i odpowiednie do weryfikacji kluczowych dokumentówWysoki koszt, odpowiedni do sprawdzeń i benchmarkingu

Nie patrz tylko na błędy podczas przyjmowania

Przedmioty inspekcyjneCo powinno być widoczneCo zrobić, jeśli nie spełnia wymagań
Porządek regionalnyPo tytule najpierw pełny lewy pasek, potem pełny prawy pasekSprawdź reguły partycji; nie polegaj na zamianie ciągów znaków, żeby łatać łatkę
Spójność treściLiczba zaakceptowanych bloków plus liczba odrzuconych bloków równa się liczbie bloków wejściowychDostarczanie bloków i sprawdzanie cichych brakujących bloków
Główny tekst przeszkódPojawi się na liście odrzuconychDodaj sekcje przeszkod lub ręczną ocenę
Obrót i cięcieBloki wejściowe i partycje korzystają z tego samego układu współrzędnychNajpierw zjednoć współrzędne, a następnie wykonywać oceny inkluzji
Nagłówki i przypisyKlasyfikacja oddzielnie według zasad biznesowychNie usuwaj całego tekstu na dole naraz

W prawdziwych pracach może się pojawić taka struktura: wstaw diagram przeszkody na środku i zaczynaj od nowa podwójną kolumnę poniżej obrazu. Na tym etapie najpierw musisz podzielić stronę na górną i dolną sekcję, a następnie posortować je osobno. Jednorazowa podział na trzy sekcje w tym artykule to za mało. Chiński układ pionowy, tekst od prawej do lewej oraz złożone notatki z ramkami nie powinny być używane do czytania instrukcji tutaj.

🎯 Która metoda ci odpowiada?

Jeśli ......

  • Tylko strony jedno- lub dwukolumnowe, które muszą obsługiwać tylko reguły: Najpierw porównaj wyniki włączania i zamykania sort, a następnie zdecyduj, czy użyć reguł partycjonowania.
  • Obsługa prac z tytułami krzyżowymi, wykresami lub przypisami: Podziel strony według sekcji i ustaw listy wyjątków dla treści krzyżowych.
  • Musisz przekazać tłumaczenie innym: Zachowaj współrzędne i numery stron, sprawdź każdy element zgodnie z listą kontrolną akceptacji i nie patrz tylko na to, czy operacja jest błędna.
  • Jeśli nie chcesz samodzielnie utrzymywać skryptów: Możesz bezpośrednio korzystać z gotowych narzędzi do tłumaczenia dokumentów i sprawdzać tłumaczenie według tej samej sekwencyjnej listy kontrolnej.

Jak odbierać przepływ pracy tłumaczenia OmniDoc

Wartość własnych skryptów polega na jasnym określaniu zasad akceptacji; Wartość gotowych narzędzi tłumaczeniowych polega na skróceniu liczby kroków między dokumentami a tłumaczeniami. Te dwie rzeczy nie są ze sobą sprzeczne. OmniDoc (wpis produktu) oferuje portal tłumaczeń dokumentów, a oficjalna strona wprowadza także funkcje takie jak OCR, terminologia i porównanie dwujęzyczne. Możesz wybrać odczulony artykuł z prawem do przesłania i sprawdzenia tłumaczenia, korzystając z tego samego zestawu list kontrolnych.

Kluczowe kontrole obejmują:

  • Sprawdź, czy zdanie otwierające po tytule przeszkody jest powiązane.
  • Czy napisy zostały połączone z głównym tekstem?
  • Sprawdzić, czy przypisy nadal odpowiadają poprawnym pozycjom.

To ocena wyników dostaw, a nie wnioskowanie o wewnętrznych algorytmach OmniDoc. Jeśli wynik nie spełnia wymagań, prosimy zachować oryginalną stronę i sekcję błędów, najpierw zidentyfikować, czy problem leży w identyfikacji, sortowaniu lub tłumaczeniu, a następnie zdecydować, jak go naprawić.

❓ Najczęściej zadawane pytania (FAQ)

1. Dwukolumnowy numer seryjny PDF — czy jest błędnie identyfikowany?

Niekoniecznie. Wszystkie znaki mogą być poprawnie rozpoznawane; problemy często leżą w kolejności czytania, więc najpierw powinieneś sprawdzić kolejność i zasady obszaru.

2. sort=True: Czy możesz bezpośrednio rozwiązać problem porządku podwójnych kolumn?

Nie da się tego uogólnić. Obsługa sort różni się w zależności od typu wyjścia i wersji. Nie jest to układ i nie może obiecać przywrócenia kolejności odczytu wszystkich dokumentów. Dla stron z zasadami możesz spróbować najpierw; dla stron z treścią przekrojową musisz też sprawdzić zależności regionalne.

3. Dlaczego nie możesz skompresować całej strony w długi sznurek?

Gdy współrzędne i informacje o obszarze zostaną utracone, kolejne tłumaczenia mają tylko niespójne konteksty, a nawet inny model tłumaczenia może tego nie naprawić.

4. Czy 80 i 300 punktów z przykładu można bezpośrednio zastosować do innych PDF-ów?

Nie. To są tylko ustawienia dla tej strony złożonej. Gdy zmienia się rozmiar strony lub szerokość kolumny, wersja reguły powinna być weryfikowana i zapisywana osobno na każdej stronie.

📝 Podsumowanie

W przypadku zamówień PDF z podwójnymi kolumnami należy najpierw zachować współrzędne i strony źródłowe, następnie obsłużyć według reguł regionalnych i każdy element sprawdzić zgodnie z listą kontrolną akceptacji. Skrypty tworzone samodzielnie nadają się do wyraźnego pisania reguł, podczas gdy gotowe narzędzia lepiej ograniczają liczbę kroków operacyjnych; oba mogą być używane razem.

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

Zaktualizowano 2026-11-13