Zenn
Closed6

多機能PDF操作ツール「Stirling-PDF」を試す

kun432kun432

こういう記事を見かけた

https://runacap.com/ross-index/annual-2024/

流石にAI・LLM関連のものが多い。で8割ぐらいは過去に触った or ざっくり見かけて知ってる、ものなんだけども、いくつか知らないものがあった。その中の1つが「Stirling-PDF」。

https://github.com/Stirling-Tools/Stirling-PDF

Stirling-PDF

Stirling-PDF は、Docker を使用した堅牢な、ローカルホスト型の Web ベース PDF 操作ツールです。PDF ファイルの分割、結合、変換、再配置、画像の追加、回転、圧縮など、さまざまな操作を行うことができます。このローカルホスト型 Web アプリケーションは、あらゆる PDF のニーズに対応する包括的な機能セットへと進化しました。

すべてのファイルおよび PDF は、クライアント側にのみ存在するか、タスク実行中のみサーバーのメモリ内に存在するか、またはタスクの実行のために一時的にファイルとして存在します。ユーザーによってダウンロードされたファイルは、その時点でサーバーから削除されます。

ホームページ: https://stirlingpdf.com

すべてのドキュメントは https://docs.stirlingpdf.com/ でご覧いただけます。

stirling-home

機能

  • 50以上の PDF 操作
  • 並列ファイル処理とダウンロード
  • ダークモード対応
  • カスタムダウンロードオプション
  • 複数の機能を自動キューで実行するカスタム「パイプライン」
  • 外部スクリプトとの連携用 API
  • 任意のログインおよび認証サポート(ドキュメントは こちら をご参照ください)
  • データベースのバックアップとインポート(ドキュメントは こちら をご参照ください)
  • エンタープライズ向け機能(SSO など)については こちら をご確認ください

PDF機能

ページ操作

  • PDF の閲覧および編集 - カスタム閲覧、ソート、検索機能を備えたマルチページ PDF の表示。また、注釈、描画、テキストや画像の追加などのページ内編集機能を提供します。(PDF.js、Joxit、Liberation フォントを使用)
  • PDF とそのページの結合/分割/回転/移動のための完全なインタラクティブ GUI
  • 複数の PDF を単一のファイルに結合
  • 指定されたページ番号で PDF を複数のファイルに分割、またはすべてのページを個別のファイルとして抽出
  • PDF ページの順序を再配置
  • 90度単位での PDF 回転
  • ページの削除
  • マルチページレイアウト(PDF を複数ページの形式に整形)
  • ページ内容のサイズを設定パーセンテージでスケール調整
  • コントラストの調整
  • PDF のトリミング
  • 自動分割 PDF(物理的にスキャンされたページ区切りを使用)
  • ページの抽出
  • PDF を単一ページに変換
  • PDF 同士を重ね合わせ
  • PDF から単一ページへの変換
  • セクションごとに PDF を分割

変換操作

  • PDF を画像に、または画像から PDF に変換
  • すべての一般的なファイルを PDF に変換(LibreOffice を使用)
  • PDF を Word、PowerPoint、その他に変換(LibreOffice を使用)
  • HTML を PDF に変換
  • PDF を XML に変換
  • PDF を CSV に変換
  • URL を PDF に変換
  • Markdown を PDF に変換

セキュリティと権限

  • パスワードの追加および削除
  • PDF の権限の変更/設定
  • 透かしの追加
  • PDF の認証/署名
  • PDF のサニタイズ
  • テキストの自動マスク

他の操作

  • 署名の追加/生成/書き込み

  • サイズまたは PDF による分割

  • PDF の修復

  • 空白ページの検出と削除

  • 2 つの PDF を比較し、テキストの差異を表示

  • PDF への画像の追加

  • ファイルサイズを減少させるための PDF 圧縮(qpdf を使用)

  • PDF からの画像抽出

  • PDF からの画像削除

  • スキャンからの画像抽出

  • 注釈の削除

  • ページ番号の追加

  • PDF ヘッダーのテキストを検出して自動的にファイル名を変更

  • PDF の OCR(Tesseract OCR を使用)

  • PDF/A 変換(LibreOffice を使用)

  • メタデータの編集

  • PDF のフラット化

  • PDF のすべての情報を表示または JSON としてエクスポート

  • 埋め込み JavaScript の表示/検出

📖 Get Started

当社の包括的なドキュメントは docs.stirlingpdf.com にてご覧いただけます。以下を含みます:

  • すべてのプラットフォーム向けのインストールガイド
  • 設定オプション
  • 各機能のドキュメント
  • API リファレンス
  • セキュリティ設定
  • エンタープライズ向け機能

サポートしている言語

Stirling-PDF は現在 39 の言語に対応しています!

