# Patent

## Title
Systems and methods for indexing and linking electronic documents

## Abstract

The present disclosure provides various systems and methods for indexing digital (electronic) documents. The systems and methods may utilize various software, hardware, and firmware modules to identify notations, such as sheet names, anchors, and anchor references on construction documents. The identified notations are indexed and used to create hyperlinked pages that are easily navigable. In some embodiments, the hyperlinked pages may include previous- and next-sheet hyperlinks that allow for direct navigation within a set of pages, according to an order provided in an index.

## Background
TECHNICAL FIELD
This disclosure relates to machine-readable text analysis and database indexing. More specifically, this disclosure provides various systems and methods for identifying internal cross-references within a set of electronic documents and indexing the same.



BRIEF DESCRIPTION OF THE DRAWINGS
Non-limiting and non-exhaustive embodiments of the disclosure are described herein, including various embodiments of the disclosure illustrated in the figures listed below.
FIG. 1 illustrates a flow chart of a method for indexing a plurality of pages that include various notations, including sheet name notations (sheet names), anchor notations (anchors), and anchor reference notations (anchor references).
FIG. 2 illustrates a flow chart of a method for filtering and messaging machine-readable text recognized using optical character recognition (OCR).
FIG. 3 illustrates a flow chart of a method for characterizing a sheet name notation as either a primary sheet name notation or a reference sheet name notation.
FIG. 4 illustrates a flow chart of a method for distinguishing between primary sheet name notations, reference sheet name notations, and anchor sheet name notations (i.e. sub parts of an anchor).
FIG. 5 illustrates a flow chart of a method for identifying an anchor based on the proximity of an anchor identifier to an anchor sheet name.
FIG. 6 illustrates a flow chart of a method for identifying an anchor reference based on the proximity of an anchor identifier to a reference sheet name.
FIG. 7 illustrates an example of a construction page that can be processed by the embodiments of the present disclosure.
FIG. 8 illustrates a close-up view of the anchor of FIG. 7.
FIGS. 9A-9D illustrate examples of portions of linked construction pages and navigation between them using hyperlinked notations.
FIG. 10 illustrates an example of a portion of a construction page with multiple versions of anchor references.
FIG. 11 illustrates an example of a portion of a construction page with an anchor.
FIG. 12 illustrates an example of the portion of the construction page of FIG. 11 with a back link associated with the anchor being selectively displayed.
FIG. 13 illustrates a close-up view of an anchor and an anchor description.
FIG. 14 illustrates a construction page with reference sheet names, an anchor reference, and a primary sheet name.
FIG. 15 illustrates a close-up view of one type of anchor, including an anchor identifier and a primary sheet name.
FIG. 16 illustrates a close-up view of an alternative type of anchor, including an anchor identifier and a primary sheet name.
FIG. 17 illustrates an example of a construction page including two anchors and no primary sheet name.
FIG. 18 illustrates an example of another type of anchor or anchor reference.
FIG. 19 illustrates a table of contents of a plurality of construction pages.
FIG. 20 illustrates a back link of an anchor showing all the primary sheet names that have an anchor reference referring to the anchor.
FIG. 21A illustrates an embodiment of a graphical user interface for indexing notations and/or internally linking notations within a plurality of pages.
FIG. 21B illustrates an OCR messaging tab of the embodiment of the graphical user interface of FIG. 21A.
FIG. 21C illustrates a sheet name whitelist tab of the embodiment of the graphical user interface of FIG. 21A.
FIG. 21D illustrates a building name whitelist tab of the embodiment of the graphical user interface of FIG. 21A.
FIG. 21E illustrates an index (table of contents) page whitelist tab of the embodiment of the graphical user interface of FIG. 21A.
FIG. 22A illustrates a graphical user interface of a system while indexing documents.
FIG. 22B illustrates a graphical user interface of a system while rendering linked documents.
FIG. 22C illustrates a report on the statistics of the indexed and rendered documents.
FIG. 23 illustrates another example of a table of contents page for a plurality of construction pages.
FIG. 24 illustrates one of the pages referred to by the table of contents page of FIG. 23.
FIG. 25 illustrates another one of the pages referred to by the table of contents page of FIG. 23.
FIG. 26 illustrates a close-up view of an anchor and a primary sheet name of one of the pages referred to by the table of contents page of FIG. 23.
FIG. 27 illustrates a system for indexing and linking electronic documents, according to one embodiment.



