Możesz pozwolić agentowi AI spojrzeć na stronę dokumentu zamiast czytać jej tekstowy zrzut. Serwer GroupDocs.Viewer.Mcp renderuje dowolną stronę pliku PDF, Word, Excel lub PowerPoint jako PNG i zwraca ją agentowi, robiąc to lokalnie na Twoim komputerze:

Ile stron ma plik report.pdf? Następnie pokaż mi ostatnią.

Wersja krok po kroku z konfiguracją i rozwiązywaniem problemów znajduje się w dokumentacji: Jak pozwolić agentowi AI zobaczyć strony dokumentu.

Dlaczego ekstrakcja tekstu nie działa na rzeczywistych dokumentach?

Ekstraktor tekstu zwraca znaki w kolejności czytania. Nie zwraca wykresu słupkowego pomiędzy dwoma akapitami, pieczęci „APPROVED” w rogu, układu kolumn tabeli cenowej ani strony będącej skanem, która nie zawiera żadnych znaków. Agent pracujący na podstawie takiego wyniku odpowiada pewnie na pytania o dokument, który widział tylko w połowie, a brakująca połowa zazwyczaj jest częścią, o którą pytałeś.

Rozwiązanie nie polega na lepszym poleceniu. To inny rodzaj danych wejściowych: strona jako obraz, przekazana modelowi akceptującemu obrazy.

Nieprawidłowe podejście: przepuszczać wszystko przez ekstraktor tekstu

Typowe domyślne podejście polega na konwersji dokumentu do tekstu, wklejeniu go do okna kontekstu i zadawaniu pytań. Działa dla prozy. Łamie się na cztery sposoby, które możesz zweryfikować na dowolnym posiadanym dokumencie:

  • Układ zostaje utracony, więc pytanie „czy suma znajduje się w prawej kolumnie?” nie może być odpowiedziane.
  • Liczby w wykresach i diagramach znikają, ponieważ są rysowane, a nie wpisane.
  • Pieczęcie, podpisy i odręczne notatki znikają.
  • Skanowany PDF nie zawiera tekstu.

Model nie może naprawić informacji, które zostały utracone przed jego zobaczeniem dokumentu.

Prawidłowe podejście: renderowanie strony PDF do obrazu dla LLM

render_page renderuje jedną stronę jako PNG, zwraca obraz w treści do agenta i zapisuje kopię w folderze wyjściowym jako <name>_page<N>.png. Serwer obsługuje ponad 170 formatów, w tym PDF, DOCX, XLSX, PPTX, ODT, RTF, HTML, EML i MSG. Model zdolny do przetwarzania obrazu widzi wtedy stronę tak, jakbyś to zrobił.

Agent nie powinien zgadywać numerów stron, dlatego łączy render_page z get_view_info, które zwraca typ pliku, liczbę stron oraz rozmiar każdej strony bez renderowania czegokolwiek. Trzecie narzędzie, get_license_status, raportuje aktywny tryb licencjonowania.

Jak uruchomić serwer dla Claude, Cursor lub Copilot?

Obraz Docker jest samodzielny:

docker run --rm -i -v $(pwd)/documents:/data \
  ghcr.io/groupdocs-viewer/viewer-net-mcp:latest

Po zainstalowaniu SDK .NET 10, dnx GroupDocs.Viewer.Mcp --yes uruchamia ten sam serwer bez Dockera. Zarejestruj go w Claude Desktop, Claude Code, Cursor, VS Code z GitHub Copilot, Windsurf i innych klientach; strona hub wymienia dokładną konfigurację dla każdego. Klient uruchamia serwer jako proces potomny i komunikuje się z nim przez standardowe wejście i wyjście, więc nie ma otwartego portu ani punktu końcowego do zabezpieczenia.

Przykładowa sesja

To ilustracja oparta na udokumentowanym zachowaniu obu narzędzi, a nie przechwycony zrzut ekranu.

You:   How many pages does report.pdf have? Then show me the last one.

Agent: [calls get_view_info on report.pdf]
       report.pdf is a PDF with 2 pages, both 612 x 792 points (US Letter).
       [calls render_page with page = 2]
       Page 2 of 'report.pdf' Saved to: <output folder>/report_page2.png
       Here is what page 2 shows: ...

Obraz pojawia się w treści w klientach, które go wyświetlają. Odpowiedź tekstowa to opis agenta tego, co widzi na stronie.

Co decyduje agent, a co robi silnik?

Agent decyduje, która strona odpowiada na pytanie i co zapytać model o tę stronę. Silnik wykonuje część, która musi być dokładna: otwieranie pliku, paginację zgodnie z dokumentem oraz generowanie PNG. Model nigdy nie musi zgadywać układu strony, ponieważ otrzymuje wyrenderowaną stronę.

Szczere ograniczenia

  • Tryb ewaluacji. Bez licencji wyrenderowane strony zawierają znak wodny ewaluacji, a proces serwera otwiera maksymalnie 15 dokumentów. Znak wodny może zasłonić szczegół, o który pytasz. Zapytaj agenta „Czy serwer viewer jest licencjonowany?”, aby wywołał get_license_status zanim polegasz na tym, co odczytuje.
  • Tylko PNG. Wyjściem jest obraz PNG; nie ma opcji wyboru formatu.
  • Brak sprawdzania numeru strony. render_page nie odrzuca numeru strony poza ostatnią stroną. Najpierw sprawdź liczbę stron przy pomocy get_view_info.
  • Model musi akceptować obrazy. Przy modelu obsługującym tylko tekst agent nadal otrzymuje ścieżkę do zapisanego pliku, ale nie może powiedzieć, co znajduje się na stronie.
  • Obrazy są duże. Każda strona to wbudowany PNG, często kilka setek kilobajtów. Renderuj tylko te strony, które są potrzebne zadaniu, a nie cały plik.
  • Jedna rzecz opuszcza maszynę. Wyrenderowany obraz trafia do agenta, a stamtąd do używanego modelu. Model hostowany lokalnie utrzymuje wszystko na maszynie.

FAQ

Czy Claude może zobaczyć moją stronę PDF i jej układ? Tak, jeśli strona PDF zostanie wyrenderowana jako obraz i używany model Claude akceptuje wejście obrazowe. render_page tworzy ten obraz lokalnie i zwraca go klientowi.

Czy muszę gdzieś przesyłać dokument, aby go wyrenderować? Serwer odczytuje plik z folderu, który zamontujesz, i zapisuje obraz obok niego; dokument nie jest przesyłany przez serwer. Obraz strony trafia do modelu Twojego agenta.

Czy działa to dla Excel i PowerPoint, a nie tylko PDF? Tak. PowerPoint renderuje jeden obraz na slajd, a arkusze Excel są podzielone na strony, przy czym liczba jest widoczna poprzez get_view_info.

Zagłęb się