初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-03-04 23:48:56

sakurou
Member

ファイル内テキストの検索と代入

初投稿なので無作法なところがあればご教示いただけると幸いです!

題名の通り質問させてくださいm(_ _)m

pdfファイルをオブジェクトとして入力する時に、

pdfファイル内にあるテキストを読み込んで、フィールドに代入することはできるのでしょうか?

アクロバットでOCRをかけたpdfファイルを作成して、
新規レコードを作成してオブジェクトフィールドに入力しています。

OCR精度があまり高くないのでpdfファイル内テキストを、全て任意の変数に代入して、
その中をテキスト検索かけて日時情報を抜き出し、
ファイルメーカー内の任意のテーブルの日時フィールドに代入したいです。

ひとまず、pdfファイル内のテキストを取得できるような関数があればと思い探しているのですが見当たらず行き詰まりました。

そのような関数があるのかどうかもわからない状態です。

ファイルメーカープロ15を使用しています。

最後まで読んで頂きありがとうございます。

ご存知の方がいらっしゃいましたら宜しくお願い致しますm(_ _)m

Offline

#2 2017-03-05 10:04:34

wader
Member

Re: ファイル内テキストの検索と代入

「OCRをかけた」というのは元々テキスト情報のないPDFってことですよね?(印刷物のスキャンなど)
「OCR精度があまり高くない」なら、それを取り出しても意味がないと思いますけど。。。
360worksのプラグインなどを使えば取り出すことはできます。

もし元々がテキスト文書をPDF化したとしても、PDF内のテキストは文脈とは無関係に構築される場合もある(フォントが違えば別のオブジェクトになるとか)ので、役に立つかどうか?

情報がPDF内でテキストになってるなら、目的の場所を手作業でPDF上でコピーすれば簡単ですけど。

Offline

#3 2017-03-09 00:32:00

sakurou
Member

Re: ファイル内テキストの検索と代入

waderさん→

scansnapでスキャンしたものをレコードに自動で入力するところまではできたのですが、

その際にocrをかけており、概ね日付はきちんとテキストに変換されているようなので、手作業ではなく、日付文字列を検索して、フィールドに自動で入力できるように考えておりました。(レシートなので、枚数が大量にあり、日付だけでも自動ではいれば作業が早いな〜と考えてのことです。)

360worksを調べましたが、scribe2などめちゃくちゃ便利ですね!教えてくださってありがとうございます!

ただ、、使用してみたいのですが、上記状況に対応したいだけなので、非常に高価だなと感じています。

pdfからテキストを抜き出すだけなのですが、製品になっているということは、素人で実現するのは難しそうですね、、

プラグインというヒントをいただけたので海外サイトを含めて検索しましたが、pdfからテキストデータをextractするプラグインはどれもいいお値段しますね、、

どなたか無料のものをご存知であればご教示いただければ助かります!

宜しくお願い致しますm(_ _)m

Offline

#4 2017-03-09 12:09:56

honda
Member

Re: ファイル内テキストの検索と代入

PDFファイルのテキストを取得するような関数が、標準で存在する可能性は極めて低いです。
また、PDFのようなバイナリフォーマットは、FileMakerの関数で対応できる可能性も非常に低いです。

こういう場合、waderさんが紹介しているようにプラグインを探すか、
Webビューア + JavaScriptでの無茶か(今回のケースには不適)、
なんらかの形で連携可能な別のアプリケーションを探すべきです。

-

ScanSnapでOCRで生成されたテキストに対応しているかは分かりませんが、
たとえばWindows環境なら、次のようなフリーのユーティリティがあります。

■ xdoc2txt
http://ebstudio.info/home/xdoc2txt.html

Macなら、Unix系の有名なライブラリ Poppler に含まれる、
pdftotext コマンドで対応できる可能性があります。

■ PDFファイルをコマンド一発でテキストファイル化する - 一馬力のメモ帳
http://ichibariki.hatenablog.com/entry/ … /16/153230

連動を前提に、いずれもコマンドラインで使うツールです。
これらを、FileMakerを起点とし、連動させることで、目的に近付く可能性があります。

たとえば、まずOCRを終えたPDFをFileMakerにインポートし、
次にそれらPDFからテキストをファイルに抽出するコマンドをFileMakerで生成。
生成したテキストファイルを再度FileMakerに、PDFとマージしながらインポート。

こういった手順なら、最小限の手作業で、OCRしたテキストをFileMakerに取得できるかも知れません。
上に挙げたツールがOCRテキストに対応しているかや、想定する連動に応えられる仕様かは分かりませんが、
目的自体は需要の多いものなので、探せば適したツールも見つかるんではないでしょうか。

-

目当てのテキストがFileMakerに取得できたとして、

> 概ね日付はきちんとテキストに変換されているようなので、手作業ではなく、日付文字列を検索して、フィールドに自動で入力できるように考えておりました。

この処理は、FileMakerが苦手としているものの一つです。
任意の文字列から、任意のパターンで文字列を検出する機能が、FileMakerでは貧弱です。
一般的なプログラミングであれば、正規表現や構文解析で実現しますが、
FileMakerにはどちらも標準で用意されていません。
またFileMakerのスクリプトや計算式も、それらを実現するのに向いていません。

