GithubHelp home page GithubHelp logo

handwriterapp's Introduction

README

Handwriter is designed to assist forensic examiners by analyzing handwritten documents against a closed set of potential writers. It determines the probability that each writer wrote the document. Whether you are a forensic document examiner, legal professional, academic, or simply curious about how statistics are applied to handwriting, handwriter provides an automated way to evaluate handwriting samples.

VIEW A DEMO

View a demo of handwriter on handwritten documents from the CSAFE Handwriting Database. Go to demo.

SIMULATE CASEWORK WITH EXAMPLE DOCUMENTS

INSTALLATION

Handwriter requires R, RStudio IDE, and JAGS.

LAUNCH THE APP

Open RStudio, navigate to the console window, and type:

install.packages("devtools")
devtools::install_github("CSAFE-ISU/handwriterApp")
library(handwriterApp)
handwriterApp()

In the pop-up window, click Open in Browser. If you use the app in the pop-up window instead of in a browser, some links will not work.

Click Simulate Casework and follow the instructions in the app.

handwriterapp's People

Contributors

stephaniereinders avatar

Watchers

 avatar

Forkers

csafe-isu

handwriterapp's Issues

Ask for feedback on app

Comments from Jeni

Below are my comments/edits:

Overall: Is there eventually going to be a footer added to match the look of the other apps?

Page 1, main paragraph: I’m suggesting a rewrite of the second sentence, see the 2 bullet points below. It just sounds a bit odd starting that sentence with “Made to aid forensic examiners…” and it was a little long. I split that second sentence into two sentences.
Option 1: This tool is designed to assist forensic examiners by analyzing handwritten documents against a closed set of potential writers. It determines the probability that each writer wrote the document.
Option 2: This tool assists forensic examiners by analyzing handwritten documents against a closed set of potential writers. It determines the probability that each writer wrote the document.

Page 1, sidebar: I think you could remove the word “following” and it would still make sense. Change “start” to “begin” to match the button text. And change “app” to “handwriter”. Press the button to begin using handwriter to compare a questioned document to known samples.

Starting on Page 5, “Known Writing” Sidebar: Is there an extra space or too much space between the sentence “Select three known…” and the Browse box input area? Ignore this comment if this was the intended look.

Page 17, second paragraph:
I’m not sure what the naming convention is, but is there a reason why “App” is included in handwriter’s name? If it is needed, I would remove “application” because it sounds kind of redundant with App and application back-to-back.
A suggested sentence rewrite: The methods used in the handwriter package are open-source and transparent, as described in Crawford, Berry, and Carriquiry (2020) and Crawford, Ommen, and Carriquiry (2023).

Page 18: Remove “The” before CSAFE’s name

Release handwriterApp 1.0.0

First release:

Prepare for release:

  • git pull
  • urlchecker::url_check()
  • devtools::check(remote = TRUE, manual = TRUE)
  • devtools::check_win_devel()
  • git push

Submit to CRAN:

  • usethis::use_version('major')
  • devtools::submit_cran()
  • Approve email

Wait for CRAN...

  • Accepted 🎉
  • usethis::use_github_release()
  • usethis::use_dev_version(push = TRUE)
  • usethis::use_news_md()

Give the user progress updates when processing documents

Right now, when the user selects known writing samples, handwriter processes the samples behind the scenes but all the user sees is the spinner. The user might appreciate seeing a notification every time a sample is processed.

Separate Demo and Casework Simulation Use Cases

The Problem

Amy Crawford found that cluster templates with K=40 clusters yield the highest accuracy when the number of known writers is 100+. The drawback is that fitting a model and analyzing questioned documents with this many known writers takes several hours, so this scenario is unsuitable for a handwriter demo.

I tried using a template with K=40 clusters and only 5 known writers. Fitting the model was much faster, but the accuracy on the questioned documents was terrible: 0%! The model training documents only used 22 of the K=40 clusters, but around 1/6 of the graphs in the questioned documents fell into the other 18 clusters. This meant that a large portion of the questioned documents' data was thrown out and not used to estimate the questioned writers' profiles.

I found that if I used a smaller cluster template with K=5 or K=8 clusters, and 5 known writers, the model achieved 100% accuracy on two questioned documents. However, the model tanked on the 20 other questioned documents that I tested. We could use this small cluster template, these known writers, and the 2 "successful" questioned documents as handwriter demo data because the model and analysis run quite fast. However, we don't want to allow users to use the small cluster template on other data because the results are likely to be quite poor.

The Solution

Give users the option to see a demonstration of handwriter with data that we provide them or allow users to analyze their own data to simulate casework.

Option 1: Demo

Handwriter will use the small cluster template, the 5 known writers, and the 2 questioned documents. Users won't have the option to select their own data.

Option 2: Casework Simulation

Handwriter will use a template with K=40 clusters. Users will upload their own data but be required to use at least 100 known writers. We can also include a link to the CSAFE Handwriting Database if they would like to download data.

Bug with questioned document tab

If the user fits a model and then starts a new session, an error occurs if the user tries to process the questioned document without setting the start on stop characters on the known writer tab.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.