The described features, structures, and/or characteristics of the systems and methods described herein may be combined in any suitable manner in one or more alternative embodiments, and may differ from the illustrated embodiments.
DETAILED DESCRIPTION
The present disclosure provides various systems and methods for indexing digital (electronic) documents. The present disclosure also provides various systems and methods for generating electronically linked documents using the index. For clarity, the systems and methods are often described in terms of steps of a method and/or as actions performed by a computing system. However, the systems and methods described herein may be implemented in hardware, software, and/or firmware.
In various embodiments, an indexing system may receive a plurality of digital pages. The digital pages may be part of one or more electronic documents that have one digital page per document or multiple digital pages per document. In some embodiments, the digital pages may have machine-encoded text. For example, the digital pages may have been created in a word processor or other computer program that allows for machine-encoded text input.
In other embodiments, the digital pages may originate as scanned or image-based digital pages. Optical character recognition (OCR) and/or another image-text analysis technique may be utilized to generate digital pages with machine-encoded text. For instance, a computer processor may perform the OCR or a human may manually convert image-text to machine-encoded text. In some embodiments, a combination of computer processing and manual inputs may be performed.
The machine-encoded text of each of the digital documents may be analyzed to identify relevant notations. Although the systems and methods may be utilized and/or readily adapted for use with various document types and fields of interest, the remainder of the specification uses construction plan documents as an example. In that application, the indexing system may analyze the machine-encoded text to identify notations such as sheet names, anchors, anchor references, building names, etc.
Sheet names identified on the pages may be categorized into primary sheet names and reference sheet names. Each page of the documents may have a primary sheet name, although some primary sheet names may be blank primary sheet names, such as a table of contents page and/or index page. A page may include one or more anchors. Each anchor may reference a particular portion of the page and may include an anchor description. An anchor may include just an anchor identifier, in which case it is understood that the anchor refers to the page on which it is found. In other embodiments, an anchor may include an anchor identifier together with a reference to the sheet name of the page on which it is found. That is, the anchor may include a reference to the primary sheet name to clarify that the anchor is associated with the page on which it is found.
Additionally, a page may include one or more anchor references. An anchor reference may be directed to an anchor on another page. For example, an anchor reference may include an anchor identifier and a reference sheet name. The anchor identifier of the anchor reference is directed to an anchor on the page corresponding to the reference sheet name. In some embodiments, the construction documents may refer to more than one building. In that case each primary sheet name may be associated with one or more of the buildings.
After identifying the various notations, the indexing system may generate an index that maps various associations between the primary sheet names, reference sheet names, anchors, anchor references, and/or building names. An “index” may include various sub-indexes. An index may be implemented using any of a wide variety of data types, arrays, mappings, tags, and structs, and/or any of a wide variety of associated data structures.
The index may be used to generate various reports related to the indexed notations, such as the number of anchor references that reference a particular sheet name or the number of sheet names not referenced by any anchor reference. The index may also be used to generate a plurality of linked pages corresponding to the originally indexed pages. The linked pages may provide various hyperlinks and integrated reports. For example, the linked pages may include hyperlinks for each of the anchor references that, when selected, direct a user to the referenced sheet name and/or anchor.
In some embodiments, analyzing the machine-encoded text, categorizing, and/or otherwise identifying notations may incorporate the usage of one or more whitelists and/or regular expressions. The term “regular expression” as used herein may relate to any type of software, hardware, or firmware module configured to automatically identify textual material that corresponds to one or more patterns, including text-based and image-based patterns. The term “regular expression” may also be used as defined in any of a wide variety of programming languages, as would be understood by one of skill in the art.
Understanding that modules may be implemented in software, hardware, firmware, and/or a combination thereof, the system may include a notation identification module that identifies any of the various notations described herein. The system may include a categorization module that distinguishes between primary and reference sheet names. The system may also include an indexing module that indexes each of the plurality of pages and associates the notations with one another, as described herein.
Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrases “in one embodiment” and “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. In particular, an “embodiment” may be a system, an article of manufacture (such as a computer-readable storage medium), a method, and/or a product of a process.
Furthermore, the described features, operations, or characteristics may be combined in any suitable manner in one or more embodiments. The order of the steps or actions of the methods described in connection with the embodiments disclosed may be varied. Thus, any order in the drawings or Detailed Description is for illustrative purposes only and is not meant to imply a required order, unless otherwise specified.
Embodiments may include various features, which may be embodied in machine-executable instructions executed by a general-purpose or special-purpose computer (or other electronic device). Alternatively, the features may be performed by hardware components that include specific logic for performing the steps or by a combination of hardware, software, and/or firmware.
Accordingly, the various components, modules, systems, and/or features described herein may be embodied as modules within a system. Such a system may be implemented in software, firmware, hardware, and/or physical infrastructure. Although not always explicitly named herein, a module may be identified (named) based on a function it performs. For example, a module that is configured to display something may comprise specific hardware, software, or firmware and be properly referred to as a “display module.”
Embodiments may also be provided as a computer program product including a non-transitory machine-readable medium having stored thereon instructions that may be used to program, or be executed on, a computer (or other electronic device) to perform processes described herein. The machine-readable medium may include, but is not limited to, hard drives, floppy diskettes, optical disks, CD-ROMs, DVD-ROMs, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, solid-state memory devices, or other types of media/machine-readable media suitable for storing electronic instructions. Moreover, a computer program product may be run, executed, downloaded, and/or otherwise used locally or remotely via a network.
The embodiments of the disclosure will be best understood by reference to the drawings, wherein like elements are designated by like numerals throughout. In the following description, numerous specific details are provided for a thorough understanding of the embodiments described herein. However, those of skill in the art will recognize that one or more of the specific details may be omitted, or other methods, components, or materials may be used. In some cases, operations are not shown or described in detail.
FIG. 1 illustrates a flow chart of a method 100 for receiving a plurality of pages and indexing various notations, including sheet names, anchors, and anchor references. A system, such as a computing system comprising hardware, firmware, and/or software, may receive a plurality of digital pages, at 110. The system may receive the digital pages as a set of individual documents or files. Alternatively, the system may receive the digital pages as a single document or file having any number of pages.
In some embodiments, the digital pages may already include machine-encoded text. In other embodiments, optical character recognition (OCR) may be used to generate corresponding digital pages with machine-encoded text thereon, at 120. Alternatively, machine-encoded text that corresponds to text images on the original digital pages may be manually provided. The system may then analyze the machine-encoded text on each of the digital pages to identify one or more types of notations, at 130. For example, the system may analyze the machine-encoded text to identify primary sheet names, reference sheet names, anchors, anchor references, and/or building names.
In some embodiments, the system may identify sheet names and then process the sheet names for categorization and subsequent indexing, at 140. That is, each sheet name may be categorized as either a primary sheet name of a page or a reference sheet name that refers to the primary sheet name of another page. Additionally, identified anchors and/or anchor references may be processed and/or analyzed for indexing, at 150 and 160.
The system may generate an index that associates one or more of the sheet names (including primary and reference sheet names), anchors, and/or anchor references, at 170. For example, the index may associate a primary sheet name notation with each of the plurality of digital pages, and associate each reference sheet name notation with the primary sheet name notation on the page on which it is identified.
FIG. 2 illustrates a flow chart of a method 200 for filtering and messaging machine-readable text recognized using optical character recognition (OCR). As illustrated, a system may receive a document, such as a document in the portable document format (PDF), at 210. The document may include one or more pages and may include image-based text (e.g., handwritten, typewritten, printed, or other non-machine-encoded text). The document may or may not also include some machine-encoded text. The system may then perform OCR processing, at 220, to generate machine-encoded text corresponding to the image-based text on the received document.
The system may then process the machine-encoded text using one or more OCR filtering algorithms, at 230, to improve the accuracy of the OCR processing. As part of the OCR filtering or in addition to the OCR filtering, the system may compare the machine-encoded text generated by the OCR processing with a message whitelist, at 250. The message whitelist may include a mapping of incorrect portions of text (e.g., a letter, symbol, word, or phrase) with corrected versions. For example, if a portion of the machine-encoded text is matched with an element in the message whitelist, the portion of the machine-encoded text may be replaced with a corrected version, at 260. As a specific example, a message whitelist may map the word “colour” with a replacement word “color.” Accordingly, the word “colour” may be replaced with the word “color” throughout the machine-encoded text on the document.
FIG. 3 illustrates a flow chart of a method 300 for characterizing a sheet name as either a primary sheet name or a reference sheet name. In some embodiments, the system may initially identify a sheet name as either a primary sheet name or a reference sheet name. Alternatively, the system may identify a sheet name in general, at 305. If the identified sheet name follows a primary sheet name definition (e.g., matched a whitelist or satisfies a regular expression), at 310, the system may identify the sheet name as a primary sheet name, at 315. However, if the sheet name notation does not follow the primary sheet name definition, at 310, the system may identify the sheet name as a reference sheet name, at 325. In some embodiments, if the sheet name is a primary sheet name, at 315, the system may determine if a building name is present, at 320, and identify the building name associated with the sheet name, at 330.
FIG. 4 illustrates a flow chart of another method 400 for distinguishing between primary sheet names, reference sheet names, and anchor sheet names that are part of an anchor. Initially, the system may identify an uncategorized sheet name. If a primary sheet name has not yet been identified for the page, at 410, and the uncategorized sheet name follows a primary sheet name definition, at 420, then the uncategorized sheet name may be categorized as a primary sheet name, at 440. If no primary sheet name has been identified, at 410, and the uncategorized sheet name does not follow the primary sheet name definition, at 420, the uncategorized sheet name may be identified as a reference sheet name, at 450.
If a primary sheet name has already been identified for the page, at 410, and the uncategorized sheet name does not match the primary sheet name, at 430, the uncategorized sheet name may be identified as a reference sheet name, at 450. If a primary sheet name has already been identified for the page, at 410, and the uncategorized sheet name matches the primary sheet name, at 430, the uncategorized sheet name may be identified as an anchor sheet name, at 460.
As described above, an anchor reference may refer to an anchor on another page. The anchor reference may include an anchor identifier and a reference sheet name, at 450. An anchor may include an anchor identifier and/or an anchor identifier coupled with a reference to the primary sheet name (an anchor sheet name).
FIG. 5 illustrates a flow chart of a method 500 for identifying an anchor based on the proximity of an anchor identifier to an anchor sheet name. If an anchor sheet name (i.e., a reference to the primary sheet name of the page on which the reference is located) has an anchor identifier nearby, at 510, then an anchor is identified, at 520. If no anchor identifier is within a specified distance of the anchor sheet name, at 510, then the process ends without an anchor being identified. Once an anchor is identified, at 520, if there is text within a specified range of the anchor, at 530, an anchor description may be associated with the anchor, at 540.
FIG. 6 illustrates a flow chart of a method 600 for identifying an anchor reference based on the proximity of an anchor identifier to a reference sheet name. In some embodiments, an anchor reference may only be identified if an anchor identifier is within a specific distance, at 610, and/or in a particular direction relative to a reference sheet name, at 620 and 630. Otherwise, the identified anchor identifier may not be an anchor reference, at 650. An anchor reference may be identified and associated with the primary sheet name on which it is found, the anchor to which it refers, the page to which it refers, and/or the primary sheet name to which it refers, at 640.
In each of FIGS. 1-6, methods are described that identify a notation within machine-encoded text. The notations may be identified and/or categorized using a whitelist of one or more notations, by satisfying predefined criteria, by matching a predefined specification, and/or through the use of a regular expression. Although numerous variations are possible, the following is an example of a regular expression that may be used to identify a sheet name:















