verify takes a redacted PDF and, optionally, a list of the strings that were meant to be removed.
It checks the file for six failure classes, the ways a redaction can fail while the page still
looks redacted, plus a check of /Info metadata:
The metadata check looks for target text in the document's /Info dictionary.
It then writes a certificate. The certificate is deterministic: it has no timestamp, so the same
inputs give the same bytes. It is bound to the SHA-256 of the PDF and the SHA-256 of the target
list, and it never contains a target value or any hidden text it found.
verify is a single Go binary that runs on your machine. It uses poppler’s pdftotext, which must
be on your PATH. There is no service and nothing is uploaded: nothing leaves your machine.
It is sold under a flat licence.
We ran verify on 200 court filings from the RECAP archive whose docket entries describe them as
redacted.
188 passed and
12 failed. One document leaks: a chart filed twice, as two different
files, with black bars over email addresses and the text still under the bars, set in Type3 glyphs
with no /ToUnicode map. The other 10 failures are signature images and white boxes over text the
filer did not mean to hide, which verify reports for a person to look at.
The full write-up.
Download the binary and a sample file set, or read the licence.