HN 日本語サマリー

← 一覧へ戻る
Web開発

OCR It – コピーできないドキュメントからLLMのためにテキストを抽出する

OCR It – pull text out of un-copyable documents for your LLM (github.com)

23 pointsby thiagolima6 コメント

要約

OCR Itは、コピーできないドキュメントからテキストを抽出するためのChrome拡張機能です。ユーザーが定義した領域を自動的にOCR処理し、ページめくり機能と連携して書籍やPDFなどのドキュメント全体をテキスト化します。ローカルで動作し、プライバシーに配慮されています。

全文翻訳

OCR It一度領域を指定すれば、あとはホットキーを押すだけで全ページからテキストを取得できます。テキストを選択できないビューアに閉じ込められたページ分割されたドキュメント、例えばスキャンされた書籍、スライドデッキ、PDFなどからテキストを読み取るためのChrome拡張機能です。キャプチャ領域を一度ドラッグして指定します。その後は、ホットキーを押すたびにその正確な矩形がスクリーンショットされ、OCR処理され、実行中のトランスクリプトに追加されます。あるいは、全自動で処理を任せることもできます。⌥⇧Aを押すと、キャプチャ、ページめくり、そしてドキュメントの終わりまで繰り返す自動実行が開始されます。その後、結果を便利な場所、例えばLLMに貼り付けます。コピーできない数百ページが、ClaudeやChatGPTに要約、検索、質問するために渡せるテキストファイルになるのは明白です。OCRはバンドルされたTesseractビルドを使用してローカルで実行されます。APIキー不要、ネットワーク不要、画像はあなたのマシンから離れません。この拡張機能は一切外部へのリクエストを行いません。インストールこのリポジトリをダウンロードするか、git cloneしてくださいchrome://extensionsを開き、デベロッパーモードをオンにしてくださいフォルダーを選択してLoad unpacked拡張機能をピン留めしてください。ツールバーのアイコンがページカウンターを兼ねます必要なものはすべてコミットされています。ビルドステップはありません。npm installはテストの実行またはTesseractの再バンドルにのみ使用されます。次にchrome://extensions/shortcutsを確認し、ホットキーが設定されていることを確認してください。他のものが既に占有している場合、Chromeはサイレントにそれらを空白にします。インストール時にサイトへのアクセス権限を要求しません。シングルキャプチャはactiveTabに乗っており、ホットキーを押すかポップアップを開くとChromeがそれを渡します。2つの機能は永続的な権限を必要とします。ページロードを超えて持続する自動実行と、クロスオリジンiframe内のページめくりです。これらの機能が必要な場合は、ポップアップが適切なタイミングで許可ボタンを提供します。⌥⇧S領域を一度キャプチャ⌥⇧A自動実行を開始/停止⌥⇧R領域を描画または再描画使用方法1. 領域の指定⌥⇧Rを押してから、テキストの上にボックスをドラッグします。保存する前に、ドラッグして移動したり、ハンドルを引っ張ったり、矢印キー(⇧を押しながらリサイズ)で1ピクセルずつ微調整したりできます。Enterキーで確定します。テキストのマージン内に少しだけ描画してください。矩形内のすべてが読み取られます。ページ番号やヘッダーも含まれます。2. キャプチャページごとに⌥⇧Sを一度押します。スクリーンショットは即座に撮影され、OCRはバックグラウンドで実行されるため、ページ間で待つ必要はありません。キャプチャはキューイングされ、バッジはまだ読み取り中のものをカウントします。3. または実行を任せるページめくりコントロール(下記参照)を設定し、⌥⇧Aですべてを任せます。キャプチャ、ページめくり、キャプチャ、ページめくりをドキュメントの終わりまで繰り返します。ページ上のEscキーで停止します。4. エクスポート各ページは、切り取られたものの正確なサムネイルとともにリスト表示されるため、領域がずれていても80ページ後ではなく一目でわかります。テキストはインプレースで編集可能で、読み取りエラーがあった場合は単独で再実行できます。Copy allとDownload .txtは、--- page N ---という区切り文字とともにページを順番に出力します。DUPLICATEとマークされたページは、前のページとテキストが同一であることを示しています。これは、ドキュメントが実際にはページめくりされなかった場合にほぼ常に発生します。自動ページめくりキャプチャ後にページを自動的にめくるように設定してから、次の操作を行います。コントロールをクリックする – Pick controlをクリックし、ビューアの次のページボタンをクリックします。保存されるのはCSSセレクタではなく、ポイントです。キーを押す – キャプチャ領域の中央を所有するフレームにキーイベント(デフォルトはArrowRight)をディスパッチします。これにより、ホストページではなくリーダーがイベントを受け取ります。Testは即座に前進をトリガーし、キャプチャせずに何が起こったかを報告します。長時間の実行を開始する前に使用する価値があります。なぜセレクタではなくポイントなのか保存されたポイントは、CSSセレクタを無効にするDOM再レンダリングを生き残ります。また、セレクタが到達できない2つの場所に到達できます。クロスオリジンiframe。ほとんどの埋め込みリーダーはiframeであり、トップフレームで表現できるものは何もその内部の要素をアドレスできません。Shadow DOM。document.querySelectorはシャドウルートの中を見ることができません。前進時に、ポイントはすべてのフレームに提供され、実際にそれを所有するフレームがアクションを実行します。フレームは、同じオリジンの祖先をたどって、トップレベルビューポート内のどこにあるかを把握します。オリジン境界を越えると、親はpostMessageによってオフセットを渡します。(window.screenXは役に立ちません。iframe内ではブラウザウィンドウを報告しますが、フレーム自体は報告しません。)所有フレームは、シャドウルートを介してポイントを解決し、最も近い実際のコントロールまでたどり着き、pointerdown → mousedown → pointerup → mouseup → clickシーケンス全体をディスパッチします。これにより、ポインターダウンでページめくりするビューアは、クリックをリッスンするビューアと同様に動作します。ページめくりがうまくいかない場合各試行は、ポップアップとオンページトーストに表示される判定を記録します。Verdict意味まだ次のページコントロールが選択されていませんAuto-advanceはオンですが、何も選択されていません埋め込みビューアがそのポイントを所有していますChromeのPDFビューアやプラグインなど。拡張機能では到達できません。そのポイントはそのページ背景にありますコントロールが移動しました。再度選択してくださいネストされたフレームがそのポイントを所有しています注入できなかったフレームターゲットが画面上の固定ポイントであるため、実行中にウィンドウをリサイズしたり、ズームを変更したりすると、キャプチャ領域が壊れるのと同じように壊れます。ハンズオフ実行⌥⇧A、またはStart auto-runは、キャプチャ、ページめくり、繰り返しを自分で行います。各サイクルは、ページめくりを行う前に、そのページのOCR結果を待ちます。これは実際には何もコストがかかりません(OCRはページめくりよりも高速です)が、 unattended loopに必要な唯一のもの、つまり信頼性の高い終了検出を提供します。タイマーでスクリーンショットをトリガーするだけの実行は、最後のページを通り過ぎて、コピーだらけのトランスクリプトを生成します。ページ上のEscキー、ホットキー、またはポップアップで停止します。また、次の場合に自動的に停止します。条件デフォルトテキストが変化しなくなる(2ページ連続で同一) – 終了に達しましたページがすぐにめくれない(OCRの失敗または停止理由を引用)ページキャップ(300ページ)に達したタブが閉じられる、またはChromeが再起動する終了した理由はポップアップに報告されるため、放置した実行が単に停止して謎になることはありません。実行は、1ページで停止するのではなく、機能する次のページコントロールなしでは開始を拒否します。PDFChromeの組み込みPDFビューアは機能します。テキストは直接抽出されます。ページ領域(サムネイルサイドバーではない)の上に領域を描画し、独自の↓ / PageDownでページをめくります。自動前進はPDFビューア内では機能しません。どちらのモードでも、ビューアはプラグインであり、拡張機能は注入できないため、クリックは<embed>に着弾し、そのページめくりはネイティブスクリプ​​トであり、合成キーイベントでは駆動できません。すでにページごとにホットキーを押しているため、独自のページダウンキーを押すことは何もコストがかかりません。ディスク上のPDF(file:///…)の場合、chrome://extensions → OCR Itの詳細 → Allow access to file URLsを有効にしてください。Chromeは、これを行うまで、すべての拡張機能からfile://を抑制します。設定設定機能言語英語、ポルトガル語、スペイン語が付属しています。追加言語については下記参照レイアウトTesseractのページセグメンテーション。Single blockは1段組の本文テキストに適しています。Autoは混合レイアウトを処理しますSharpenクロップをOCR前にシャープにします。クロップを約2倍に拡大し、引き伸ばされたグレイスケールランプに平坦化します。非Retinaディスプレイで大きく役立ちます。オンのままにしてくださいFlag pages identical to the previous one前のページと同一のページをフラグ付けします。DUPLICATEとしてマークし、実行中は終了させます。Auto-runページ間のポーズ、終了までの繰り返し回数、ハードページキャップ言語の追加拡張機能には3つの言語(英語、ポルトガル語、スペイン語)が付属しています。Tesseractの他の約100言語を追加できますが、実行時に何もフェッチされないため、モデルを拡張機能にバンドルする必要があります。npm install# ツール用(一度だけ)npm run vendor -- fra deu jpn # Tesseractの言語コード(任意)これにより、各<code>.traineddata.gz</code>がvendor/lang/にプルされます。次に、src/shared.jsのLANGUAGESにコードを追加して、ポップアップのドロップダウンに表示されるようにします。export const LANGUAGES = [ { code: 'eng', label: 'English' }, { code: 'por', label: 'Portuguese' }, { code: 'spa', label: 'Spanish' }, { code: 'fra', label: 'French' }, // 追加 ];chrome://extensionsで拡張機能をリロードすると、新しいエントリが表示されます。コードはTesseractが使用する3文字のコードです。fra French、deu German、ita Italian、nld Dutch、rus Russian、jpn Japanese、chi_sim simplified Chinese、ara Arabic。完全なリストはliv