Schema LawSign in with Google

How to Search Scanned Contracts for a Clause

By Schema LawPublished Updated

To search scanned contracts for a clause, first give every file in the set a text layer, then run a written list of search terms that covers the clause's heading, its operative words and the ways drafters disguise it. Log each search and its hits, and read the page image before recording that a clause is present or absent.

Why does a search miss a clause in a scanned contract?

A search misses a clause in a scanned contract for one of two reasons: the file gave the search nothing to read, or the clause is there under words you did not type. The first is a problem with the files. The second is a problem with the term list, and it survives perfect OCR.

Sorted by where the fault lies:

Where the fault liesWhat happensHow it shows up
The fileSome contracts in the set are still pictures of pagesThose contracts never appear in any result
The fileThe clause is in an amendment, exhibit or side letter saved as a separate file that was not searchedThe main agreement looks silent
The textThe key word was misread, or broken across two linesOne contract drops out of a search that catches its neighbors
The vocabularyThe drafter wrote "transfer" where you searched "assign"The clause exists and the hit count is zero
The structureThe clause has no heading, or sits under "Miscellaneous" or inside a definitionA heading search passes over it
The search toolThe folder index is stale, or the tool looks at file names onlyResults stop matching what you can see in the files

The file-level causes are the most dangerous because they are silent. A contract with no text layer does not return an error. It returns nothing, and nothing looks the same as "no such clause".

Recognition errors get most of the blame and are only one row of that table. The mechanics of misread letters and split words are covered in the section on why search still misses words after OCR. This post deals with the rest: the set, the terms and the record.

Making a set of scanned contracts searchable in one pass

Make the set searchable by listing every file, testing each for text, converting the ones that fail, and then proving the whole set responds to a control search. Do it once, at the start, so every later search runs against the same complete body of text.

  1. List the files. One row per file: name, page count and the agreement it belongs to. Group amendments and exhibits with their parent.
  2. Test each file for text. Search each for a word visible on its first and last pages. Files assembled from several sources can be half text and half image.
  3. Convert every file that fails. The steps for one file are in the guide to making a scanned PDF searchable.
  4. Export two things per contract. A searchable PDF, so a hit lands on the page image. A plain text file, so one tool can sweep the entire folder at once.
  5. Keep the names parallel. 0417 Supply Agreement - Perrin.pdf and 0417 Supply Agreement - Perrin.txt sort together and trace back to the same row.
  6. Run the control search.

Pick a word that every contract must contain. "Agreement" works for almost any set, and "party" is a good second. Search the whole folder for it and count the files that respond.

  • Forty files and forty responders: the set is ready.
  • Forty files and thirty-seven responders: three files have no working text. Fix them before you search for anything that matters.

Repeat the control search whenever files are added. It takes a minute, and it turns "we searched everything" from an assumption into something you checked.

If the contracts come from a deal data room, the index numbers have to survive this step. The post on OCR for data room documents covers downloading and converting a room without breaking its index.

In Schema Law, searchable PDF and plain text are among the eight formats on every plan, including the free one, and you can choose several files at once when you upload. The export formats on the homepage list all eight.

Which search terms find an assignment or change of control clause?

Search for an assignment or change of control clause with a layered list: the heading words, the operative verbs, the events that count as a change of control, and the phrases that pull one clause inside the other. No single word finds them all, because drafters reach the same restriction by different routes.

Use stems so one search catches every ending. "Assign" finds assign, assigns, assigned, assignment, assignee and assignable.

LayerTermsWhy it is on the list
Headings"Assignment", "Successors and Assigns", "Change of Control", "Transfer"The fast pass. Finds clauses that are labeled honestly
Operative verbs"assign", "transfer", "delegat", "novat", "subcontract", "sublicens", "convey"Finds the restriction when the heading is missing or generic
Consent wording"prior written consent", "without the consent", "unreasonably withheld"Finds the condition attached to the restriction
Change of control events"change of control", "change in control", "merger", "consolidat", "reorganiz", "substantially all", "acquisition"Each is a different way of describing the same event
Ownership tests"voting", "beneficial owner", "equity interests", "fifty percent", "50%", "majority"Finds a definition of control that never uses the phrase
Deeming language"operation of law", "directly or indirectly", "deemed an assignment", "deemed to be an assignment"Finds an assignment clause that reaches a sale of the company
Consequences"terminat" near "control", "competitor"Finds a termination right triggered by a change of control, which sits in a different clause

The noise each term brings

Some terms hit in every contract for reasons that are not the clause you want. Know them in advance so the hit count does not mislead you.

  • "assigns" appears in the boilerplate "successors and permitted assigns" in preambles and binding-effect clauses.
  • "assign" also catches the assignment of inventions or intellectual property in employment and development agreements.
  • "control" appears in definitions of "Affiliate", in "quality control" and in "circumstances beyond its control".
  • "transfer" catches wire transfers, data transfers and transfer of title to goods.
  • "merger" catches the entire-agreement clause when it is headed "Merger" or "Integration".

A worked example

A reviewer has 40 scanned commercial contracts for a fictional seller, Brindle Works, Inc., and one question: which of them need the counterparty's consent if Brindle is sold?

SearchFiles with a hitAfter reading the hits
Heading "Assignment"3131 assignment clauses
"assign" (stem)3936 assignment clauses. Three hits were "successors and assigns" only
"change of control" or "change in control"99 express clauses
"operation of law"1212 assignment clauses that reach a merger
"substantially all"148 relevant. Six were carve-outs that permit a sale of the business
"voting" or "50%"62 further contracts that define control without the phrase

