クリック画像の実寸表示

段ボール箱を机にした猫 ファイルメーカー(filemaker)のちらしの裏のメモ書き

TOP  >  FileMakerでOCR機能を利用する
作成日:2025年06月02日

FileMakerでOCR機能を利用する

イメージイラスト
にゃん太

どうも、にゃん太です

画像データからテキストを取得したいという場合ってありますよね

以前は読み取り精度が低く使いにくいものでしたが、最近では精度も上がって非常に有用な機能になっています

FileMakerにも標準機能でOCRが使用できます

今回のメモでは、OCR機能の使い方について書いていきます


FileMakerでOCR機能を使用する

FileMakerには、標準でOCR機能が搭載されています
GetLiveText関数で、バージョンが19.5.1から使用できるようになった関数です
詳しくはClaris社のサイトをご覧ください

GetLiveText (オブジェクト ; 言語)

上記の様な構文となっており、画像と言語を引数として画像内にあるテキストが取得できます

動作テスト

では、実際に試してみましょう
引き出しの奥底に古いレシートがあったので、これで試してみます

GetLive関数を使用した結果
誤字なく問題なく認識できました
細かい点を言えば日付が分割されていますが、ほぼ問題ないと言えるでしょう
ちなみに、画像を回転しても問題なく読み取りする様です

GetLive関数を使用した結果(回転:45度)
GetLive関数を使用した結果(回転:180度)

動作テスト(2)

先ほどのテストは横書きだけでした
縦書きの場合にどうなるのか気になるので、こちらも試してみます
手元に丁度良い縦書きがありませんので、デザインAC様にある年賀状のテンプレートを使用してみます

GetLive関数を使用した結果(縦書き)
横書き部分は白抜きでも問題なく認識していますが、縦書き部分は一切認識していません!
これはちょっと予想外です
別のサンプルとして政府のサイトの画像を使ってみます

GetLive関数を使用した結果(縦書き)
今度は一部は読み取っていますが、内閣情報官の「官」がなくなっていたり、次長の文字が取得できていません
条件にもよって変わるかも知れませんが、縦書きは諦めた方がよさそうです

動作テスト(3)

次は英文を試してみます
やはり手元に良いサンプルがないので、デザインAC様にあるテンプレートを使用してみます

GetLive関数を使用した結果(英文)
言語設定が「ja-JP」のままでも問題なく認識してしまいました
逆に、「en-US」にすると、中に含まれていた日本語が認識できなくなりました

GetLive関数を使用した結果(英文)
英文主体の場合は言語設定を変えた方が良いとは思いますが、基本的には日本語設定のままで使えそうです

動作テスト(4)

先ほどはGetLiveText関数を使用しましたが、他にGetLiveTextAsJSON関数があります
FileMaker2024で追加された機能で、OCRで取得したテキストがJSON形式となります

GetLiveTextAsJSON関数を使用した結果
テキストの取得状況は同じですが、テキストの座標情報も一緒に取得できています
座標から判断して必要な情報のみ取得する、などの処理が可能になりますね

PDFからテキストを取得する

ここまで、画像形式のデータからテキストを取得する処理を行ってきました
しかし、取得元となるデータは画像形式だけではありません
PDF形式のデータから取得したい場合もあります
色々なアプリケーションがPDFからテキストを取得する機能を持っていますので、そちらを使用すれば簡単ではあります
しかし、最終的にFileMakerにテキストを処理させる場合は別アプリケーションを介在させるのも面倒です
頻繁に実行する場合であれば、FileMakerだけで完結させられるに越したことはありません
その方法を考えてみましょう

PDFファイルを画像化する

FileMakerで画像からテキストを取得する機能があることは既に分かっています
ですので、PDFデータを画像データに変換できれば問題は解決です
その方法を調べてみると、「PDF.js」というライブラリを使用すればJavascriptで実現できそうです
処理手順を考えてみましょう
こんな手順でいけそうです
ということで作成したのが次のコードです

Javascript

<html> <head> <script src='https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.6.347/pdf.min.js'></script> <style> div { position: absolute; top: 0; left: 0; width: 100%; line-height: 100svh; background: #FFF; color: #666; font-size: 160px; font-family: impact; text-align: center; z-index: 10; } </style> </head> <body> <div>WAIT</div> <canvas id='canvas'></canvas> </body> <script> var pdfData = atob('__obj__'); var { pdfjsLib } = globalThis; pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.6.347/pdf.worker.min.js'; var loadingTask = pdfjsLib.getDocument({data: pdfData}); loadingTask.promise.then(function(pdf) { var pageNumber = 1; pdf.getPage(pageNumber).then(function(page) { console.log('Page loaded'); var scale = 1.5; var viewport = page.getViewport({scale: scale}); var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; var renderContext = { canvasContext: context, viewport: viewport }; var renderTask = page.render(renderContext); renderTask.promise.then(function () { console.log('imageSave'); var image = canvas.toDataURL('image/jpeg'); FileMaker.PerformScript('saveImage', image, 0); }); }); }); </script> </html>

スクリプト

# ################################################## # PDFを画像に変換 # ################################################## 新規ウインドウ [スタイル: カード; 使用するレイアウト:「WAIT」] 変数を設定 [$file; 値: Base64EncodeRFC ( 4648; OCR::オブジェクト )] 変数を設定 [$$html; 値: "data:text/html," & Substitute ( OCR::html; "__obj__"; $file )] スクリプト一時停止/続行 [間隔(秒): .1]

スクリプト

# ################################################## # 画像をフィールドに保存 # ################################################## 変数を設定 [$image; 値: Get ( スクリプト引数 )] フィールド設定 [OCR::画像; Base64Decode ( Middle ( $image; 23; Length ( $image ) - 22 ); "image.jpg" )] ウインドウを閉じる [現在のウインドウ] 変数を設定 [$text; 値: GetLiveTextAsJSON ( OCR::画像; "ja-JP" )] フィールド設定 [OCR::テキスト; $text]

以上です
実際に動かしてみましょう
サンプルファイルは国勢調査のPDFファイルを使ってみます


画像化するのに少し時間がかかりますが、無事テキストが取得できました!
このサンプルでは1ページだけしか処理していませんが、総ページ数を取得して全ページを変換する事も可能です

サンプルファイル

以上で、FileMakerでのOCR機能の説明は終了です
Windowsで実行できない点は残念ですが、まずまず実用性はありそうです
今回、テストで使用したファイルを公開していますので、ご興味がありましたらこちらからダウンロードしてご確認ください

メモ書き終了の案内イラスト

以上で今日のメモ書きは終了です

内容はいかがでしたか?

もしご意見やご要望、誤りの指摘などありましたら、下記フォームよりお気軽にご連絡ください

ご連絡フォーム