public static readonly Regex SheetRegex = new Regex(@“







{circumflex over ( )}


(?<sheetName>









(?<normalSheetName>









[a-zA-Z]{1,3}



[ ]?



(?<badDash>“”)?



([\\.-]?[0-9]){1,6}



([\\.-]?[a-zA-Z])?[a-zA-Z]{0,3}







)









|



(?<coverSheet>









[cC][sS][1-9]









)







)


$









”, RegexOptions.Compiled |



RegexOptions.IgnorePatternWhitespace |







RegexOptions.ExplicitCapture);









It will be appreciated by one of skill in the art that regular expressions similar to the example above may be used to identify or categorize building names, anchors, anchor references, and/or other notations on one or more pages.
FIG. 7 illustrates an example of a construction page 700 that includes a primary sheet name 710 and an anchor 715. The anchor 715 may be associated with an anchor identifier, an anchor description 730, and detail, elevation, section, or other image data 720 on the page 700. The page 700 may include additional image-based text, machine-encoded text, images, and/or other information, such as ownership information 740.
FIG. 8 illustrates a close-up view of an anchor 810 corresponding to the anchor 710 of FIG. 7. The anchor 810 on the page 800 may include an anchor identifier 812 and/or 815 and an anchor description 830. The anchor 810 may be identified using a regular expression or other pattern matching algorithm.
FIGS. 9A-9D illustrate examples of portions of three linked construction pages 900, 901, and 902. As previously described, the system may identify and index various notations on a plurality of pages, including primary sheet names, reference sheet names, anchor references, anchors, and possibly other notations. The index may map various relationships between each of the notations. The index may then be used to generate one or more linked pages, such as linked pages 900, 901, and 902.
As illustrated, the first linked page 900 of FIG. 9A may include a table of contents 910 of various reference sheet names that refer to primary sheet names of other pages. Selecting a reference sheet name from the table of contents 910, such as reference sheet name A-115, with a cursor (or other selection implement/method) may direct an operator to the page 901 of FIG. 9B with the corresponding primary sheet name A-115, at 921. Accordingly, each reference sheet name in the table of contents 910 may be a hyperlink that opens the hyperlinked page and/or navigates to the correct page within a document of multiple pages.
The second linked page 901 of FIG. 9B shows an anchor reference 920. The anchor reference 920 may refer to a particular anchor on another page and the primary sheet name of that other page. Accordingly, anchor reference 920 may include an anchor identifier (shown as the number 3) and a reference sheet name reference to the primary sheet name A-301 of the other page. Selecting the anchor identifier of the anchor reference 920 may direct a user to a zoomed-in view of the corresponding anchor 930 on the page 902 of FIG. 9C associated with the primary sheet name A-301, at 931. Selecting the reference sheet name of the anchor reference 920 may direct a user to a zoomed-out view of the page associated with the primary sheet name A-301.
In FIG. 9C, the third linked page 902 includes A-301 as a primary sheet name 931, and an anchor 930 that refers to some image content or other detail, elevation, or section of the page 902. The anchor 930 may include an anchor identifier (3) and a sheet name that is the same as the primary sheet name 931 of the page 902 on which the anchor is found. In some embodiments, by clicking, right-clicking, mousing-over, and/or otherwise selecting or partially selecting the anchor 930 (or other notation), a user may display a back link pop-up window 950 that displays a listing of primary sheet names that reference the anchor 930, as shown in FIG. 9D. Similarly, a back link pop-up window may be available for other notations and may include a listing of sheet names, anchors, and/or anchor references associated with a selected notation.
FIG. 10 illustrates an example of a portion of a construction page 1000 with multiple versions of anchor references 1010, 1020, 1025, and 1030, and an anchor 1015. As illustrated, each of the anchor references refers to an anchor (identified by one or more anchor identifiers) on another page (identified by a reference sheet name).
FIG. 11 illustrates an example of a portion of a construction page 1100 with an anchor 1110 associated with an image 1120 that provides various details relating to a construction project. As previously described, the system may identify and index the anchor reference 1110 and distinguish it from other machine-encoded text, image-based text and/or image content. The various systems and methods described above may be used to identify and/or index any of the various notations described in any of the figures discussed herein.
FIG. 12 illustrates an example of a portion of a construction page similar to the construction page illustrated in FIG. 11, but with a back link 1215 associated with the anchor 1210 being selectively displayed. The back link 1215 may provide a listing of primary sheet names that correspond to pages that have an anchor reference that refer to the anchor 1210. In some embodiments, each of the primary sheet names in the back link 1215 may be hyperlinks directed to the page corresponding to the respective primary sheet names. In some embodiments, the hyperlinks may automatically navigate a user to the hyperlinked page within a document having multiple pages. In other embodiments, the hyperlinks may automatically open a separate file that has the hyperlinked page.
FIG. 13 illustrates a close-up view of another embodiment of an anchor 1320 and an anchor description 1310. The illustrated anchor 1320 does not include a reference to the primary sheet name on which it is found. As described above, the system may be configured to identify and index anchors in various forms and styles using a regular expression or other processing and/or analyzing technique.
FIG. 14 illustrates a construction page 1400 with reference sheet names 1420 within a keynotes box, an anchor reference 1415, and a primary sheet name 1410. The system, using the various methods described herein, may be configured to identify each of the reference sheet names 1420, the primary sheet name 1410 of the page, and the anchor reference 1415. The anchor reference 1415 may refer to an anchor identifier (2) on a different page that is associated with a primary sheet name (A427). The index may associate the primary sheet name 1410 with the page 1400 and each reference sheet name 1420 with the primary sheet name for the page on which it is identified and/or the pages to which it refers.
FIG. 15 illustrates a close-up view of one type of anchor 1510 on a page 1500. As illustrated, the anchor 1510 may include an anchor identifier 1515 (4) and a reference to the primary sheet name 1517 (A7.14) of the page 1500 on which the anchor 1510 is located.
FIG. 16 illustrates a close-up view of an alternative type of an anchor 1610 on a page 1600. As illustrated, the anchor 1610 may include an anchor identifier 1615 (2) and a reference to the primary sheet name 1617 (A408) of the page 1600 on which the anchor 1610 is located. The anchor 1610 may include an anchor description 1620 as well.
FIG. 17 illustrates an example of a construction page 1700 including two anchors 1710 and 1720, and a blank primary sheet name. As in previous embodiments, each anchor 1710 and 1720 may refer to a non-text item useful for construction.
FIG. 18 illustrates an example of another type of anchor or anchor reference 1810 on a page 1800. As in previous embodiments, the anchor reference 1810 may include an anchor identifier 1817 (8) and a reference sheet name 1812 (A7.14). As may be appreciated by comparing the various styles of anchors and anchor references, complex regular expressions and/or other pattern matching algorithms may be used to identify and index each of the various types of notations within a plurality of pages.
FIG. 19 illustrates a table of contents 1900 that includes references to a plurality of construction pages. The table of contents 1900 may have a blank primary sheet name. The table of contents may have any number of reference sheet names 1910, 1920, and 1930 arranged in various columns and/or rows. In some embodiments, the system may recognize and identify a table of contents 1900 based on characteristics associated with the columns and rows of reference sheet names 1910, 1920, and 1930. Each of the reference sheet names 1910, 1920, and 1930 may be hyperlinked to a corresponding page. According to various embodiments, the system may identify the table of contents 1900 using a whitelist of a file name associated with the page, using a page number of a document associated with the page, in response to a manual input, using a regular expression, and/or using a pattern recognizing software module.
FIG. 20 illustrates another example of a back link 2010 of an anchor 2020 showing all the primary sheet names that have one or more anchor references that refer to the anchor 2020. According to various embodiments, each primary sheet name listed in the back link 2010 may be a hyperlink to a page corresponding to the primary sheet name. The back link may be selectively viewed by selecting the anchor 2020 in general, the anchor identifier 2025, and/or a primary sheet reference in the bottom half of the circle (not illustrated). As in previous embodiments, the anchor 2020 may be associated with an anchor description 2030 within the index. A system may index the notations in each of the pages in a plurality of pages, as described herein, and use the associations between the various notations to generate the back link 2010 illustrated on page 2000.
FIG. 21A illustrates an embodiment of a graphical user interface 2100 for a system for indexing notations and/or internally linking notations within a plurality of pages. The system may be configured with one or more modules that may execute on a computing device (e.g., a general-purpose or special-purpose computer). The modules may interact with one or more hardware and/or firmware modules. The interface receives one or more documents containing one or more pages, at 2110. Various settings may be adjusted using a plurality of tabs 2120. FIG. 21A illustrates a general link tab 2125 that allows for various options, such as rotation settings, cache settings, and/or specific requirements for identifying sheet names, anchors, and/or anchor references. The interface may also include various reporting and/or output options 2127.
In some embodiments, the system may generate an index of pages, primary sheet names, reference sheet names, anchors, and/or anchor references. The index generated by the system may include one or more associations between each of the notations and/or pages. The system may also include various rendering options 2129 for generating linked pages (e.g., hyperlinked PDF pages/documents). As illustrated, the rendering options 2129 may include, for example, previous-page and next-page hyperlinks on one or more of the pages. The previous-page and next-page hyperlinks may be directed to previous and next pages, respectively, according to an order of pages listed on a table of contents page (also known as an index page). The system may be executed by selecting the “Generate Linked PDFs” button 2150. In various embodiments, other file types besides PDFs are possible and a user may select a desired output file type.
FIG. 21B illustrates an OCR messaging tab 2130 of the embodiment of the graphical user interface 2100 of FIG. 21A. The OCR messaging tab 2130 may include a mapping of text (a letter, symbol, word, phrase, etc.) with corrected versions. For example, if a portion (e.g., a letter, symbol, word, or phrase) of the machine-encoded text is matched with an element in the listed mapping, that portion of the machine-encoded text may be replaced.
As illustrated, for example, any text matching “E6.01b” would be replaced with “E06.01b.” The OCR messaging tab 2130 may allow for various common errors or anomalous errors to be automatically corrected throughout a plurality of documents during the identification and indexing of the notations. The OCR messaging tab 2130 may also allow for changes to be made to various portions of the text, even if they are not erroneous. For example, the primary sheet names of a set of documents may be revised automatically using the OCR messaging tab 2130.
FIG. 21C illustrates a sheet name whitelist tab 2135 of the embodiment of the graphical user interface 2100 of FIG. 21A. The sheet name whitelist tab 2135 may include a list of primary and/or reference sheet names that the system should automatically identify and index as primary and/or sheet names, respectively, even if a regular expression or other pattern recognizing software module does not identify them as sheet names.
Similarly, FIG. 21D illustrates a building name whitelist tab 2137 of the embodiment of the graphical user interface 2100 of FIG. 21A. The building name whitelist tab 2137 may include a list of building names that the system should automatically identify and index as building names, even if a regular expression or other pattern recognizing software module does not identify those portions of machine-encoded text as building names.
FIG. 21E illustrates a table of contents page whitelist tab 2139 of the embodiment of the graphical user interface 2100 of FIG. 21A. The table of contents page whitelist tab 2139 may include a list of table of contents pages that the system should automatically identify and index as table of contents pages, even if a regular expression or other pattern recognizing software module does not identify the pages as table of contents pages. The table of contents pages may or may not include primary sheet names. In various embodiments, the index pages may be assigned a blank or hidden primary sheet name.
In some embodiments, the system may identify a primary sheet name for each page of a plurality of pages. However, the primary sheet name associated with one or more index pages of the plurality of pages may not be originally part of the pages received by the system. Rather, the system may distinguish between index pages (and possibly other pages without primary sheet names) by assigning (or using existing) unique identification information for indexing purposes. Thus, while many pages of a plurality of pages may include an explicit primary sheet name, index pages may or may not include a primary sheet name and may instead include a blank primary sheet name and/or be otherwise uniquely identified within the index, which unique identification is referred to herein as a primary sheet name for simplicity.
FIG. 22A illustrates a graphical user interface 2200 of a graphical user interface while indexing documents. As illustrated, one or more progressing 2235 and/or status 2240 bars may indicate a current progress of an identifying and/or indexing process. According to various embodiments, the graphical user interface 2200 may include various steps, including an indexing step 2210, a rendering step 2220, and a summary display 2230.
FIG. 22B illustrates the graphical user interface 2200 of the graphical user interface while rendering linked documents, at 2220. Various status and progress bars 2237, 2242, and 2250 may provide information to a user who is waiting for the system to generate linked pages using the index generated during the step illustrated in FIG. 22A. In some embodiments, the linked pages generated by the system correspond exactly to the original pages received by the system, except that the notations, including the primary sheet names, reference sheet names, anchors, and/or anchor references, may be hyperlinks to the pages and/or notations to which they refer. Additionally, next-page and previous-page links and/or back link information may be generated for each page as well.
In other embodiments, each of the linked pages generated by the graphical user interface may be saved as a unique file, even if the pages originally received by the system were provided in one or more documents with multiple pages. In addition, the unique files for each of the linked pages may be saved with a file name corresponding to a primary sheet name and/or building name. Moreover, the files for each of the linked pages may be organized within a database in an order corresponding to an order on an index or table of contents page.
FIG. 22C illustrates a report 2260 on the statistics of the indexed and rendered documents in the summary display 2230. The report may include statistical information, such as the number of files created and the number of links generated.
FIG. 23 illustrates another example of a table of contents page 2310 for a plurality of construction pages. As illustrated the table of contents page 2310 lists the primary sheet names of at least some of a plurality of pages as reference sheet names 2321-2326 on the table of contents page 2310. In the illustrated embodiment, the table of contents page 2310 includes a primary reference sheet 2315. According to various embodiments, a system may analyze the table of contents page 2310 and identify and index notations, such as the reference sheet names 2321-2326, and distinguish them from other machine-encoded text, descriptions, image-based text, stray lines, images, and/or other content on the table of contents page 2310.
The system may generate a corresponding linked page that appears similar or identical to the originally received table of contents page 2310. The linked page may include hyperlinks associated with each of the reference sheet names 2321-2326. Selecting a hyperlink associated with one of the reference sheet names 2321-2326 may direct a user to the page corresponding to the primary sheet name referenced by the reference sheet name 2321-2326. For example, selecting the reference sheet name (A8-04A) may automatically navigate the user to and/or open a page 2400 illustrated in FIG. 24.
FIG. 24 illustrates the page 2400 with a primary sheet name 2410 (A8-04A). The page 2400 may include one or more anchors and/or anchor references 2430 and 2440. The anchor 2440 may be associated with an anchor description 2445. In the illustrated embodiment, back link information 2420 associated with the primary sheet name is selectively displayed at 2415, such as when moused-over, clicked on with a pointing device, and/or touched on a touch screen device. The back link information 2420 may include a listing of anchors, anchor references, and/or other pages that reference the primary sheet name 2410.
FIG. 25 illustrates a linked page 2500 that is referred to by the table of contents page 2300 of FIG. 23. As illustrated, the linked page 2500 includes a primary sheet name 2530 (A2.10). The page 2500 includes various anchor references 2540-2543. Each anchor reference refers to an anchor by including an anchor identifier and the primary sheet name of the sheet on which the associated anchor is found. In some embodiments, by selecting an anchor reference at 2550, back link information 2560 showing which other pages have a similar or identical reference anchor is displayed.
Additionally, the linked page 2500 may include next-sheet and previous-sheet hyperlinks 2510, 2520 that will navigate a user and/or open the appropriate files according to the order illustrated in the table of contents page 2300 of FIG. 23. Thus, using page 2500 as an example, selecting the previous-sheet hyperlink 2520 would navigate the user to and/or open a file that has a page associated with the primary sheet name A2.00. Similarly, selecting the next-sheet hyperlink 2510 would navigate the user to and/or open a file that has a page associated with the primary sheet name A8-04A (i.e., page 2400 of FIG. 24).
Each of the anchor references 2540-2543 may include an anchor identifier and a reference sheet name. Each anchor reference 2540-2543 may comprise one or more hyperlinks associated with at least the page that has the primary sheet name referenced by the reference sheet name of each of the anchor references. Similarly, the anchor identifier may be a hyperlink that directs a user directly to a zoomed-in view of the anchor on the page associated with the primary sheet name referenced by the reference sheet name. In the illustrated embodiment, each of the anchor references 2540-2543 refers to an anchor (either A1 or E1) on the page associated with the primary sheet name A6.11.
FIG. 26 illustrates a close-up view of an anchor 2620 (A1) on the page associated with a primary sheet name 2630 (A6.11). The anchor 2620 may be a section anchor, as described in the anchor description 2610.
FIG. 27 illustrates a system 2710 for indexing and/or generating linked pages, as described herein. As previously described, each of the various modules may be implemented in software, hardware, firmware, and/or a combination thereof. Moreover, the computing device 2710 may comprise any number of disparate computing devices.
As illustrated, the computing system 2710 may include a processor 2730 and/or a memory 2732 for interfacing with each of the various modules 2741-2746. The computing device 2710 may include a receiving module 2741 configured to receive one or more digital pages. The computing device 2710 may include a notation identification module 2742 configured to identify any of the various notations described herein, including sheet names, anchors, and anchor references. The computing device 2710 may include a categorization module 2743 configured to categorize each of the identified sheet name notations as either primary sheet name notations or reference sheet name notations. The computing device 2710 may include an indexing module 2744 configured to generate an index that associates various identified notations with one another. For example, an indexing module may generate an index that associates a primary sheet name notation with each of the plurality of digital pages, associates each reference sheet name notation with the primary sheet name notation on which it is identified, associates each anchor notation with a primary sheet name notation, and/or associates each anchor reference notation with the anchor notation and primary sheet notation to which it refers.
The computing device 2710 may include a whitelist module 2745 configured to identify one or more of the various notations described herein by comparing at least a portion of the machine-encoded text with one or more of a whitelist of primary sheet name, a whitelist of reference sheet names, a whitelist of anchors, and/or a whitelist of anchor references. The computing device 2710 may include a page generation module configured to generate a plurality of linked pages using the indexed notations, as described herein. In some embodiments, a user may interact directly with the computing device 2710. In other embodiments, the computing device(s) 2710 may be accessed remotely. For example, a client device 2750 may interact with the computing device(s) 2710.
Many changes may be made to the details of the above-described embodiments without departing from the underlying principles and scope of the present disclosure. Accordingly, the scope of the presently described systems and methods should be determined by the following claims.

