Add tools for interacting with scanner
This commit is contained in:
parent
9d6d39d75f
commit
2fdbb0d467
|
@ -0,0 +1,59 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
check_error() {
|
||||||
|
if test $? -ne 0; then
|
||||||
|
echo "card_scanner: $1 exited with unexpected error"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
STORAGE_DIR="$HOME/.local/share/sevenkeys/scanimages/"
|
||||||
|
mkdir -p "$STORAGE_DIR"
|
||||||
|
|
||||||
|
printf "Database profile: "
|
||||||
|
read profile
|
||||||
|
|
||||||
|
printf "Storage area name: "
|
||||||
|
read storageAreaName
|
||||||
|
|
||||||
|
ADD_CARDS=0
|
||||||
|
echo "scantap: Beginning scan loop"
|
||||||
|
while true; do
|
||||||
|
rng="$(cat /dev/random | tr -cd 'a-f0-9' | head -c 32)"
|
||||||
|
filename="$STORAGE_DIR/$rng.png"
|
||||||
|
|
||||||
|
scanimage --output-file="$filename" --source "ADF Front" --mode Color --page-width 63mm --page-height 88mm 2>/dev/null
|
||||||
|
|
||||||
|
# scanimage exits with code 7 if no documents are available in scanner
|
||||||
|
if test $? -eq 7; then
|
||||||
|
if test $ADD_CARDS -eq 0; then
|
||||||
|
ADD_CARDS=1
|
||||||
|
echo "scantap: No more cards in feeder" >&2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If we have generated a zero-length file, then delete it
|
||||||
|
if ! test -s "$filename"; then
|
||||||
|
rm "$filename"
|
||||||
|
fi
|
||||||
|
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
ADD_CARDS=0
|
||||||
|
check_error "scanimage"
|
||||||
|
|
||||||
|
convert -rotate 180 "$filename" "$filename"
|
||||||
|
check_error "convert"
|
||||||
|
|
||||||
|
cardLocationId="$(./sevenkeys --profile="$profile" store --storagearea="$storageAreaName" --id="00000000-0000-0000-0000-0000000000000")"
|
||||||
|
check_error "sevenkeys"
|
||||||
|
|
||||||
|
if test "$profile" == "development"; then
|
||||||
|
databaseName="sevenkeys_development"
|
||||||
|
else
|
||||||
|
databaseName="sevenkeys"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mysql --silent --silent --user=root --password="$(pass show sevenkeys/mysql)" \
|
||||||
|
-e "USE $databaseName; INSERT INTO CardScan (CardLocationId, Filename) VALUES ('$cardLocationId', '$rng.png');"
|
||||||
|
check_error "mysql"
|
||||||
|
done
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
crop() {
|
||||||
|
convert "$1" -crop 1200x120+90+100 "$2"
|
||||||
|
}
|
||||||
|
|
||||||
|
crop old_border.png name_old.png
|
||||||
|
crop new_border.png name_new.png
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
CLASSNAME="svnProfiler"
|
||||||
|
TITLE_FILENAME="/tmp/title.png"
|
||||||
|
touch "$TITLE_FILENAME"
|
||||||
|
|
||||||
|
get_window_id() {
|
||||||
|
while true; do
|
||||||
|
id="$(xdotool search --classname "$CLASSNAME")"
|
||||||
|
if test "$?" -ne 0; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$id"
|
||||||
|
break
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
printf "Database profile: "
|
||||||
|
read profile
|
||||||
|
if test "$profile" == "development"; then
|
||||||
|
databaseName="sevenkeys_development"
|
||||||
|
else
|
||||||
|
databaseName="sevenkeys"
|
||||||
|
fi
|
||||||
|
|
||||||
|
STORAGE_DIR="$HOME/.local/share/sevenkeys/scanimages/"
|
||||||
|
cd "$STORAGE_DIR"
|
||||||
|
|
||||||
|
files="$(find *.png)"
|
||||||
|
|
||||||
|
nsxiv -N "$CLASSNAME" $files &
|
||||||
|
nsxivWindowId="$(get_window_id)"
|
||||||
|
nsxiv "$TITLE_FILENAME" &
|
||||||
|
|
||||||
|
for file in $files; do
|
||||||
|
cardLocationId="$(mysql --silent --silent --user=root --password="$(pass show sevenkeys/mysql)" -e "USE $databaseName; SELECT CardLocationId FROM CardScan WHERE Filename = '$file';")"
|
||||||
|
|
||||||
|
# TODO: Detect features of the card automatically
|
||||||
|
#convert "$file" -crop 1200x120+90+100 "$TITLE_FILENAME"
|
||||||
|
#title="$(tesseract --psm 9 "$TITLE_FILENAME" stdout)"
|
||||||
|
#echo "$title"
|
||||||
|
|
||||||
|
cardPrintingId="$(sevenkeys --profile="$profile" search-printings)"
|
||||||
|
|
||||||
|
sevenkeys --profile="$profile" replace --card-location-id="$cardLocationId" --card-printing-id="$cardPrintingId"
|
||||||
|
|
||||||
|
xdotool key --window "$nsxivWindowId" 'n'
|
||||||
|
done
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
for i in $(seq 1 13); do
|
||||||
|
echo "PSM $i:" >>output
|
||||||
|
echo "Old card:" >>output
|
||||||
|
tesseract name_old.png stdout --psm "$i" >>output
|
||||||
|
echo "New card:" >>output
|
||||||
|
tesseract name_new.png stdout --psm "$i" >>output
|
||||||
|
echo >>output
|
||||||
|
done
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if test -z "$1"; then
|
||||||
|
echo "usage: test_card_scanner_count <count>" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
STORAGE_DIR="$HOME/.local/share/sevenkeys/testimages/"
|
||||||
|
mkdir -p "$STORAGE_DIR"
|
||||||
|
|
||||||
|
starting_file_count="$(find $STORAGE_DIR/*.png | wc -l)"
|
||||||
|
|
||||||
|
echo "test_card_scanner_count: Beginning test"
|
||||||
|
while true; do
|
||||||
|
rng="$(cat /dev/random | tr -cd 'a-f0-9' | head -c 32)"
|
||||||
|
filename="$STORAGE_DIR/$rng.png"
|
||||||
|
|
||||||
|
scanimage --output-file="$filename" --source "ADF Front" --mode Color --page-width 63mm --page-height 88mm 2>/dev/null
|
||||||
|
|
||||||
|
# scanimage exits with code 7 if no documents are available in scanner
|
||||||
|
if test $? -eq 7; then
|
||||||
|
echo "test_card_scanner_count: No more cards in feeder" >&2
|
||||||
|
rm "$filename"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
ending_file_count="$(find $STORAGE_DIR/*.png | wc -l)"
|
||||||
|
|
||||||
|
if test $(( ending_file_count - starting_file_count )) -ne "$1"; then
|
||||||
|
echo "FAILED: Start: $starting_file_count, End: $ending_file_count"
|
||||||
|
else
|
||||||
|
echo "SUCCESS"
|
||||||
|
fi
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
STORAGE_DIR="$HOME/.local/share/sevenkeys/testimages/"
|
||||||
|
mkdir -p "$STORAGE_DIR"
|
||||||
|
|
||||||
|
echo "test_card_scanner_count: Beginning test"
|
||||||
|
while true; do
|
||||||
|
rng="$(cat /dev/random | tr -cd 'a-f0-9' | head -c 32)"
|
||||||
|
filename="$STORAGE_DIR/$rng.png"
|
||||||
|
|
||||||
|
scanimage --output-file="$filename" --source "ADF Front" --mode Color --page-width 63mm --page-height 88mm 2>/dev/null
|
||||||
|
done
|
Loading…
Reference in New Issue