The heading search alone would have reported 31 contracts and missed five that restrict assignment under another heading. The phrase "change of control" alone would have reported nine, when the reading shows as many as 23 contracts where a sale of the company needs a closer look. And one file of the 40 had no hit for "assign" at all, which is a finding to test, not a result to report.

When you are hunting a sale trigger, also search takeover and reorganization, then open each hit on the page image. Record the file name, the clause number, and the page. Read the definition of control in that same contract, because a short heading can point at a longer test.

This list is built for one clause type. Other clauses need their own layers. For confidentiality agreements, the table of NDA clauses to locate first gives search words for each clause.

Searching by clause heading versus clause wording

Search by heading to find where a clause should be, and by wording to find where it actually is. Run both. The contracts that show up in one pass and not in the other are the ones that deserve your reading time.

Heading searchWording search
What you typeThe label a drafter would give the clauseThe words the clause needs in order to work
SpeedFast, few hits per contractSlower, many hits per contract
MissesUnheaded clauses, clauses under "General" or "Miscellaneous", clauses inside definitionsClauses written in unusual vocabulary
False hitsThe table of contents, cross-references ("subject to Section 14")Boilerplate and unrelated uses of the same word
OCR riskHeadings in bold capitals or underlined type are sometimes read worse than body textOne misread word matters less, because you search several

Reading the two result sets against each other

Put the results in two columns of your contract list and compare.

  • Heading hit and wording hit. The ordinary case. Read the clause and record it.
  • Wording hit, no heading hit. The clause is buried. Places to look are a general provisions section with no subheadings, a termination clause, and the definitions.
  • Heading hit, no wording hit. Look at the page. Either the heading appears only in a table of contents and the clause was cut, or the clause's text was recognized badly.
  • Neither. A candidate for "absent", which needs the extra steps in the next section.

Use the table of contents, with care

A table of contents is a ready-made heading index, and reading it in the image takes seconds. Treat it as a lead. Tables of contents go stale when clauses are added or removed late in drafting, so a listed heading does not prove the clause survived, and an unlisted one does not prove it is missing.

Phrase search and single words

A phrase such as "prior written consent" fails when the scan wraps it across a line or page and the text layer breaks it in two. If a phrase search returns less than you expect, search its least common word alone and read the surrounding lines.

How do you show a clause is absent from a scanned contract?

A search with no hits does not show that a clause is absent. You show it by ruling out the other explanations: the file has working text, the scan is complete, the full term list was run, the headings were read in the image, and the related documents were checked. Then you say exactly which of those you did.

Work down this list for each contract that came up empty:

  1. Confirm the file responds to the control search. If "agreement" finds nothing, the silence means nothing.
  2. Confirm the scan is whole. Compare the page count with the page numbers printed on the pages, and check that the section numbers run without a gap. The post on missing pages in a scanned contract gives the full test.
  3. Run every layer of the term list, not just the first.
  4. Read the headings in the image, from first page to last. This catches a heading the recognition mangled.
  5. Read the likely homes of the clause in full: the general provisions, the termination section and the definitions.
  6. Check the family. Search each amendment, exhibit and side letter. A clause added by a later amendment is still part of the contract.
  7. Decide whether a full read is needed.

Say how sure you are

Use fixed wording for the result so nobody reads more into it than you did.

Entry in the chartWhat it means
Not found (search only)The term list returned no relevant hit. Nothing else was done.
Not located (search and heading read)Steps 1 to 6 were completed and no clause was found.
Confirmed absent (full read)A person read the whole contract and its amendments in the image.
Unable to determineThe scan is incomplete or too poor to rely on.

Which level a matter requires is the supervising lawyer's decision. A first-pass sort of 400 contracts and a statement that will be relied on in a deal document may call for different levels. Ask before the review starts, because the answer changes how long it takes.

Keep "silent" apart from "permitted". A contract with no assignment clause has not thereby said that assignment is allowed. What the law provides when a contract says nothing is a legal question, and it varies by jurisdiction. The chart records the fact that no clause was found. It should not record a conclusion about what follows.

Keeping a search log for a contract review

Keep a log with one row for every search you run: the date, the files searched, the exact term, the tool, the number of files with hits, and who ran it. The log lets someone else repeat your work, and it answers the question "did we search for that?" months later.

DateSet searchedTerm, as typedTool and settingFiles hitRun byNotes
4 Jun40 files, list v2agreementFolder text search, whole word off40RLControl search, all respond
4 Jun40 files, list v2assignSame39RLFile 0422 no hit, sent for heading read
4 Jun40 files, list v2"change of control"Same, exact phrase8RL
4 Jun40 files, list v2"change in control"Same, exact phrase1RLFile 0409
6 Jun43 files, list v3assignSame42RLThree files added, control search rerun first

What makes the log worth having

  • Write the term exactly as typed, with its quotation marks and any wildcard. "Assign" and "assignment" are different searches.
  • Record the settings. Case sensitivity, whole-word matching and phrase matching all change the count.
  • Version the file list. When contracts are added, the old counts stop being comparable. Give the list a new version number and rerun.
  • Log the empty searches too. A term that found nothing is evidence that you looked.
  • Keep the term list with the log. If a new variant turns up in week two, such as a contract that says "alienate" where the others say "assign", add it to the list and rerun it across the whole set, including the contracts already reviewed.

The search log is separate from the review chart. The chart holds one row per contract with the clause, its section and its page. The log holds one row per search. Between them they show both what the contracts say and how you came to know it.

All posts in Contracts and agreements