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

概要

監視フォルダに格納された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秒)

サイズチェック

しない

実行条件

動作確認

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