本文へスキップ
LeedyBox
支援する

LeedyBox の仕組み

LeedyBox がブラウザ内で画像、PDF ファイル、データ、テキストを処理する方法、ツールが使うライブラリとブラウザ機能、そしてページで引き続きネットワークを使う部分について説明します。

ブラウザ内でのファイル処理

LeedyBox のツールは、ウェブブラウザ内で JavaScript として動作します。ファイルを選んだりテキストを入力したりすると、ブラウザが端末上でそれを読み込み、処理はお使いのパソコンやスマートフォン上で行われます。処理のためにファイルやテキストを LeedyBox のサーバーへアップロードすることはありません。多くのツールは標準的なブラウザ機能を使います。画像には Canvas API、ハッシュ・パスワード・UUID には Web Crypto API、単語数のカウントには Intl.Segmenter、タイムゾーンには Intl の日付 API を使います。PDF テキスト抽出と画像からテキスト抽出(OCR)で行う OCR には、ブラウザ内で WebAssembly のコードを実行する Tesseract.js を使います。

ファイルはどう扱われますか?

  1. 端末からファイルを選ぶかドラッグ&ドロップするか、ツールにテキストを入力または貼り付けます。
  2. ブラウザが現在のページのメモリにファイルを読み込みます。
  3. ツールが、端末上で動く JavaScript ライブラリでファイルを変換、編集、結合、分割、または読み取ります。
  4. 結果はブラウザ内で作成され、ページに表示されるか、ダウンロードとして提供されます。かかる時間は入力内容と端末によって異なります。
  5. コピーボタンは、クリックしたときにだけ結果をクリップボードに書き込みます。
  6. ページを閉じるか再読み込みすると、そのページのメモリにあるファイル、テキスト、生成された値は破棄されます。

各ツールが使うライブラリ

一部のツールはオープンソースライブラリを基に作られており、ほかのツールは LeedyBox 独自のスクリプトとブラウザに組み込まれた機能だけを使います。すべてのライブラリと、それが必要とするデータ(フォントの対応表、OCR の言語データ、モデル)は、バージョンを固定して leedybox.com 自体から配信しており、ツールのページが公開のコンテンツ配信ネットワーク(CDN)からコードを読み込むことはありません。リクエストするのはライブラリのコードとデータだけで、処理するファイルやテキストがそのリクエストに含まれることはありません。

