Automated redaction

In embodiments, one or more computer-readable media may have instructions stored thereon which, when executed by a processor of a computing device provide the computing device with a redaction module. The redaction module may be configured to receive a request to redact a selection of text from a document and identify instances of the text occurring within the document through an analysis of word coordinate information of an image of the document. The redaction module may further be configured to generate redaction information, including redaction coordinates, the redaction coordinates may be based on the word coordinate information associated with respective instances of the text occurring within the document. The redactions, when applied to the image in accordance with the redaction coordinates, may redact the respective instances of the text. Other embodiments may be described and/or claimed.

TECHNICAL FIELD

Embodiments of the present disclosure are related to the field of information processing and, in particular, to automated redaction of electronic documents.

BACKGROUND

When documents are sought to be produced for an audience other than the originally intended audience for those documents, it may be necessary to limit the information contained in those documents to only necessary information. One method for limiting those documents to only necessary information is through redaction of the documents. Redaction of the documents may include obscuring, blocking out, or removal of text from a document prior to production of the document. Manual redaction may be time consuming and prone to errors, such as an accidental redaction of information, failing to redact information that should have been redacted, or inconsistent redactions between similar documents. In some instances, such as electronic discovery during litigation or government investigations, or sharing corporate information in mergers and acquisitions, the drawbacks for manual redaction may be compounded due to the massive number of documents that may need to be redacted and may require a great number of individuals to process such redactions.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

A method, storage medium, and apparatus, for redaction of electronic documents and/or electronic images of documents are described herein. In embodiments, the storage medium may have instructions stored thereon which, when executed by a processor of a computing device, provide the computing device with a redaction module. In embodiments, the redaction module may be configured to receive a request to redact a selection of text from a document. The redaction module may be further configured to identify instances of the text occurring within the document through an analysis of word coordinate information of an image of the document. In embodiments, the word coordinate information may be generated by an optical character recognition (OCR) process performed on the image. The redaction module may, in some embodiments, be configured to generate redaction information, including redaction coordinates, the redaction coordinates may be based on the word coordinate information associated with respective instances of the text occurring within the document, wherein redactions applied to the image, in accordance with the redaction coordinates, redact the respective instances of the text.

For the purposes of the present disclosure, the phrase “A and/or B” means (A), (B), or (A and B). For the purposes of the present disclosure, the phrase “A, B, and/or C” means (A), (B), (C), (A and B), (A and C), (B and C), or (A, B and C). The description may use the phrases “in an embodiment,” or “in embodiments,” which may each refer to one or more of the same or different embodiments. Furthermore, the terms “comprising,” “including,” “having,” and the like, as used with respect to embodiments of the present disclosure, are synonymous.

As used herein, electronic document refers to any document in electronic form, including, but not limited to, images and/or word processing versions of documents. Images of documents may include those images created by scanning a hard copy of a document and/or images created by imaging a word processing version of a document.

FIG. 1depicts an illustrative redaction system100according to some embodiments of the present disclosure. In embodiments, redaction system100may include redaction module102, imaging module104and optical character recognition (OCR) module106. Redaction module102may be configured to take as input redaction request112. Redaction request112may include documents108and text to redact110. In some embodiments, documents108may include copies of documents to be redacted, images of documents to be redacted, an electronic link to copies of documents or images of documents to be redacted, or any combination thereof. Text to redact110may contain text, such as a word, phrase, sentence, or paragraph to be redacted from documents108. Text may be composed of any combination of characters including, but not limited to, alpha, numeric, and/or special characters.

In embodiments, redaction module102may be communicatively coupled with imaging module104and OCR module106. The communicative coupling may be accomplished via any appropriate mechanism, including, but not limited to, a system bus, local area network (LAN), wide area network (WAN), and/or the Internet. A LAN or WAN may include one or more wired and/or wireless networks.

In some embodiments, redaction module102may be configured to send request120to imaging module104to have images of documents108created where an image of one or more of the individual documents, or a link to an image of the document, is not included in documents108. In embodiments, imaging module104may be configured to take the document, or a link to the document, and convert the document to an image. The image may be any type of computer-readable image capable of having an OCR process performed on it. This disclosure is equally applicable regardless of the type of image produced by imaging module104.

