MKV ファイルから字幕をテキスト形式で抽出する

以前の記事で、DVD や Blu-ray の内容を MKV ファイルに変換する方法を紹介した。

今回は、この MKV ファイルの中に字幕 (Subtitle) が含まれているという前提で、その字幕データを抽出し、テキストに起こす方法を紹介する。

MKVToolNix・MKVExtract:字幕データを抽出する

まずは MKV ファイルの中から字幕データのみをファイルとして抽出する。MKVToolNix というツールパックに、MKVExtract の GUI ツールを混ぜると扱いやすくなるので、そのやり方を紹介する。ffmpeg でも出来るっぽいのだが、自分は上手くいかなかったのでコチラのやり方のみ紹介する。

インストール手順は上の記事のとおり。まずは以下2つのファイルをダウンロードする。

両方を解凍し同じフォルダに配置したら、gMKVExtractGUI.exe を開く。

字幕ファイルを抽出したい MKV ファイルを選択したら、抽出したい字幕トラックにチェックを入れ、「Extract」ボタンを押す。すると .sup.sub といったファイルが抽出できる。

Subtitle Edit:字幕ファイルをテキスト化する

抽出した .sup.sub といったファイルは、簡単にいうと字幕テロップ部分のみの動画ファイルというか、アニメーション GIF ファイルみたいな形で、バイナリ形式で保管されている。元々字幕データとしてテキストデータは存在せず、全てはバイナリデータなのである。

そこで、この字幕ファイルをテキスト化するために、OCR を活用することになる。以下の Subtitle Edit というツールは、OCR による文字列認識、.srt などのテキスト形式への変換をやってくれるので、コレを使う。

.sup.sub タイトルを読み込むと「Import/OCR」ウィンドウが開く。「OCR method」欄で「Tesseract 5.00」などを選ぶと、字幕データの言語を選択できるようになる。ココで「Japanese」を選択し、必要な辞書データをダウンロードしておく。

右側の「OCR auto correction / spell checking」欄は、スペルチェックや独自の単語の辞書登録などをどうするか設定できる。自動修正などはお好みで。

「Start OCR」ボタンを押下すると、OCR 処理が始まる。日本語字幕の場合、1文字ごとに半角スペースで区切られてしまうようなのだが、後で直せばいいやと思い、とりあえずそのまま OCR 処理させた。OCR の精度はそこそこで、7・8割ぐらいは正しい文字で認識できている感じ。縦書き表示の字幕はボロボロ。

ひとまず OCR 処理を終えたら、.srt.txt など、好きなテキスト形式で保存できる。コレでテキストデータ化できたので、後は目視修正したり、なんなりと。

以上

.srt という字幕テキストファイルは見たことがあったが、MKV ファイルを元に組み立てようとすると OCR が必要になるとは思っていなかった。なかなか面倒臭く、日本語字幕の OCR 精度はそこそこだったので、大変じゃ~。