ツール ライブラリ 読み込み元
画像変換 ブラウザの Canvas API、LeedyBox の BMP/ICO エンコーダー、JSZip(一括ダウンロード用) leedybox.com
画像リサイズ、画像の回転・反転 ブラウザの Canvas API、JSZip(一括ダウンロード用) leedybox.com
画像トリミング ブラウザの Canvas API(サードパーティのライブラリなし) leedybox.com
画像圧縮 ブラウザの Canvas API、UPNG.js 2.1.0 と pako 1.0.11(MIT ライセンス、PNG の減色)、JSZip(一括ダウンロード用) leedybox.com
EXIF情報の削除 LeedyBox のメタデータ読み取り・削除スクリプト(画像データは再エンコードせずにコピー)、JSZip(一括ダウンロード用) leedybox.com
画像からテキスト抽出(OCR) Tesseract.js(OCR エンジンと言語データ) leedybox.com
ファビコン生成 ブラウザの Canvas API、LeedyBox の ICO エンコーダー、JSZip(ZIP パッケージ用) leedybox.com
証明写真作成 MediaPipe Tasks Vision 0.10.35(Apache License 2.0)と Face Landmarker、Selfie Segmenter モデル、ブラウザの Canvas API leedybox.com(自己ホスト)
QRコード・バーコード生成 qrcode-generator 1.4.4、JsBarcode 3.11.6(MIT ライセンス) leedybox.com(自己ホスト)
PDF を JPG に変換 PDF.js、JSZip leedybox.com
JPG を PDF に変換 jsPDF、SortableJS leedybox.com
PDF テキスト抽出 PDF.js、Tesseract.js(OCR エンジンと言語データ) leedybox.com
PDF 結合、分割、圧縮 PDF.js、pdf-lib、JSZip(PDF 分割) leedybox.com
PDFページ整理、PDF回転 PDF.js(ページのサムネイル)、pdf-lib、SortableJS(PDFページ整理) leedybox.com
PDFに透かしを追加、PDFにページ番号を追加 PDF.js(プレビュー)、pdf-lib。標準の PDF フォントで表示できない文字体系のテキストは、端末のフォントで描画して画像として追加します leedybox.com
データ変換 js-yaml、PapaParse、LeedyBox のデータツール用スクリプト leedybox.com
Base64 / URL / JWT、Cron 解析、正規表現テスター LeedyBox のデータツール用スクリプトとブラウザの組み込み機能(サードパーティのライブラリなし) leedybox.com
ハッシュ生成 MD5 はページ独自のスクリプト、SHA-1・SHA-256・SHA-384・SHA-512・HMAC はブラウザの Web Crypto API leedybox.com
パスワード・UUID生成 Web Crypto API(crypto.getRandomValues、crypto.randomUUID) leedybox.com
Unixタイムスタンプ変換 ブラウザの Intl 日付・タイムゾーン API と BigInt(サードパーティのライブラリなし) leedybox.com
DNI・NIE・NIFチェック, TC Kimlik番号チェック, INN・SNILSチェック, ブラジルCPF・CNPJチェッカー, IBANチェッカー, イタリアのコーディチェ・フィスカーレ計算 LeedyBoxの番号検証モジュール(サードパーティのライブラリなし)、テスト用番号はブラウザの crypto.getRandomValues、IBANの国別形式はSWIFTのIBAN登録簿によるもの(LeedyBoxが配信するデータファイル)、コーディチェ・フィスカーレの地名コードはイタリア内務省ANPRの表によるデータファイル(そのツールで必要なときだけ読み込み) leedybox.com
文字数・単語数カウンター ブラウザの Intl.Segmenter leedybox.com
ケース変換、テキスト比較、Lorem Ipsum 生成 LeedyBox のデータツール用スクリプト(サードパーティのライブラリなし) leedybox.com
漢数字・大字変換 LeedyBoxの金額変換モジュール(外部ライブラリなし)、ブラウザのIntl.NumberFormat・Intl.DisplayNames leedybox.com
全角・半角変換 LeedyBox のテキスト変換モジュール(外部ライブラリなし)、ブラウザのString.prototype.normalize() leedybox.com
ベトナム語の声調記号除去 LeedyBox のテキスト変換モジュール(外部ライブラリなし)、ブラウザのString.prototype.normalize() leedybox.com
スラッグ生成 LeedyBox のテキスト変換モジュール(外部ライブラリなし)、ブラウザのString.prototype.normalize() leedybox.com
韓国人名のローマ字表記 LeedyBox のテキスト変換モジュール(外部ライブラリなし) leedybox.com
キリル文字→ラテン文字 LeedyBox のテキスト変換モジュール(外部ライブラリなし) leedybox.com
簡体字・繁体字 変換 opencc-js 1.4.2(MIT ライセンス)と OpenCC の辞書(Apache License 2.0) leedybox.com
音声の文字起こし Transformers.js 4.3.1(Apache License 2.0)、ONNX Runtime Web(MIT ライセンス)、Whisper の base・small・large-v3-turbo モデル(MIT ライセンス) leedybox.com
和暦西暦変換 LeedyBoxの日付モジュール(外部ライブラリなし)。日付の表示にはブラウザのIntl日付書式を使用 leedybox.com
タイ仏暦・西暦変換 LeedyBoxの日付モジュール(外部ライブラリなし)。日付の表示にはブラウザのIntl日付書式を使用 leedybox.com
旧暦・新暦変換(韓国・中国・ベトナム) LeedyBoxの日付モジュールと、韓国天文研究院・香港天文台のデータによる旧暦の表(外部ライブラリなし)。日付の表示にはブラウザのIntl日付書式を使用 leedybox.com
韓国の満年齢計算 LeedyBoxの日付モジュールと、韓国天文研究院のデータによる旧暦の表(外部ライブラリなし)。日付と単位の表示にはブラウザのIntl書式を使用 leedybox.com
消費税計算 LeedyBoxの消費税モジュール(サードパーティーのライブラリなし)。正確な計算にブラウザーのBigInt、金額と通貨の表示にIntl.NumberFormatを使用。税率表(vat-rates.json、約35 KB)はページを開いたときに読み込み leedybox.com
パーセント計算 LeedyBox計算モジュール(外部ライブラリなし)。数値・通貨・日付はブラウザのIntlで表示 leedybox.com
ローン返済シミュレーション LeedyBox計算モジュール(外部ライブラリなし)。数値・通貨・日付はブラウザのIntlで表示 leedybox.com
複利計算 LeedyBox計算モジュール(外部ライブラリなし)。数値・通貨・日付はブラウザのIntlで表示 leedybox.com
BMI計算 LeedyBox計算モジュール(外部ライブラリなし)。基準表(bmi-standards.json、約7KB)をページを開いたときに読み込み leedybox.com
基礎代謝・消費カロリー計算 LeedyBox計算モジュール(外部ライブラリなし)。計算式(energy-equations.json、約8KB)をページを開いたときに読み込み leedybox.com
年齢計算 LeedyBox計算モジュール(外部ライブラリなし)。数値・通貨・日付はブラウザのIntlで表示 leedybox.com