## Claims

1. A computer-implemented method comprising:
receiving, at a computing device, a plurality of digital pages having machine-encoded text, wherein the machine-encoded text includes a plurality of notations, including primary sheet name notations, reference sheet name notations, anchor notations, and anchor reference notations, wherein each of the plurality of digital pages includes at least one notation;
identifying, by the computing device, sheet name notations on the plurality of digital pages;
categorizing each of the identified sheet name notations as one of a primary sheet name notation and a reference sheet name notation, wherein at least one of the plurality of digital pages includes at least one reference sheet name notation, and
wherein each reference sheet name notation refers to a primary sheet name notation on another of the plurality of digital pages;
identifying anchor notations on the plurality of digital pages, wherein each anchor notation is associated with at least a section of the page on which it is identified;
identifying anchor reference notations on the plurality of digital pages, wherein each anchor reference notation includes (1) a reference sheet name notation and (2) a reference to an anchor notation on the page corresponding to the primary sheet name notation referred to by the reference sheet name notation; and
generating an index that:
associates each identified primary sheet name notation with one of the plurality of digital pages,
associates each reference sheet name notation with the primary sheet name notation on which it is identified,
associates each anchor notation with a primary sheet name notation, and
associates each anchor reference notation with the anchor notation and primary sheet notation to which it refers;

