Model wypluwa dodatkowe pole. Czy należy go wyświetlić bezpośrednio, czy odrzucić? Zobaczmy najpierw, czy istnieje porozumienie
W wyniku ekstrakcji znajduje się dodatkowy `confidence`. Przód wygląda bardzo użytecznie, więc jest bezpośrednio wyświetlany jako „wiarygodność”. Problem polega na tym, że tego pola nie można ani zdefiniować, ani skalibrować. Dodatkowe pole niekoniecznie jest nieszkodliwe: może pozwolić dalszym użytkownikom polegać na nieuzgodnionych wartościach.
Model zwraca jeszcze jedno pole w wynikach wyodrębniania strukturalnego, a interfejs użytkownika może z łatwością wyświetlić je bezpośrednio jako użyteczną informację. Na przykład, jeśli w wyniku ekstrakcji znajduje się dodatkowy kod confidence, zostanie on wyświetlony na stronie jako „wiarygodność". Problem polega na tym, że tego pola nie można ani zdefiniować, ani skalibrować. Dodatkowe pola niekoniecznie są nieszkodliwe i mogą pozwolić dalszym użytkownikom na wykorzystanie nieuzgodnionych wartości jako podstawy do oceny.
Ten artykuł jest odpowiedni dla studentów odpowiedzialnych za projektowanie interfejsów, dokowanie front-end i back-end lub procesy przetwarzania dokumentów. Poniżej wyjaśniono, jak w pierwszej kolejności zdecydować, czy interfejs jest otwarty, czy zamknięty, jak zamienić nieznane pola w zauważalne błędy i jakie informacje powinny zostać zwrócone po odrzuceniu. Po jego przeczytaniu możesz zdecydować, czy dodatkowe pola mają zostać odrzucone, zignorowane, czy też uwzględnione w nowej wersji.
W tym artykule wykorzystano próbki syntetyczne w celu zademonstrowania metody przetwarzania. Kod został sprawdzony na przykładach w izolowanym środowisku i nie stanowi gwarancji działania wszystkich rzeczywistych plików lub 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.
Czy można bezpośrednio wyświetlić wiele pól modelu? Wniosek w jednym zdaniu
Najpierw uzgodnij umowę, a następnie zdecyduj, czy ją zaakceptować, czy odrzucić: niezdefiniowane i skalibrowane pola nie powinny być bezpośrednio wyświetlane jako wiarygodny dowód.
| twoja sytuacja | Zalecane praktyki | powód |
|---|---|---|
| Narzędzia eksploracji wewnętrznej | Pola rozszerzeń mogą być dozwolone | Nadaj priorytet elastyczności na etapie eksploracji |
| Stabilny interfejs dostawy | Zamknij każdą warstwę za pomocąadditionalProperties: false | Odrzuć niezdefiniowane atrybuty, aby uniknąć błędnego odczytania na dalszym etapie |
| Pojawiają się nowe pola prawne | Opublikuj nową wersję schematu | Nie rezygnuj w tajemnicy ze starych wersji |
| Wybierz opcję ignorowania zbędnych pól | Rejestruj oryginalne wyniki i zachowanie filtrowania | Wygodnie jest rozróżnić, czy dane źródłowe nie posiadają tego pola, czy też warstwa interfejsu je usunęła. |
Najpierw zdecyduj, czy interfejs jest otwarty, czy zamknięty
Narzędzia do eksploracji wewnętrznej mogą pozwolić na rozszerzone pola, a stabilne interfejsy dostarczania często wymagają bardziej rygorystycznych granic. Gdy dodatkowe właściwości schematu JSON jest ustawiony na false, niezdefiniowane atrybuty bieżącego obiektu mogą zostać odrzucone, ale każdy zagnieżdżony obiekt nie zostanie automatycznie nadpisany rekursywnie. To, co jest dozwolone na każdym poziomie, powinno być jasno napisane.
Nie oznacza to, że wszystkie interfejsy powinny odrzucać wszystkie rozszerzenia. Kluczem jest uczynienie wyboru jasnym i pozostawienie mechanizmu wersjonowania otwartego na aktualizacje. Ciche ignorowanie pól o tej samej nazwie dzisiaj i nagłe użycie ich jutro może łatwo prowadzić do różnych interpretacji danych historycznych.
Zamień nieznane pola w zauważalne błędy
from jsonschema import Draft202012Validator
schema = {"type": "object", "required": ["name", "evidence"],
"properties": {"name": {"type": "string"},
"evidence": {"type": "object", "required": ["page"],
"properties": {"page": {"type": "integer", "minimum": 1}},
"additionalProperties": False}},
"additionalProperties": False}
validator = Draft202012Validator(schema)
valid = lambda x: not list(validator.iter_errors(x))
assert valid({"name": "Demo", "evidence": {"page": 1}})
assert not valid({"name": "Demo", "confidence": 0.99, "evidence": {"page": 1}})
assert not valid({"name": "Demo", "evidence": {"page": 1, "guess": True}})
Wartość liczbowa 0.99 w przykładzie to tylko syntetyczne dane wejściowe, które należy odrzucić, a nie wynik prawdziwej jakości dla żadnego modelu. W przykładzie sprawdzane są jednocześnie warstwy najwyższego poziomu i warstwy zagnieżdżone, aby zapobiec pominięciu, które zamyka jedynie warstwę zewnętrzną i pozwala na dowolne rozszerzanie się warstwy wewnętrznej.
Po odrzuceniu podaj informacje, które można naprawić
| Stan | Informacje o zwrocie powinny zawierać | czego nie robić |
|---|---|---|
| Wiele pól na najwyższym poziomie | Nieznana nazwa klucza, wersja protokołu | Automatycznie pokazuj go jako zaufany wskaźnik |
| Wewnętrzne wielopolowe | Ścieżka obiektu, nieznana nazwa klucza | Zwróć tylko jeden błąd JSON |
| Nowa wersja rozszerzenia prawnego | Wyraźny nowy schemat | Potajemnie zrelaksuj stare wersje |
| Model wielokrotnie generuje nadmiarowe klucze | Przyczyna niepowodzenia zadania wyodrębniania | Po każdym usunięciu udaje się, że oryginalne dane wyjściowe są kwalifikowane. |
📊 Porównanie rdzeni: interfejs otwarty i interfejs zamknięty
| Wymiary | otwarty interfejs | zamknięty interfejs |
|---|---|---|
| Obowiązujące scenariusze | Narzędzia eksploracji wewnętrznej | Stabilny interfejs dostawy |
| Obsługa zbędnych pól | Zezwól na rozszerzenie | Odrzuć niezdefiniowane właściwości |
| Główne zagrożenia | Podstawą są nieuzgodnione wartości | Zadanie kończy się niepowodzeniem, gdy model czasami generuje wiele wyników i wymaga sprawdzenia. |
| Metoda aktualizacji | Użyj bezpośrednio | Jawnie rozszerzony o nowe wersje schematu |
Usunięcie pól to także decyzja dotycząca przetwarzania danych
Jeśli rzeczywiście zastosowano opcję „czytaj znane pola, ignoruj inne pola", należy udokumentować oryginalne wyniki i zachowanie filtrowania. W przeciwnym razie trudno będzie rozróżnić, czy dane źródłowe oryginalnie nie zawierają danego elementu, czy też warstwa interfejsu go usunęła. Porzucanie pola nie powinno być również sposobem na maskowanie niezgodności modelu z protokołem.
Pozostaw granicę dla tłumaczenia i ekstrakcji
Wyniki tłumaczenia dokumentów i wyniki w postaci ustrukturyzowanych pól to dwie różne umowy. Używając OmniDoc do przetwarzania dokumentów, możesz używać listy pól do weryfikacji po tłumaczeniu, ale nie możesz automatycznie akceptować dodatkowych pól oceny biznesowej lub pewności tylko dlatego, że tłumaczenie jest płynne.
🎯 Która metoda jest dla Ciebie odpowiednia?
Jeśli używasz narzędzi do eksploracji wewnętrznej
Pola rozszerzeń mogą być dozwolone, ale nadal powinny być wyświetlane jako niezdefiniowane.
Jeśli utrzymujesz stabilny interfejs dostarczania
Otocz każdą warstwę za pomocą additionalProperties: false i zdefiniuj oddzielne granice dla zagnieżdżonych obiektów.
Jeśli chcesz wprowadzić nowe pola
Wydaj nowe wersje schematu, nie luzuj w tajemnicy starych wersji.
Jeśli Twój proces wymaga odrzucenia zbędnych pól
Zapisz oryginalne wyniki i zachowanie filtrowania, aby później łatwo je prześledzić.
❓ Często zadawane pytania (FAQ)
1. Czy additionalProperties: false może obejmować wszystkie poziomy?
Nie można nadpisać automatycznie. Odrzuca jedynie niezdefiniowane atrybuty bieżącego obiektu, a każdy zagnieżdżony obiekt musi wyraźnie napisać, co jest dozwolone osobno.
2. Czy wiele pól wyjściowych w modelu jest koniecznie szkodliwe?
Niekoniecznie, ale może pozwolić dalszym użytkownikom na wykorzystanie nieuzgodnionych wartości jako podstawy, dlatego należy najpierw potwierdzić ich definicję i status kalibracji.
3. Co powinno zostać zwrócone w przypadku odrzucenia dodatkowych pól?
Powinien zawierać nieznaną nazwę klucza, ścieżkę obiektu (jeśli jest wewnętrzna) i wersję protokołu, a nie tylko błąd JSON.
4. Czy nadmiarowe pola można bezpośrednio zignorować?
Tak, ale należy udokumentować surowe wyniki i zachowanie filtrowania i unikać używania ich do maskowania problemów, gdy model nie jest zgodny z protokołem.
📝 Podsumowanie
Dodatkowych pól nie można wyświetlić bezpośrednio tylko dlatego, że wyglądają na przydatne. Najpierw musisz uzgodnić granice interfejsu, a następnie zdecydować, czy zaakceptować, odrzucić, czy zaktualizować wersję. Tylko dzięki wyjaśnieniu zasad na każdym poziomie dane historyczne i dalsza interpretacja mogą być spójne.
Wypróbuj teraz: prześlij dokument, aby rozpocząć tłumaczenie, zachowując oryginalny układ