ツールのページは、スタイルのために Tailwind CSS のスクリプト(バージョン 3.4.17)も leedybox.com から読み込みます。ライブラリのライセンス文は LICENSES.txt にあります。

ローカル処理が大切な理由

端末上で処理すれば、ファイルを変換サーバーへ送って順番待ちをする必要がなく、LeedyBox がファイルのコピーを受け取ることもありません。その一方で、結果はお使いの端末に左右されます。メモリに余裕のあるパソコンは、古いスマートフォンより大きなファイルを扱えます。

ブラウザの制限

処理は端末のリソースに依存するため、性能は空きメモリ、ブラウザの機能、CPU の速度、ファイルの複雑さによって変わります。非常に大きなファイルや複雑なファイルには、より多くのメモリと時間が必要です。タブのメモリが不足するとブラウザがページを停止することがあり、作業を小さなファイルに分けると改善することがよくあります。出力形式によっては、ブラウザがエンコードできるかどうかにも左右されます。

プライバシーとネットワークリクエスト

ローカル処理によってファイルは端末内にとどまりますが、ウェブページ自体は引き続きネットワークを使います。ページは自身の HTML、スタイル、スクリプトと上記のライブラリをすべて leedybox.com から読み込み、Google Analytics と Google AdSense も読み込みます。この 2 つが Cookie を保存するのは、Cookie に同意した場合だけです。サイトをホストしている Cloudflare も、ページの表示速度を計測しています(Cloudflare Web Analytics、Cookie は使いません)。これらのリクエストに、処理するファイルやテキストの内容、生成したパスワード、UUID、ハッシュ、コードが含まれることはありません。

PDF テキスト抽出と画像からテキスト抽出(OCR)は、初めて必要になったときに OCR エンジンと言語データを leedybox.com からダウンロードします。Tesseract.js はダウンロードした言語データをブラウザの IndexedDB ストレージに保存し、再びダウンロードしなくて済むようにします。このデータは、ブラウザでこのサイトのデータを消去すると削除できます。

証明写真作成は、最初の写真を選んだときに MediaPipe ライブラリ、その WebAssembly ランタイム、顔検出モデルを leedybox.com からダウンロードします。転送量は約7MB(展開後は約15MB)で、背景を置き換えるときだけ小さなモデル(0.25MB)を追加でダウンロードします。これらはブラウザの通常のキャッシュにだけ残り、写真はどこにも送信されません。

簡体字・繁体字 変換は、使い始めたときに opencc-js と選んだ変換の辞書を leedybox.com からダウンロードします。繁体字→簡体字は最大約100KB、簡体字→繁体字は約1.1MBです。入力した文章はどこにも送信されません。

音声の文字起こしは、最初の文字起こしを始めたときに Transformers.js、ONNX Runtime の WebAssembly エンジン、選んだ Whisper モデルを leedybox.com からダウンロードします。base は約 90 MB、small は約 250 MB、WebGPU でグラフィックス処理装置を使う large-v3-turbo は約 750 MB です。これらは再びダウンロードしなくて済むようブラウザの Cache Storage に保存され、ツールでサイズを確認して削除できます。モデルを動かす部分はほかのサイトに接続できないよう制限されており、録音はどこにも送信されません。

関連: プライバシーポリシーを読む · Cookieポリシーを読む

よくある質問

ローカル処理なら、データはどこにも送られないのですか?

処理のためにファイルやテキストを LeedyBox にアップロードすることはありません。ただし、ページは通常のウェブリクエストを行います。自身のファイルと必要なライブラリを leedybox.com からダウンロードし、Google Analytics と AdSense へのリクエストを送り(Cookie を保存できるかどうかは同意の選択で決まります)、Cloudflare がページの読み込み時間を計測します。これらのリクエストにファイルやテキストの内容は含まれません。

同じ PDF でも端末によって動作が違うのはなぜですか?

クライアント側の処理は、端末の空きメモリ、ブラウザの描画エンジン、CPU の速度、インストールされているシステムフォントに依存します。ハードウェアやブラウザのバージョンの違いによって処理速度が変わり、まれにページの描画結果が変わることもあります。

オフラインでも使えますか?

確実には使えません。まずページとライブラリをダウンロードする必要があり、PDF テキスト抽出と画像からテキスト抽出(OCR)は、初めて必要になったときに OCR の言語データをダウンロードします。