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 sytuacja | Zalecane praktyki | powód |
|---|---|---|
| Zwykła dwukolumnowa gazeta, serializacja tekstu | Przeczytaj 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 sort | sort wykonuje tylko sortowanie geometryczne, odpowiednie dla stron reguł |
| Strony mają międzykolumnowe tytuły, notatki boczne i przypisy | Przetwarzaj oddzielnie według regionu i sprawdź powiązania regionalne | Samo sortowanie geometryczne nie jest w stanie określić przypisania tych treści. |
| Należy przekazać modelowi translacyjnemu | Zachowaj współrzędne i numery stron, najpierw uporządkuj zamówienie, a następnie przetłumacz | Konteksty 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ługi | Co można zrobić? | Co warto zauważyć? |
|---|---|---|
Używaj bezpośredniosort=True | Sortuj geometrycznie według współrzędnych; najpierw spróbuj strony z regułami | Nie rozumiem własności tytułów przeszkod, przypisów i przypisów |
| Sortuj według podziału współrzędnych | Najpierw podziel powierzchnię, a następnie odczytuj po segmentach dla łatwiejszej inspekcji | Próg partycji zależy od strony i musi być weryfikowany na podstawie każdej strony |
| Ręcznie przypisana kolejność odczytu | Wyniki są najbardziej kontrolowane i odpowiednie do weryfikacji kluczowych dokumentów | Wysoki koszt, odpowiedni do sprawdzeń i benchmarkingu |
Nie patrz tylko na błędy podczas przyjmowania
| Przedmioty inspekcyjne | Co powinno być widoczne | Co zrobić, jeśli nie spełnia wymagań |
|---|---|---|
| Porządek regionalny | Po tytule najpierw pełny lewy pasek, potem pełny prawy pasek | Sprawdź reguły partycji; nie polegaj na zamianie ciągów znaków, żeby łatać łatkę |
| Spójność treści | Liczba zaakceptowanych bloków plus liczba odrzuconych bloków równa się liczbie bloków wejściowych | Dostarczanie bloków i sprawdzanie cichych brakujących bloków |
| Główny tekst przeszkód | Pojawi się na liście odrzuconych | Dodaj sekcje przeszkod lub ręczną ocenę |
| Obrót i cięcie | Bloki wejściowe i partycje korzystają z tego samego układu współrzędnych | Najpierw zjednoć współrzędne, a następnie wykonywać oceny inkluzji |
| Nagłówki i przypisy | Klasyfikacja oddzielnie według zasad biznesowych | Nie 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