Language Progress
Arabic (العربية) (ar_AR) 88%
Azerbaijani (Azərbaycan Dili) (az_AZ) 87%
Basque (Euskara) (eu_ES) 51%
Bulgarian (Български) (bg_BG) 98%
Catalan (Català) (ca_CA) 94%
Croatian (Hrvatski) (hr_HR) 85%
Czech (Česky) (cs_CZ) 96%
Danish (Dansk) (da_DK) 84%
Dutch (Nederlands) (nl_NL) 83%
English (English) (en_GB) 100%
English (US) (en_US) 100%
French (Français) (fr_FR) 97%
German (Deutsch) (de_DE) 99%
Greek (Ελληνικά) (el_GR) 96%
Hindi (हिंदी) (hi_IN) 96%
Hungarian (Magyar) (hu_HU) 94%
Indonesian (Bahasa Indonesia) (id_ID) 85%
Irish (Gaeilge) (ga_IE) 96%
Italian (Italiano) (it_IT) 99%
Japanese (日本語) (ja_JP) 93%
Korean (한국어) (ko_KR) 97%
Norwegian (Norsk) (no_NB) 77%
Persian (فارسی) (fa_IR) 92%
Polish (Polski) (pl_PL) 84%
Portuguese (Português) (pt_PT) 96%
Portuguese Brazilian (Português) (pt_BR) 98%
Romanian (Română) (ro_RO) 79%
Russian (Русский) (ru_RU) 96%
Serbian Latin alphabet (Srpski) (sr_LATN_RS) 63%
Simplified Chinese (简体中文) (zh_CN) 98%
Slovakian (Slovensky) (sk_SK) 72%
Slovenian (Slovenščina) (sl_SI) 95%
Spanish (Español) (es_ES) 98%
Swedish (Svenska) (sv_SE) 92%
Thai (ไทย) (th_TH) 84%
Tibetan (བོད་ཡིག་) (zh_BO) 93%
Traditional Chinese (繁體中文) (zh_TW) 99%
Turkish (Türkçe) (tr_TR) 81%
Ukrainian (Українська) (uk_UA) 99%
Vietnamese (Tiếng Việt) (vi_VN) 78%

Stirling PDF Enterprise

Stirling PDF は、エンタープライズ版のソフトウェアも提供しています。これは、同じ優れたソフトウェアに加え、追加の機能、サポート、および利便性を備えたものです。詳細は Enterprise docs をご覧ください。

なるほど、WebベースでPDF操作が色々行えるツールということの様子。あとはAPIなどもあるみたい。

kun432kun432

Getting Started

公式ドキュメントのGetting Startedに従って進めていく

https://docs.stirlingpdf.com/

インストール

インストール方法は複数ある

  • デスクトップアプリケーションとしてインストール
    • Windows
    • Mac
    • Linuxは近日インストーラ提供予定。それまでは手動インストール。
  • Dockerでサーバアプリケーションとしてインストール
  • Kubernetes(helmチャート)
  • 手動でインストール
    • jarファイルを使用

今回は、ローカルのMacで、Dockerを使おうと思う。

Dockerイメージは3種類用意されている。

  • Fat: Fullの全機能に加えて、追加フォントとセキュリティ機能(jarのセキュリティバージョン)がバンドル。
  • Full: 全機能があらかじめ設定済みで、すぐに使用可能。
  • Ultra-lite: コア機能のみの最小インストール。

デスクトップバージョンなどもOSごとに微妙に違ったり追加ライブラリなどが必要になったりするようなので、詳細は以下を参照。

https://docs.stirlingpdf.com/Installation/Versions

今回はFatのイメージを使う。Dockerでのインストールは以下。

https://docs.stirlingpdf.com/Installation/Docker Install

作業ディレクトリを作成

mkdir stirling-pdf-work && cd stirling-pdf-work

docker runでそのまま実行する方法とdocker composeを使う方法がある。今回は後者で。以下のようなdocker-compose.yamlを作成。

docker-compose.yaml
version: '3.3'
services:
  stirling-pdf:
    image: docker.stirlingpdf.com/stirlingtools/stirling-pdf:latest-fat
    ports:
      - '8080:8080'
    volumes:
      - ./StirlingPDF/trainingData:/usr/share/tessdata # 追加のOCR言語のために必要
      - ./StirlingPDF/extraConfigs:/configs
      - ./StirlingPDF/customFiles:/customFiles/
      - ./StirlingPDF/logs:/logs/
      - ./StirlingPDF/pipeline:/pipeline/
    environment:
      - DOCKER_ENABLE_SECURITY=true
      - LANGS=ja_JP

起動

docker compose up -d