generating a first linked page corresponding to one of the received digital pages, wherein the first linked page includes an anchor notation and a primary sheet name notation; and
generating a second linked page corresponding to one of the received digital pages, wherein the second linked page includes an anchor reference notation, the anchor reference notation associated within the index with the anchor notation and the primary sheet name notation of the first linked page within the index, and
wherein the anchor reference notation of the second linked page comprises one or more hyperlinks directed to at least one of the primary sheet name notation and the anchor notation of the first linked page.

2. The method of claim 1, wherein identifying each of the primary sheet name notations, reference sheet name notations, anchor notations, and anchor reference notations comprises using one or more regular expressions.

3. The method of claim 1 further comprising:
identifying at least one building name notation associated with at least one indexed primary sheet name notation; and
associating the at least one building name notation with the at least one indexed primary sheet name notation within the index.

4. The method of claim 1, further comprising:
generating a report of the index that includes one or more of: a report of indexed anchor reference notations that refer to an anchor notation that is not in the index, a report of indexed anchor references that refer to a primary sheet name notation that is not in the index, and a report of reference sheet name notations that refer to a primary sheet name notation that is not in the index.

5. The method of claim 1, wherein identifying each of the primary sheet name notations, reference sheet name notations, anchor notations, and anchor reference notations is at least partially performed by:
comparing at least a portion of the machine-encoded text with at least one whitelist including one or more of whitelisted primary sheet names, whitelisted reference sheet names, whitelisted anchors, and whitelisted anchor references.

