for back-office staff
Split a scanned packet into documents
Split a stack of scanned pages into documents. choose says what kind each page is. decide marks where a new document starts.
Three invoice pages and one notice.
question="What kind of page is this?"
kinds=(
invoice
notice
)
cat <<'EOF' |
Invoice 7 for Northwind. Page 1 of 2.
Invoice 7 for Northwind. Page 2 of 2. Total due $1,200.
Invoice 8 for Contoso. Page 1 of 1. Total due $310.
Notice to all customers. Page 1 of 1. New terms from May 1.
EOF
thinkthen choose "$question" "${kinds[@]}" \
--batch 1 \
--lines \
--rawOutput
invoice invoice invoice notice
exit 0: the run finished
awk pairs each page with the one before it. The two pages of Invoice 7 stay together. A new document starts at Invoice 8 and at the notice.
question="Are the two sides from different documents?"
cat <<'EOF' |
Invoice 7 for Northwind. Page 1 of 2.
Invoice 7 for Northwind. Page 2 of 2. Total due $1,200.
Invoice 8 for Contoso. Page 1 of 1. Total due $310.
Notice to all customers. Page 1 of 1. New terms from May 1.
EOF
awk 'NR > 1 { print last " | " $0 } { last = $0 }' |
thinkthen decide "$question" --batch 1 --lines |
jq .valueOutput
false true true
exit 0
The functions it uses
On GitHub: github.com/botassembly/thinkthen