xml:space="preserve">

テキスト読み取りとバインダー束ね

概要

監視フォルダに格納されたXDWl文書を1ページ毎に分割します。

10_振り分け
図面.xdw
1枚毎に分割
\90_System\10_Temp\10_ページ分割
図面_001.xdw
図面_002.xdw

分割したXDW文書のテキストを読み取り、工事名と日付を取得します。

取得した日付でフォルダを作成して、工事名のバインダーを作成して格納します。

\90_System\10_Temp\10_ページ分割
図面_001.xdw
取得できた場合
\20_保管
\2021\07\03
A棟新築工事.xbd
取得できなかった場合
15_エラー
図面_001.xdw

設定の前準備

C:\Homeの下に、以下のような構成でフォルダを作り、準備します。

フォルダ構成のダウンロード

テキスト読み取りとバインダー束ね_フォルダ構成.zip

Cドライブのルートに解凍してください。

フォルダ構成は以下の通りです。

  • C:\Home\eDocArrangement2\Demo\テキスト読み取りとバインダー束ね
    • 10_振り分け
      • _図面サンプル.zip
    • 15_エラー
    • 20_保管
    • 90_System
      • 10_Temp
        • 10_ページ分割
      • 90_Log

設定ファイル

以下のリンクから完成した設定をダウンロードしていただくことができます。

設定ファイルのダウンロード

テキスト読み取りとバインダー束ね_設定.zip

以下のフォルダに解凍すると設定が適用されます。

C:\Users\ユーザー名\AppData\Roaming\TechnoStyle\eDocArrangement2

グローバルデータ

グローバルデータとログの設定(共通設定)

グローバルデータの内容は以下の通りです。トップフォルダを変更する場合は、以下の定義を変更してください。グローバルデータは、「共通設定」から変更できます。

名前
TopFolder C:\Home\eDocArrangement2\Demo\テキスト読み取りとバインダー束ね

詳しい設定方法は、 設定例(共通)グローバルデータとログの設定 を参照して下さい。

ログ設定

実行ログファイル名 {%GET_G(TopFolder)}\90_System\90_Log\Log.txt
エラーログファイル名 {%GET_G(TopFolder)}\90_System\90_Log\ErrorLog.txt
文字コード SJIS
方式 追加書き込み (日単位)

バッチ設定

テキスト読み取りとバインダー束ね

XDW文書を1ページ毎に分割する。
分割したXDW文書から工事名と日付のテキスト情報を取得する。
取得した日付でフォルダを作成して、工事名のバインダーを作成して束ねる。

共通ログ設定の内容でログを出力する。

ファイルの繰り返し1

Loop File

メイン画面のファイルリストを対象に繰り返し処理を行う。

ループ毎にユーザーデータをクリアする。

XDW文書オープン1

Open DocuWorks File

DocuWorksファイルを読み込み専用でオープンする。

バインダーを新規作成する場合は、ページ最大サイズでカラーは青とする。

ページの繰り返し1

Loop DocuWorks Page

「XDW文書オープン1」でオープンされた文書のページを先頭から繰り返し処理を行う。

分割マーク

Macro Execute

以下のマクロを実行する。

{%SET_SPLIT_DATA({%GET(FullPathFileName)},分割マーク,{%DW_GET(PageLoopCount)},{%DW_GET(PageLoopCount)})}

XDW文書クローズ1

Close DocuWorks File

「XDW文書オープン1」でオープンされた文書をクローズする。クローズ前に文書を保存しない。

バインダー内の文書、オリジナルデータを追加する場合は、末尾に追加する。

ファイル移動1

Move File

文書を以下の通り移動する。

移動元 {%GET(FullPathFileName)}
移動先 {%GET_G(TopFolder)}\90_System\10_Temp\10_ページ分割

ファイル名を「{%GET(FileNameWithoutExtension)}_{%FORMAT({%GET_SPLIT_DATA({%GET(FullPathFileName)},分割マーク)},0000)}.xdw」に変更する。

移動先に同名の文書がある場合は、ファイル名に連番を付与する。

分割マークのあるページで文書を分割する。

ファイル検索1

Search Files

以下の検索を行う。

フォルダ名
ファイル名
下位フォルダ検索
{%GET_G(TopFolder)}\90_System\10_Temp\10_ページ分割
*.xdw
しない

ファイルの繰り返し2

Loop File