今回の目的なら、構文解析器より正規表現の方が適当だと思いますが、
正規表現であればプラグインが幾つかあります。
Windowsなら、この掲示板のユーザーでもある方が開発している以下のものが無難です。

■ 正規表現 - MailMakerPopPlus FileMaker Mail Plug-in
http://manual-mailmakerpop.joy-h.com/ma … expression

あるいは、PDFからのテキスト抽出同様、外部のアプリケーションをコマンドで利用し、
たとえばそれをファイルの先頭に書き込んでおく、などといった対応も考えられます。

Offline

#5 2017-03-09 14:29:17

qb_dp
Member

Re: ファイル内テキストの検索と代入

試したことはないのですが、以下のような事が出来るようです。日本語は、どうなんでしょうね?
「OCR using Javascript+@MBSPlugins」って書いてあるので、hondaさんの言っている「Webビューア + JavaScriptでの無茶か」なのかも!?

https://twitter.com/pudgyplatypus/statu … 1051020289

Offline

#6 2017-03-09 15:26:23

honda
Member

Re: ファイル内テキストの検索と代入

qb_dp wrote:

試したことはないのですが、以下のような事が出来るようです。日本語は、どうなんでしょうね?
「OCR using Javascript+@MBSPlugins」って書いてあるので、hondaさんの言っている「Webビューア + JavaScriptでの無茶か」なのかも!?

https://twitter.com/pudgyplatypus/statu … 1051020289

面白い。ただこれは、プラグイン併用なんでちょと違うようです。
JSどこで使ってるかがはっきりしませんが、OCRサービスなりの制御でしょうか。

「Webビューア + JavaScriptでの無茶」は、JSでバイナリハックして…みたいなイメージです。
base64で渡したWebビューア上でJSで色調補正したり、
docxやxlsxのコンテナ生成してみたりぐらいなら、既存のライブラリ活用できるんですが、
PDFまるごと解析してとなると、無茶かなと思います。
でも、pdf.jsのパーサだけ使うとかなら可能性あるかも。

Offline

#7 2017-03-09 19:33:56

sakurou
Member

Re: ファイル内テキストの検索と代入

hondaさん→

詳細な回答ありがとうございます!ファイルメーカーの理解が深まりました!

正規表現は標準であるだろうとタカをくくっていました、、無いのですね。めちゃ参考になりました!

自分の環境はMacで、シェルが少し使えるくらいの日曜プログラマーでして、基本独学なので理解が遅い部分(と多分一般的な常識とずれてる部分)が多いですが、とても丁寧に回答いただけたのでリンク先を見ながらすこしずつ自分が使えそうなものを拾っていってます。

すごく愚問で面倒臭い質問だとは思うのですが、、、
ローカル環境でのみの使用を考えた場合、皆さんはどのように他のアプリケーションへのデータ受け渡し(と、再度FMへの入力)を行うのでしょうか?(言語や環境など。)

僕が理解できるのは、rubyがメインです。rubyだとFM用のRfmというライブラリが使いやすそうで、ひとまずこれを使ってみようかと。
pdfもパーサがあるので、これを元に理解を深めようと思ったのですが、FMとおすすめの言語の組み合わせなどあれば参考にしたいです!

今回の質問はFM内の機能での完結ができるのかと思っての質問だったのですが、皆さんの回答を拝見しているとFMはFMの仕事をさせてそれ以外は自分が使い慣れてるものを使われて処理しているのかな〜と感じたので、、

rubyとかよりもコマンドラインツールで実現できるものはコマンドラインツールで処理という方が良いのでしょうか?

別のスレッド建てた方が良いかと思ったのですが、pdfやocr処理など外部に処理系を預ける場合ということで引き続き投稿いたしました!

宜しくお願い致しますm(_ _)m

Offline

#8 2017-03-09 19:37:12

sakurou
Member

Re: ファイル内テキストの検索と代入

qb_dpさん→

情報ありがとうございます!動画のようなこと実現できるとめちゃ便利そうです!

しかしどのように実現できるのか見当もつかないです、、m(_ _)m

でもFMでの実現できるものとして参考になりました!FM面白いですね!自分の仕事の業務が楽になればと思い日々勉強しております!

ここは皆さん親切にお答えいただけるのでとても助かります!ありがとうございます!

Offline

#9 2017-03-10 09:31:06

honda
Member

Re: ファイル内テキストの検索と代入

honda wrote:
qb_dp wrote:

試したことはないのですが、以下のような事が出来るようです。日本語は、どうなんでしょうね?
「OCR using Javascript+@MBSPlugins」って書いてあるので、hondaさんの言っている「Webビューア + JavaScriptでの無茶か」なのかも!?

https://twitter.com/pudgyplatypus/statu … 1051020289

面白い。ただこれは、プラグイン併用なんでちょと違うようです。
JSどこで使ってるかがはっきりしませんが、OCRサービスなりの制御でしょうか。