In some embodiments, request120may be on a document-by-document basis, wherein redaction module102is configured to send request120for each document contained in documents108to be imaged. In other embodiments, redaction module102may be configured to determine a group of documents needing an image created from documents108and may send the entire group to imaging module104to have corresponding images created. In such embodiments, the group may be determined by a predetermined number of documents to group together up to, and including, all documents to be imaged from documents108. Furthermore, redaction module102may be configured to send request120synchronously or asynchronously and imaging module104may be configured to process the request correspondingly.

Once a document image corresponding with each document in request120has been created by imaging module104, imaging module104may be configured to package the resultant document images, or links to the resultant document images, into response122and may send response122to redaction module102. It will be appreciated that where documents108contains document images and/or links to document images for all documents contained within documents that no requests to imaging module104may be necessary. Furthermore, it will be appreciated that the creation of the images need not be requested by redaction module102and that, in some embodiments, any such imaging may occur prior to redaction module102receiving redaction request.

In some embodiments, in lieu of electronic documents108, redaction module102may be provided with the document images as inputs directly. For these embodiments, the above interaction with imaging module104may be skipped. In embodiments, whether the input documents are electronic documents108or document images may be indicated in request112, or automatically detected by redaction module102, e.g., based at least in part on the file types of the files having electronic documents108or the document images.

Upon receiving response122(or the document images directly), redaction module102may be configured to send request124to OCR module106containing document images or links to document images for OCR module106to process. OCR module106may be configured to process each document image of request124by generating word coordinate information associated with each document image. In embodiments, word coordinate information may include information concerning a location of each word in the imaged document and a perimeter in the imaged document within which each word is contained. Word coordinate information is discussed in greater detail in reference toFIG. 2below.

In some embodiments, redaction module102may be configured to send request124on an image-by-image basis, wherein request124is sent for each document image created by imaging module104and/or each document image available in documents108. In other embodiments, redaction module102may be configured to determine a group of images to send to OCR module106to create corresponding images. In such embodiments, the group may be determined by a predetermined number of document images to group together up to, and including, all available document images. Furthermore, redaction module102may be configured to send request124synchronously or asynchronously and OCR module106may be configured to process the request correspondingly without departing from the scope of this disclosure.

In some embodiments, imaging module104may produce word coordinate information which may be utilized by redaction module102. Imaging module104may be configured to produce the word coordinate information utilizing an internal OCR process and/or one or more print drivers configured to generate word coordinate information. In such embodiments, the OCR process may be superfluous and OCR module106may be omitted. In other embodiments, redaction module102may be provided with images and corresponding word coordinate information associated with the images in redaction request112. In such instances both imaging module104and OCR module106may be omitted.

Upon receiving response126, redaction module102may be configured to identify instances of text to redact110occurring in the word coordinate information generated by OCR module106. Redaction module102may be further configured to determine redaction info118sufficient to fully redact the identified instances of text to redact110. Redaction module102may be configured to output redaction output114, including redaction info118and document images116. Document images116may include all images processed by OCR module106. In embodiments, when redaction info118is applied to document images116, the identified instances of text to redact110may be fully redacted. In some embodiments, redaction request112may include text and/or a graphic to be overlayed on the identified instances of the text to be redacted, not pictured here.

In some embodiments, redaction module102may interact with one or more management applications, not pictured. Such a management application may generate redaction request112and may track the requests through the redaction process described herein. In embodiments, the management application may provide real-time status of the redaction request to a user of the management application. For example, the management application may be a third party application associated with a document review platform.

In some embodiments, to generate redaction request112, the management application may be configured to allow a user of the management application to perform a search for text to redact within a database of documents to identify documents to include in documents108that may contain text to redact. In some embodiments, the search for text to redact may be performed by redaction module102. In some embodiments, management application may be configured to utilize a regular expression to identify text to redact from the document as well as documents to include in documents108that may contain text to be redacted. For example, a user may wish to redact all social security numbers from a set of documents. To accomplish this, the user may define a regular expression that may identify instances of social security numbers and return the social security numbers as text to be redacted from the documents. This text to be redacted may then be submitted to redaction module102, along with the associated documents for redaction. In some embodiments, redaction module102may be configured to accept the regular expression and perform the search to identify instances of text that match the pattern defined by the regular expression. Redaction module102may then return the identified instances of text to the management application to be used by the user or may return the identified instances of text to the user.