6. The method of claim 1, further comprising:
generating a plurality of linked pages, wherein each of the linked pages corresponds to one of the received digital pages;
providing a hyperlink for each reference sheet name notation to the associated primary sheet notation within the index; and
providing at least one hyperlink for each anchor reference notation, the hyperlink directed to at least one of the associated primary sheet name notation and the associated anchor notation within the index.

7. The method of claim 6, wherein at least one of the linked pages comprises a table of contents page with an ordered listing of reference sheet name notations each associated with a primary sheet name of one of the plurality of digital pages within the index,
wherein each of the plurality of linked pages includes a next-page hyperlink directed to a subsequent linked page on the table of contents page according to the ordered listing of reference sheet name notations, and
wherein each of the plurality of linked pages includes a previous-page hyperlink directed to a preceding linked page on the table of contents page according to the ordered listing of reference sheet name notations.

8. The method of claim 6, further comprising:
associating selectively viewable back link information with at least one of the hyperlinked notations,
wherein the back link information associated with each hyperlinked notation comprises a report of linked pages, listed by primary sheet name notations, that reference the hyperlinked notation.

9. The method of claim 8, wherein each of the listed primary sheet name notations within the report comprises a hyperlink to the page associated with the primary sheet name notation within the index.

10. The method of claim 1, wherein each anchor notation comprises one of a detail anchor notation, an elevation anchor notation, and a section anchor notation.

