PDFの文字起こし:文字を取り出す方法
「PDFを文字起こしする」と言われる場面には、性格の違う2つの作業があります。ひとつは、文書の中に文字がすでに入っていて、コピーして取り出せる場面です。もうひとつはPDFがスキャン、つまりページの絵で、文字をまず認識する必要がある場面です。どちらのウェブサービスも文書を見えないサーバーへ送るため、このサイトはその方式を使いません。文字取り出しの処理もOCRもこのサイトにはないので、ここにボタンはありません。以下で説明するのは、自分のパソコンで実際に使える方法です。
先にひとつだけはっきりさせておきます。日本語で「文字起こし」は、録音や動画の内容を文字にすることを指すことが多いものです。このサイトには音声や動画のツールは一切ないため、会議録や動画の内容を求めている場合は以下のどれも該当しません。このページが扱うのは、すでに手元にあるPDFです。
まず、そのPDFは文字なのか絵なのかを見分ける
PDFをブラウザー(ファイルを窓にドラッグするだけ)で開いて、マウスで1行の文字を選んでみてください。
- 文字が強調されてコピーできる — 文字がファイルの中にあります。ビューアーがあれば足りていて、OCRは不要です。
- 何も選ばれず、コピーしても何も得られない — そのページは画像です。たいていスキャンか、文書を撮った写真です。コピーできる文字は、文字自体が存在しないので取り出せません。
文字が入っているのに「何も見えない」ことがあります。文字が線や輪郭で描かれている場合、スキャンを無理に軽く圧縮した場合、特定のリーダーでしか開かないファイルの場合です。開いたページが真っ白なら、ビューアーのページ数も確認してください。1ページの文書が白く出るなら、ファイルが壊れているより、スキャンした紙を裏返したまま取り込んでいることのほうが多くあります。
文字が入っているなら:コピーする
1〜2ページなら、何もインストールせずに済みます。
- Chrome・Edge・Safari・FirefoxでPDFを開きます。
Ctrl+A(macOSはCmd+A)で全体を選ぶか、必要な範囲をドラッグして選びます。Ctrl+Cでコピーし、テキストエディター・Word・Pagesに貼り付けます。書式なしで貼り付けると装飾は落ちて単純な行のテキストになり、段組みは左から右の順に並びます。縦書きの日本語ではこの並び順では読めません。
書類全体なら:Popplerのpdftotext。無料で、自分のパソコンだけで動き、文書は送信されません。
pdftotext -layout report.pdf report.txt— 文字をファイルに書き出します。-layoutは元の段組みの位置を保つので、表や帳票に向きます。pdftotext -f 3 -l 6 report.pdf part.txt— 3ページから6ページまでだけを取り出します。-layoutではなく-rawにすると、空間の再現をやめて読み順で出力します。
注意点がひとつあります。PDFは文字そのものではなく字形の番号で文字を保持しているため、取り出すにはフォントの文字対応表が要ります。スキャナーで作成されたPDFや、古いバージョンのOfficeで作成した出力では、この対応表が抜けていて、文字が空になるか、無意味な並びになることがあります。
スキャンの場合:OCRが要る
OCR(光学文字認識)は文字の絵を見て、どの文字かを当てる作業です。スキャンから文字を取り出すための唯一の方法で、ブラウザーだけでは無料ではできません。専用のプログラムを使います。
- Tesseract(無料・オープンソース)は画像を1枚ずつ読みます。
tesseract page.png out -l jpnでout.txtができます。日本語を使うには言語データが必要で、それを-l jpnで選びます。 - OCRmyPDF(無料。TesseractとGhostscriptが必要)は書類全体を処理し、認識した文字をページ画像の上に目に見えない層として重ねます。
ocrmypdf --language jpn scan.pdf searchable.pdfと指定します。見た目は変わらず、選択と検索ができるようになります。多くの人が必要としているのはこちらです。
結果は必ず読んでください。OCRは文字の形から推測するので、取り出したものは下書きです。確認せずに保存したり転送したりするのは避けてください。誤りが多く出る場面:
- 縦書きの日本語。最も難しく、日本語の文書ではこれが普通です。
- ふりがな(ルビ)。小さいため、別の文字として読まれたり、脱落したりします。
- 似ている漢字とひらがな。数字が文字になったり、記号が別の記号になったりする取り違えです。
- 傾きのある、低コントラストの、細かすぎる文字。撮影画像に写った折り目や影を横切っている部分。
- 罫線と表の枠。余分な文字として混ざることがあります。
処理がどこで起こるかを考える
どこで変換されるかは、考える価値があります。ウェブサービスやスマートフォンの機能は、文書かページ画像をサーバーに送って処理します。
自分のビューアー、pdftotext、Tesseract、OCRmyPDF は手元で動くので、ファイルは端末の外に出ません。契約書や診療記録のように他者の個人情報が入っている書類では、その違いがそのまま利点になります。
OCRで文字を認識しやすくする準備
ここなら、このサイトのツールが役に立ちます。いずれも自分の端末の中で動くからです。
- 300 DPIでページ画像を準備する。文字が小さいとOCRは失敗しやすいためです。PDFをJPGに変換で、Ghostscript・Poppler・ImageMagickなど無料で動く変換ソフトを説明しています。
- 撮影情報を落とす。EXIF・GPSの削除で、位置情報やカメラの情報を取り除いてから扱えます。
- 文字を大きくする。正確な画素数にリサイズで、解像度の低かったスキャン画像の文字を拡大できます。
- 必要な形式に変える。形式変換で、ページ画像をPNGなどに変換します。
- 先にファイルを絞る。PDFのページ抽出で読む価値のあるページだけを残し、PDF圧縮で重いスキャンをメールに添付できる大きさにします。
文字を取り出したあと
元のページと突き合わせて確認し、表計算・文書・翻訳依頼など、行き先を決めればよいです。
逆方向について、このサイトでできないことを明記しておきます。文字からPDFを作る機能はありません。JPGからPDFは画像からPDFを作るもので、文字だけのページには向いていません。文章のページには、手元の文章ソフトかブラウザーの印刷機能を使うのが素直です。
よくある質問
PDFに文字が入っているのか、スキャンなのかを見分けるには。
開いて1行の文字を選んでみます。強調されてコピーできるなら、文字はファイルの中にあります。OCRは不要です。何も選ばれずコピーしても何も得られないなら、そのページは画像です。文字はOCRで認識するまで取り出せません。
抽出した文字が空になる、意味のない並びになるのはなぜですか。
PDFは字形の番号で文字を保持し、取り出すにはフォントの文字対応表が要るためです。スキャナーで作成されたPDFや古いバージョンのOfficeの出力では、この対応表が抜けていることがあります。
PDFの文字起こしは、送信せずにできますか。
ソフトを自分で動かせばできます。コピーはブラウザー、書類全体はPopplerのpdftotext、スキャンならTesseractかOCRmyPDFが該当します。いずれも手元で動きます。ウェブサービスやスマートフォンの機能では、通常ファイルやページ画像をサーバーへ送ります。
OCRの精度はどのくらいで、そのまま使ってもよいですか。
確認が必要な下書きとして扱ってください。文字の形からの推測なので、似ている文字、細かな文字、ふりがな、縦書きの日本語でミスが起きます。保存したり転送する前に、元のページと照合してください。