The documents identified in the search may be packaged together, along with the text to be redacted and submitted as redaction request112. This may be beneficial to ensure only those documents containing the text to be redacted are submitted with redaction request112. In some embodiments, the management application may be configured to record the number of occurrences of the text to be redacted in the individual documents and may include this information in the redaction request on a document by document basis or a total number of occurrences in the request. In some embodiments, this number of occurrences may be utilized during the processing of the redaction request to determine when all instances of the text to be redacted have been found, either on a document by document basis or on a request by request basis. The number of occurrences may also be utilized by a user of the management application to compare the number of occurrences of the text that were actually redacted by the redaction module against the possible number of occurrences to determine the efficiency of the redaction module and determine the number of occurrences that were missed and still need to be redacted, again, this may be on a document by document basis or a request by request basis.

In some embodiments, redaction module may be configured to take in a document having a redaction and copy, or mimic, that redaction onto other pages of that document and/or other documents. For example, consider a spreadsheet where only a few pages need to be produced. In such an instance, a redaction may be applied to single page in the spreadsheet which may redact the entire page. A user may then submit a request to redaction module102to have the redaction applied to designated pages that need not be produced. Redaction module102may be able to merely copy the redaction over to the designated pages for the document to be produced.

FIG. 2depicts an illustrative process flow of a redaction process200according to some embodiments of the present disclosure. The process may begin at block202where a redaction request is received, such as, for example, redaction request112ofFIG. 1. In block204a document may be extracted from the request, e.g., by redaction module102. The document may be a first document contained within the request or it may be a subsequent document depending on the stage of processing the redaction request. In embodiments, the document may be extracted merely by opening the document via a copy of the document, or link to the document, provided with the request. In other embodiments, the documents in the request may be encrypted for increased security and to extract the documents may further involve decryption of the documents.

In block206a determination is made as to whether the current document has been imaged, e.g., by redaction module102. In some embodiments, the document itself may be an image in which case this determination may be resolved in the affirmative. In other embodiments, the document may have an image associated with it indicating that the document has already been imaged, such as, for example, via an electronic link contained in metadata of the document and/or the request. If the document has an image associated with it, the image of the document may be retrieved for processing.

Where the document has been imaged, processing can proceed to block210. Where the document has not been imaged, processing may proceed to block208. At block208an image of the document may be created. This may be accomplished by converting the document into any type of computer-readable image capable of having an OCR process performed on it, such as, for example, a tagged image file format (TIFF), a joint photographic experts group (JPEG) format, a graphics interchange format (GIF), etc. This disclosure is equally applicable regardless of the type of image produced in block208. Once the document is imaged, processing may return to block210.

In block210an optical character recognition (OCR) process is performed on the image of the document, e.g., by OCR module106. The OCR process may generate word coordinate information associated with the image. The word coordinate information may contain the words extracted from the image by the OCR process, as well as the coordinate information associated with each word. The coordinate information associated with each word may identify a location of the word in the image as well as a width and height of the word. For example, the associated coordinate information may indicate a single x and y coordinate, along with an indication of width and height for the word such that, when taken in combination, it may be possible to form a perimeter around the word. In another example, the associated coordinate information may be represented by two x coordinates and two y coordinates, which, when taken in combination may also form a perimeter around the word. It will be appreciated that the above examples are meant to merely be illustrative of possible word coordinate information and that any format of word coordinate information capable of conveying a perimeter within which a word is contained is anticipated by this disclosure.

Once the image has had an OCR process performed on it, process200may proceed to block212where the text to redact is identified in the word coordinate information generated by the OCR process, e.g., by redaction module102. In embodiments, this may involve a multi-pronged approach. A first prong may be to search the word coordinate information for instances of the exact text included in the redaction request. Another prong may be to utilize a Levenshtein distance algorithm to determine possible instances of the text to be redacted in the word coordinate information. A third prong may take into account characters that are commonly misinterpreted during the OCR process to determine possible instances of the text to be redacted.