ファイル検索1を対象に繰り返し処理を行う。

ループ毎にユーザーデータをクリアする。

XDW文書オープン2

Open DocuWorks File

DocuWorksファイルを読み込み専用でオープンする。

バインダーを新規作成する場合は、ページ最大サイズでカラーは青とする。

OCR読み取り1

Optical Character Reader

以下の内容でOCR読み取りを行う。

「XDW文書オープン2」でオープンされた文書のページ1をOCR読み取りする。

正規表現「工事名(.+?)図面名」で検索を行う。

OCR処理を行わずテキスト抽出のみ行う。

OCR読み取り2

Optical Character Reader

以下の内容でOCR読み取りを行う。

「XDW文書オープン2」でオープンされた文書のページ1をOCR読み取りする。

正規表現「日付(\d{4}/\d{2}/\d{2})」で検索を行う。

OCR処理を行わずテキスト抽出のみ行う。

XDW文書クローズ2

Close DocuWorks File

「XDW文書オープン2」でオープンされた文書をクローズする。クローズ前に文書を保存しない。

バインダー内の文書、オリジナルデータを追加する場合は、末尾に追加する。

結果判定

Macro Execute

以下のマクロを実行する。

{%SET_U(属性,工事名,{%GET_USER_DATA(OCR読み取り1,1)})}
{%SET_U(属性,日付,{%GET_USER_DATA(OCR読み取り2,1)})}

{%WRITE_LOG(工事名:{%GET_U(属性,工事名)})}
{%WRITE_LOG(日付:{%GET_U(属性,日付)})}

{%SET_U(wk,判定,False)}
#マッチするテキストが全て取得できた場合
{%IF({%GET_U(属性,工事名)}!=,
  {%IF({%GET_U(属性,日付)}!=,
    {%SET_U(wk,判定,True)}
  ,)}
,)}

{%WRITE_LOG(判定:{%GET_U(wk,判定)})}

条件分岐1

If

以下の条件を判定して処理を分岐する。

{%GET_U(wk,判定)}

満たしている場合

If Then

フォルダ作成1

Create Folder

以下のフォルダを作成します。

{%GET_G(TopFolder)}\20_保管\{%FORMAT({%GET_U(属性,日付)},yyyy\\MM\\dd)}

XBD文書オープン1

Open DocuWorks File

DocuWorksファイルを読み書き可能でオープンする。

文書またはオリジナルデータを展開する。

バインダーを新規作成する場合は、ページ最大サイズでカラーは青とする。

マクロ実行1

Macro Execute

以下のマクロを実行する。

{%WRITE_LOG({%GET(ProcResult,XBD文書オープン1)})}
{%WRITE_LOG({%DW_GET_TEMP_FOLDER_FOR_EXTRACTION(XBD文書オープン1)})}

条件分岐2

If

以下の条件を判定して処理を分岐する。

{%GET(ProcResult,XBD文書オープン1)}

満たしている場合

If Then

ファイル移動2

Move File

文書を以下の通り移動する。

移動元 {%GET(FullPathFileName)}
移動先 {%DW_GET_TEMP_FOLDER_FOR_EXTRACTION(XBD文書オープン1)}

移動先に同名の文書がある場合は、ファイル名に連番を付与する。

XBD文書クローズ1

Close DocuWorks File

「XBD文書オープン1」でオープンされた文書をクローズする。クローズ前に文書を保存する。

バインダー内の文書、オリジナルデータを追加する場合は、末尾に追加する。

満たしていない場合

If Else

満たしていない場合

If Else

ファイル移動3

Move File

文書を以下の通り移動する。

移動元 {%GET(FullPathFileName)}
移動先 {%GET_G(TopFolder)}\15_エラー

ファイル名を「テキスト取得失敗_{%GET(FileName)}」に変更する。

移動先に同名の文書がある場合は、ファイル名に連番を付与する。

監視設定(eDocArrangement 2 Schedulerの設定)

No.
設定名
実行対象
監視フォルダ
拡張子
下位フォルダ
スケジュール
常時ログ出力
オープンチェック
サイズチェック
実行条件
1
テキスト読み取りとバインダー束ね
{%GET_G(TopFolder)}\10_振り分け
*.xdw
対象にしない
一定間隔
00:00:10
しない
オープンチェックする。(3秒)
しない

動作確認

以下の動画をご覧ください。