起動したらブラウザでアクセス。デフォルトだと8080番ポート。こんな感じで分析を共有するか聞かれるので適当に選択。

こういうトップ画面になる。メニューが豊富。

https://ds4sd.github.io/docling/usage/

サンプルとして、神戸市が公開している観光に関する統計・調査資料のうち、「令和5年度 神戸市観光動向調査結果について」のPDFを使用させていただく。

色々機能はあるが、まずは「PDFを画像に変換」してみる。

PDFファイルをアップロード

アップロードされたら変換

変換中・・・

変換後の画像ファイルがZIPで圧縮されるのでダウンロード

ダウンロードしたZIPを解凍すると、ページごとに画像として分割されているのがわかる。

もう一つ。「PDFをMarkdownに変換」も試してみる。

あとは同じような画面で操作するだけ。で、変換したMarkdownファイルはこんな感じ。

1ページ目

![background image](r5_doukou001.png)

令和5年度 神戸市観光動向調査結果について

本調査は,来神観光客の特質と神戸市内の観光動向を把握し,今後の観光行政の参考とす

ることを目的に実施。

調査員が対面にてアンケート項目を聞き取りする形で実施。

①

令和5年 5月 13 日(土)・20 日(土)※

②

令和5年 9月 9日(土)

③

令和5年 11 月 25 日(土)/12 月2日(土)※

④

令和6年 2月 10 日(土)・17 日(土)・24 日/3月 30 日(土)※

※雨天等により、一部の調査地点については延期して実施。

地区

NO

調査地点

サンプル数

北野

1

北野町広場

246

2

北野工房のまち
(snip)

4ページ目

![background image](r5_doukou004.png)

3

(1)性別構成

●

性別構成としては、全市では「男性」が43.5%、「女性」が56.5%となっている。

●

地区別にみると、

『六甲・摩耶』を除いた地区で女性の占める割合が高いが、

『北野』では「女

性」が30.0ポイント高く、差が大きくなっている。

【図表1 性別構成】

(2)年齢構成

●

年齢構成としては、全市では「60歳以上」が24.3%で最も高く、次いで「50歳代」(19.8%)、

「40歳代」(18.0%)、

「20歳代」(16.9%)、

「30歳代」(16.2%)の順となっており、40歳代以

上が6割を超える。
(snip)

ちょっとこれは物足りない結果。

とはいえ、多数のPDF操作がGUIで簡単に行えるということは言えると思う。

kun432kun432

上の各ツール以外に、ヘッダー部分にも機能がある。これらをみていく。

マルチツール

マルチツールでは1つないし複数のPDFを読み込んで、ページの順番を変える、ページを回転させる、ページを削除する、といったことが行って、それをエクスポートすることができる。

PDFビューワー・エディター

PDFを読み込んで参照できるビューワーが用意されている。元の内容までは変更できないが、画像や文字、ハイライトなどを追加するエディター機能もある。

圧縮

PDFのファイルサイズを圧縮できる。どうやら画像を圧縮している様子。

パイプライン

複数のツールを組み合わせてパイプラインを作成できる

例えば、

  • PDFをOCRにかける
  • PDFをMarkdownに変換する

みたいなパイプラインを作って実行できる

パイプラインの設定は保存・ダウンロードもできる様子。ここはうまく使いこなせればいいかも。

kun432kun432

API

/swagger-ui/index.htmlにアクセスするとAPIドキュメントが確認できる。

例えばPDFをHTMLに変換する場合だとこんな感じ

curl -X 'POST' \
  'http://localhost:8080/api/v1/convert/pdf/markdown' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'fileInput=@./r5_doukou.pdf;type=application/pdf' > r5_doukou.md

ただし一応制限がある

Stirling-PDFの機能セットは完全にバックエンドに限定されているわけではないため、すべての機能がAPI経由でアクセスできるわけではありません。「view-pdf」や「visually sign」などの特定の操作は、フロントエンドでのみ実行され、Web-UI経由でのみ利用可能です。一部のAPIエンドポイントが存在しないように見える状況が発生した場合は、これらのフロントエンド専用機能が原因である可能性が高いです。

これは上のパイプラインも同様で、パイプラインで組み合わせる動作の中にはパイプラインに追加できない・組み合わせれないものなどもある様子。おそらくこれらはAPI操作に対応していない、ということなのだろうと思う。

kun432kun432

まとめ

個々の機能については実際に使ってみないとわからないけども、非常に機能は豊富。APIもあるので、自動化もできそう。

PDF、最近はもっぱらLLMで使うことが多くて、いかにPDFのコンテキストをうまく読み込めるか?という「入力」の部分ばかりに注目していたけども、「出力」「変換」「署名」などをうまく使うのも面白そう。

このスクラップは17日前にクローズされました
ログインするとコメントできます