The first prong may be accomplished by searching the word coordinate information for an exact match for the text to redact. This may be accomplished by utilizing any type of pattern matching algorithm. For instance, the search may begin by searching for a match for the first portion of the text. As an example, if the text is a phrase, the search may begin by searching the word coordinate information for the first word in the phrase. If the first word in the phrase is found, then the next word in the phrase may be compared against the next word in the word coordinate information. If one of the words in the word coordinate information does not match the corresponding word in the phrase then the search begins again searching for the first word in the phrase from the current point in the word coordinate information. This comparison may continue until all instances of the phrase to be redacted are found.

The second prong may begin in a similar manner to the first prong, by searching the word coordinate information for the text to redact. Again this may be accomplished by utilizing any pattern matching algorithm; however, instead of searching for exact matches for the text, the Levenshtein distance algorithm may be utilized to find text within a predetermined Levenshtein distance value from the text to be matched. The Levenshtein distance value may be considered the number of characters that need to be changed in one word to convert that word into another word. For example, the words “cat” and “hat” would each have a Levenshtein distance value of 1 from one another because in either case only a single letter needs to be changed to convert either word into the other.

By utilizing the Levenshtein distance algorithm it is possible to identify words that are within a predetermined error rate from the word being searched. For instance, if it is known that the OCR process being used has a certain error rate, that error rate may be able to be accounted for utilizing the Levenshtein distance algorithm. In other instances, the predetermined error rate may indicate an acceptable level of error for the given process. In some embodiments an acceptable Levenshtein distance value may be determined based on the total number of letters in the word or text to be matched. For example, the longer the word being analyzed, the greater the allowable Levenshtein distance value may be.

Utilizing the Levenshtein distance value, the process may again be performed based on a word-by-word analysis similar to that described in reference to the first prong. If the first word in the phrase is found within an acceptable Levenshtein distance value then the next word in the phrase may be compared to the next word in the word coordinate information. If one of the words in the word coordinate information does not match the corresponding word in the phrase within the acceptable Levenshtein distance value then the search begins again searching for the first word in the phrase from the current point in the word coordinate information. This comparison may continue until all instances of the phrase to be redacted are found.

The third prong may begin in a similar manner to the first and second prongs, by searching for the text to redact in the word coordinate information. Again this may be accomplished by utilizing any pattern matching algorithm; however, instead of searching for exact matches for the text, characters commonly misinterpreted by an OCR process may be ignored to find a match between the text to be redacted and the word coordinate information. As an example, consider the word “illegal,” the “i” and the three Ts may be commonly misinterpreted characters for an OCR process. As a result, in the word coordinate information, the word may be represented as “!∥ega1.” When searching for exact matches, this representation of the word illegal would be completely missed. However, if the commonly misinterpreted characters are ignored, the remaining letters of the word match exactly. Furthermore, prong two may have also missed this representation because the Levenshtein distance value would be four for a word with only seven characters, which would represent a greater than 50% error rate.

In some embodiments, the second and third prong may be combined. In such embodiments, a word within a first Levenshtein distance value of a word to be matched may be considered a possible match. Then the commonly misinterpreted characters may be applied to those letters in the word that do not match the corresponding letters to be matched and, for every commonly misinterpreted character in the word, the Levenshtein distance value may be reduced accordingly. If, after the commonly misinterpreted characters are considered, the Levenshtein distance value has been reduced to within an allowable threshold, then the word may be identified as the word to be matched. As a result, returning to the above example using “illegal” as the word to be matched, the word “!∥ega!” may have a Levenshtein distance value of four; however, when the commonly misinterpreted characters are considered, the Levenshtein distance value drops to zero, thus establishing a match for the word.

While the above discussion has generally discussed word by word comparisons to identify text to redact, this is merely for illustrative purposes and this disclosure should not be so limited. It will be appreciated that any other comparison methods may be utilized including anything from single character comparisons to comparing the entire text to be matched. Once one or more instances of text to redact have been identified, the word coordinate information associated with the specific occurrences may be stored to a repository, such as a table or database at block214. In some embodiments, the redaction information may be generated contemporaneously with the identification of the text to redact. In such embodiments, it may be unnecessary to store the word coordinate information for the identified instances of the text to redact and block214may be omitted.