11. The method of claim 1, wherein at least one anchor notation comprises an elevation callout detail.

12. A non-transitory computer readable storage medium storing instructions that, when executed by a processor, are configured to cause the processor to perform operations for indexing digital pages, the operations comprising:
receiving a plurality of digital pages having machine-encoded text, wherein the machine-encoded text of the plurality of digital pages includes a plurality of notations, including primary sheet name notations, reference sheet name notations, anchor notations, and anchor reference notations, wherein each of the plurality of digital pages includes at least one notation;
identifying sheet name notations on the plurality of digital pages;
categorizing each of the identified sheet name notations as one of a primary sheet name notation and a reference sheet name notation, wherein at least one of the plurality of digital pages includes at least one reference sheet name notation, and wherein each reference sheet name notation refers to a primary sheet name notation on another of the plurality of digital pages;
identifying anchor notations on the plurality of digital pages, wherein each anchor notation is associated with an adjacent section of a page;
identifying anchor reference notations on the plurality of digital pages, wherein each anchor reference notation includes (1) a reference sheet name notation and (2) a reference to an anchor notation on the page corresponding to the primary sheet name notation referred to by the reference sheet name notation; and
generating an index that:
associates each identified primary sheet name notation with one of the plurality of digital pages,
associates each reference sheet name notation with the primary sheet name notation to which it refers,
associates each anchor notation with a primary sheet name notation, and
associates each anchor reference notation with the anchor notation and primary sheet notation on which it is identified;

generating a first linked page corresponding to one of the received digital pages, wherein the first linked page includes an anchor notation and a primary sheet name notation; and
generating a second linked page corresponding to one of the received digital pages, wherein the second linked page includes an anchor reference notation, the anchor reference notation associated with the anchor notation and the primary sheet name notation of the first linked page within the index, and
wherein the anchor reference notation of the second linked page comprises one or more hyperlinks directed to at least one of the primary sheet name notation and the anchor notation of the first linked page.

13. The computer readable medium of claim 12, wherein the operations further comprise:
comparing at least a portion of the machine-encoded text with a whitelist of building names to identify building name notations on the plurality of digital pages that match a whitelisted building name; and
associating the building name notations with one of a corresponding primary sheet name notation and a reference sheet name notation within the index.

14. The computer readable medium of claim 12, wherein at least one anchor notation comprises an elevation callout detail.