これ、訂正というか保留で。
英語だと特に、JSのみでそれなりなレベルのOCR出てきてました。

■ naptha/tesseract.js: Pure Javascript OCR for 62 Languages
https://github.com/naptha/tesseract.js

■ antimatter15/ocrad.js: OCR in Javascript via Emscripten
https://github.com/antimatter15/ocrad.js

OCRなので手書きしたような入力には当然弱いですが、
標準的なフォントのグリフなら、なかなかです。

上のTweetのデモも、こういったライブラリ利用しているのかも知れません。
Tesseract.jsなんかは対応言語も豊富で、日本語も多少いけそう。
漢字考えると日本語全般は恐らく厳しいですが、数字だけの認識とかなら十分実用レベルです。

Offline

#10 2017-03-10 10:06:27

honda
Member

Re: ファイル内テキストの検索と代入

sakurou wrote:

自分の環境はMacで、シェルが少し使えるくらいの日曜プログラマーでして、

sakurou wrote:

僕が理解できるのは、rubyがメインです。rubyだとFM用のRfmというライブラリが使いやすそうで、ひとまずこれを使ってみようかと。
pdfもパーサがあるので、これを元に理解を深めようと思ったのですが、FMとおすすめの言語の組み合わせなどあれば参考にしたいです!

こういう前提のある方なら、話は大分違います。

-

FileMakerは汎用のシステム構築用の環境ではなく、
クセの強いRDBMS風のDBエンジンに、GUIとスクリプティングが付属した、
用途の絞られたフレームワークだと思った方が良いです。
Accessとかと同じですが、更に閉じたフレームワークです。

たとえばAccessでは、WindowsとかVBとか他のOfficeプロダクトだとか、
Access外の知識や仕組みが多分に活用されますが、
FileMakerは元々ホビーユースから始まったためか、FileMakerで完結、
あるいは、MacでAppleScriptで連携程度の外部連携がある程度です。

ユーザーも、システム制作全般というより、FileMakerしか分からないという方も多く、
外部と連携するような要望も上がってきにくいのかも知れません。
昔に比べれば少し増えたと思いますが、この質問に回答しているのは少数派です。

なので、他の環境に比べると、外部連携周りが恐ろしく貧弱というか、
残念な仕様と制約が色々あります。

-

ローカルでFileMakerが他のアプリケーションやOSとやり取りを行う方法は、
ざっと次のようなものがあります。

1.ファイルのインポート・エクスポート
2.AppleScriptを実行 (Macのみ)
3.DDEコマンド送信(Winのみ)
4.Eventを送信
5.fmpプロトコル
6.Webビューア
7.URLから挿入
8.SQLを実行
9.プラグイン

どれもが、一長一短あり、状況や用途に応じて使い分けが必要です。

今回の用途なら、PDFから取り出したテキストという、
不定長である程度大きい可能性もあるデータなので、
4と1の組み合わせが良いだろう、というのが先に挙げた提案です。

まず、1のインポートで、対象のPDFをFileMakerに取得する。
次に、4のイベント送信でPDFからテキストをファイルに書き出す。
最後、もう一度1のインポートでテキストファイルを取り込む。

ご自分でシェルが使える方なら、わざわざイベント送信せず、
OCRの終わったPDFに、テキスト書き出す処理を先行してしまえば、
1回のインポートのみで済むかもしれません。

自前でrubyのスクリプトを書くのか、既存のプロダクトを使うのかは、
既存プロダクトでどの程度目的が達成できるか次第です。
勉強用なら

-

rubyの感覚でFileMakerと馴染みにくいとしたら、計算式もそうかも知れません。
FileMakerの計算式は、基本的に副作用の無い関数型言語で、
Excelのセルごとの計算式のようなものです。

他に、手軽だけれどほぼカスタマイズできないGUIも、苦しむかも知れません。

Last edited by honda (2017-03-10 10:06:52)

Offline

#11 2017-03-11 02:42:49

sakurou
Member

Re: ファイル内テキストの検索と代入

hondaさん→

FileMakerって面白いですね!

長所はまだまだ見えてないところがたくさんありますが、、短所をわかりやすく説明していただいて何でつまづきそうか、先回りして教えていただいてありがとうございます!

ocrは勉強も兼ねてぼちぼち実装していくことにしました!まずはruby側での処理を作成してからまたFileMakerに組み込んでいきますm(_ _)m

FileMakerではひとまず入力関係がまとまった(ocrは置いておきました)ので、集計関連のことをやっていましたが、また集計は集計で特殊、、というか、、作法をきちんと覚えなきゃいけないということがhondaさんのおかげでわかったので慌てずにすみました。ありがとうございますm(_ _)m

いろいろと覚えることはありますが、触っていて楽しいですし、定型化した入力を設定して処理するのはしやすいと感じているので、これからも気長に付き合っていこうと思っています!

これからも色々質問を上げていくと思いますのでまたお答え頂ければ嬉しいです!宜しくお願い致しますm(_ _)m

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.010 seconds, 9 queries executed - Memory usage: 610.72 KiB (Peak: 627.63 KiB) ]