After all occurrences of the text to be redacted have been identified and stored, the redaction information may be generated at block216. The redaction information may include coordinates of redaction boxes sufficient to cover the identified instances of the text to redact. In embodiments, the redaction information may be generated on a line-by-line basis by analyzing the word coordinate information associated with each instance of the text to redact and determining the words that are within a predetermined vertical variation from one another. For example, if the words are within a certain number of vertical pixels of each other then it may be determined that the words are on the same line. Once all of the words on the same line have been identified, the highest and lowest y-coordinates associated with the words on the current line may be determined to ensure the redaction covers the entire vertical component of the characters on that line. Then the left-most and right-most x coordinates associated with the words on the current line may be determined which may ensure that the redaction covers the entire horizontal component of the characters on that line. In embodiments, this may include punctuation and/or white space contained within the text to be redacted. From these four coordinates a redaction box may be formed that may cover the entirety of the current line. In some embodiments, additional padding may be added by expanding the x and y coordinates by a predetermined number of pixels to ensure the entirety of the text has been redacted. This process may be repeated for each line until all instances of the text to be redacted have associated redaction information.

In block218a determination may be made as to whether there are more documents to process in the redaction request, e.g., by redaction module102. If there are more documents to be processed the process may return to block204where the next document may be extracted and the process above may be repeated on the newly extracted document.

In embodiments, process200may be implemented in hardware and/or software. In hardware embodiments, process200may be implemented in application specific integrated circuits (ASIC), or programmable circuits, such as Field Programmable Gate Arrays, programmed with logic to practice process200. In a hardware/software implementation, process200may be implemented with software modules configured to be operated by the underlying processor. The software modules may be implemented in the native instructions of the underlying processor(s), or in higher level languages with compiler support to compile the high level instructions into the native instructions of the underlying processor(s). In various software implementations, the various prongs of processing described above may be implemented in multiple parallel execution threads.

FIG. 3depicts an illustrative configuration of a computing device300incorporated with the teachings of the present disclosure according to some embodiments. Computing device300may comprise processor(s)302, network interface card (NIC)304, storage306, containing redaction module308, and other I/O devices312. Processor(s)302, NIC304, storage306, and other I/O devices312may all be coupled together utilizing system bus310.

Processor(s)302may be comprised of one or more single core and/or one or more multi-core processors, or any combination thereof. In embodiments with multiple processors the processors may be of the same type, e.g., homogeneous, or they may be of differing types, e.g., heterogeneous. This disclosure is equally applicable regardless of type and/or number of processors.

In embodiments, NIC304may be used by computing device300to access a network. In embodiments, NIC304may be used to access a wired and/or wireless network; this disclosure is equally applicable. NIC304may also be referred to herein as a network adapter, LAN adapter, or wireless NIC which may be considered synonymous for purposes of this disclosure, unless the context clearly indicates otherwise; and thus, the terms may be used interchangeably. In embodiments, NIC304may be configured to receive the redaction request, discussed above in reference to block202ofFIG. 2, from a remote computer and may forward the request to redaction module308by way of system bus310.

In embodiments, storage306may be any type of computer-readable storage medium or any combination of differing types of computer-readable storage media. Storage306may include volatile and non-volatile/persistent storage. Volatile storage may include e.g., dynamic random access memory (DRAM). Non-volatile/persistent storage306may include, but is not limited to, a solid state drive (SSD), a magnetic or optical disk hard drive, flash memory, or any multiple or combination thereof.

In embodiments redaction module308, endowed with the logic to perform one or more operations earlier described with references toFIGS. 1 & 2, may be implemented as software, firmware, or any combination thereof. In various software embodiments, redaction module308may comprise one or more instructions that, when executed by processor(s)302, cause computing device300to perform the one or more operations earlier described with references toFIGS. 1 & 2.

Embodiments of the disclosure can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In various embodiments, software, may include, but is not limited to, firmware, resident software, microcode, and the like. Furthermore, the disclosure can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.

Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that a wide variety of alternate and/or equivalent implementations may be substituted for the specific embodiments shown and described, without departing from the scope of the embodiments of the disclosure. This application is intended to cover any adaptations or variations of the embodiments discussed herein. Therefore, it is manifestly intended that the embodiments of the disclosure be limited only by the claims and the equivalents thereof.