Online or “cloud” storage is a popular and easy way for computer users to store electronic media without the need to physically connect to a storage device. For example, it is common for a user to capture digital photographs and videos on a smart phone, and to store the captured media items in the “cloud.” Furthermore, users frequently utilize online storage for storing more than digital photographs and videos. For instance, users often utilize online storage to save electronic document files (e.g., word processor files, spreadsheet files, and/or other electronic files).
In addition to saving digital photos, digital videos, and electronic document files to online storage, in many cases a user wishes to save physical documents (e.g., paper receipts, invoices, pay stubs, bills, reports, and so forth) to online storage. Unlike digital photographs, videos, and other electronic files that are in a digital format, in order to eventually save a physical document to online storage, the physical document must first be digitized (i.e., changed from a physical object to digital data. Conventional systems have several disadvantages when attempting to digitize a physical document to save on an online storage system.
One disadvantage is that conventional systems often need multiple acts and various hardware devices. To illustrate, in some conventional systems, a user utilizes a flatbed scanner to digitize a physical document. Conventional systems that use a flatbed scanner have several disadvantages. First, in utilizing a flatbed scanner, the user often must store physical documents until being able to access a flatbed scanner (e.g., at an office). Furthermore, the user has to scan the physical documents, save the scanned document to the user's local computer device, and then upload the scanned document to online storage. The flatbed process of scanning, saving, and uploading documents is frustrating for users.
Due to the disadvantages of using a flatbed scanner, some users take a digital photo of a physical document they wish to store digitally, and upload the digital photo to online storage. Various problems exist, however, with this conventional approach to storing physical documents. For example, a digital photo in a picture file format (e.g., JPEG, GIF) is typically a much larger data file compared to file formats for electronic documents. Thus, physical documents that are digitized in a picture file format use excessive storage resources that can result in limited available storage space. Moreover, because larger data files take longer to download from an online storage system, storing physical documents in a picture file format typically results in longer file access times (e.g., the amount of time for a client device to access a file on the online storage). In addition, picture file formats are often not compatible with document applications within which the physical document is intended to be used, such as accounting applications, electronic document applications, and so forth.
While some conventional systems are able to convert a digital photo to a document file format, traditional file converters use significant amounts of processor resources to make the conversion. Due to the significant use of processor resources, many file converters need more processor power than is available on a typical mobile device. Due to the processor intensive process of converting a digital photo in a picture file format to a document file format, a user can first download a digital photo of the physical document to a non-mobile computing device (e.g., desktop or laptop computer) that has adequate processor power. Thus, conventional file conversion systems often require significant processing resources not available on many mobile devices.
As another disadvantage, conventional systems that save a digital photo of a physical document often result in a poor-quality representation of the physical document. For example, when taking a photo of a physical document with a mobile phone camera, a user often holds the camera at an angle with respect to the physical document. Thus, the document in the resulting photo appears skewed. In addition, with conventional systems, the user may hold the camera too close to the physical document or too far away from the physical document, which may result in not capturing portions of a physical document, or capturing portions of a physical document that are unreadable.
In addition to the above-referenced quality issues, conventional systems often generate representations of documents that include shadows, glares, or other forms of non-uniformities that are typically not present in most physical documents. For example, a white sheet of paper is uniformly white across the entire sheet, but due to lighting, the position of the camera, and other factors, conventional systems generate a representation of the white sheet that includes dark spots in one or more portions of the white sheet. These types of non-uniformities not only decrease the aesthetic of the document, but they also affect the readability and clarity of information (e.g., text) included within a shadow portion a document.
Moreover, conventional systems often capture an image of a physical document, where the image not only includes a representation of the physical document, but also includes background objects. For example, a user can take a digital photo of a physical document that results in capturing not only an image of the physical document, but also captures a table surface on which the physical document rests. Many conventional systems are not able remove the background objects, thus resulting in a representation of a physical document that includes distracting backgrounds or objects not part of the physical document.
One or more embodiments of this disclosure solve one or more of the foregoing or other problems in the art by providing systems and methods for converting a displayed document within a digital image to an electronic document format. For instance, the systems and methods convert a representation of a real-world physical document portrayed within a digital photo to a portable document format (i.e., PDF). In some examples, the systems and methods generate an enhanced document image of a displayed document within a digital image by performing enhancement processes to correct visual flaws of the displayed document (e.g., colors, shadows, contrast, skew, etc.). In addition, various embodiments of the systems and methods convert the enhanced document image to an electronic file format for presentation on a client device and/or direct upload to an online content management system. Thus, examples of the systems and methods provide a user with a high quality electronic document file corresponding to a displayed document within a digital image.
Furthermore, one or more embodiments of the present disclosure provide systems and methods to identify displayed documents within a digital image maintained on an online content management system. For example, the systems and methods analyze a digital image to determine whether the digital image includes a displayed document. In response to determining that a digital image includes a displayed document, the systems and methods provide a user of a client device an option to generate an enhanced document image for the displayed document, and convert the enhanced document image to an electronic document file format that a user can access on the online content management system.
Additional features and advantages of the present invention will be set forth in the description which follows, and in part will be obvious from the description, or may be learned by the practice of such exemplary embodiments. The features and advantages of such embodiments may be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features will become more fully apparent from the following description and appended claims, or may be learned by the practice of such exemplary embodiments as set forth hereinafter.
In order to describe the manner in which the above recited and other advantages and features of the invention can be obtained, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof that are illustrated in the appended drawings. It should be noted that the figures are not drawn to scale, and that elements of similar structure or function are generally represented by like reference numerals for illustrative purposes throughout the figures. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
One or more embodiments described in this disclosure provide a document enhancement system for converting a displayed document within a digital image to an electronic file format. For example, in some embodiments, the document enhancement system can detect a displayed document within a live image feed associated with a client device (e.g., a mobile device camera feed), and convert the displayed document into an electronic document file. Furthermore, in one or more embodiments, the document enhancement system can analyze a digital content item maintained within a repository (e.g., an online content management system) to determine the digital content item portrays a displayed document. Based on determining the digital content item includes the displayed document, the document enhancement system provides an option to a user to convert the displayed document into an electronic document file format.
As mentioned, in one or more embodiments, the document enhancement system converts a displayed document within a digital image to an electronic document format. For example, the document enhancement system can detect a displayed document portrayed within a digital image, and can generate an enhanced document image corresponding to the displayed document. For instance, to generate the enhanced document image, the document enhancement system corrects visual flaws of the displayed document (e.g., colors, shadows, contrast, skew, etc.). In addition, the document enhancement system converts the enhanced document image to an electronic file format that a client device can present to a user and/or upload to an online content management system. Accordingly, one or more embodiments of the document enhancement system converts a representation of a real-world physical document portrayed within a digital image into an electronic document file format (i.e., PDF).
The document enhancement system can perform various processes to convert a displayed document within a digital image into an electronic document file format. For example, the document enhancement system can detect a displayed document within a digital image. In one or more embodiments, document enhancement system receives a digital image in the form of an image frame from a live image feed (e.g., a viewfinder image feed from a mobile device camera). For example, the document enhancement system receives an image frame in response to a user of a mobile device selecting a shutter button associated with a live image feed from a camera on the mobile device. In at least one embodiment, the document enhancement system identifies a displayed document portrayed in the image frame, or in other words, the digital document enhancement system detects a digital representation of a real-word physical document within the image frame.
Furthermore, in at least one embodiment, the document enhancement system crops an image frame with respect to a displayed document within the image frame. For example, the document enhancement system crops the image frame by determining a boundary (e.g., perimeter) of the displayed document, and removing portions of the image frame located outside the boundary. In addition to cropping the image frame, the document enhancement system can rectify the displayed document within the cropped image frame to resolve orientation and skew problems of the displayed document to generate a displayed document having a boundary that approaches, or has, a square or rectangle shape.
Moreover, in some embodiments, the document enhancement system reduces and/or corrects any uneven lighting, shadows, glares, grainy or unclear foreground, or other visual abnormalities that may be present within the displayed document. To correct the various visual abnormalities, the document enhancement system converts the displayed document to grayscale (e.g., removing any color within the displayed document). Using the grayscale version of the displayed document, the document enhancement system processes the grayscale version to denoise the displayed document, as will be explained further below.
Based on reducing and/or correcting any visual informalities within the displayed document, the document enhancement system can perform various additional processes to further enhance the displayed document. In one or more embodiments, the document enhancement system transforms the displayed document into various forms or domains to reduce computational complexities and time for enhancement processes so the document enhancement system can perform the document enhancement in an efficient manner. In some cases, and as will be explained further below, the document enhancement system transforms the displayed document to reduce the computational complexities of the enhancement process so that a mobile device can efficiently perform the document enhancement process.
In addition to the above processes, the document enhancement system further enhances the displayed document to create a version of the displayed document that includes a foreground (e.g., text) that is crisp and visible with high contrast to the background. Moreover, the document enhancement system further creates or generates a background within the displayed document having a uniform gradient that is white or near white. After optimizing the contrast between the background and the foreground, the document enhancement system restores any lost resolution resulting from transformations made to simplify the computational complexities of enhancing the displayed document. Furthermore, the document enhancement system can square the borders of the displayed document and recolor the displayed document (e.g., because the image was converted to grayscale).
Based on one or more of the above-described process, which will be discussed in detail below, the document enhancement system provides an enhanced document. For instance, the document enhancement system provides as an out an enhanced document image that appears as though a user utilized a flatbed scanner to digitize a real-world physical document (e.g., a “scanned quality”). At this point, the document enhancement system can convert the enhanced document image to an electronic file format, such as a PDF document.
Additionally, in one or more embodiments, the document enhancement system also identifies previously captured digital content items that a user may want to convert to an electronic file format. For example, in at least one embodiment, the document enhancement system determines whether a digital content item portrays a displayed document. If document enhancement system determines that a stored digital content item includes a displayed document, the document enhancement system provides, to a client device, a selectable graphical element (e.g., a selectable button) associated with the digital content item. The user can select the selectable graphical element, and in response, the document enhancement system generates an enhanced document image for the displayed document using one or more of the enhancement processes described above.
In some embodiments, the document enhancement system accesses digital content items stored in a data repository. For example, a user of a mobile device can have an account with an online content management system where the user stores various types of digital content items (e.g., digital photographs, PDF files, word processing files, spreadsheet files, etc.). Accordingly, in at least one embodiment, document enhancement system determines whether a digital content item stored within a user's account on the online content management system includes a displayed document, and is therefore “scannable.” As mentioned above, upon determining that a digital content item on the online content management system includes a displayed document, the online content management system can communicate with a client device (e.g., via an online content management system application on the client device) to generate an enhanced document for conversion into an electronic file format that a user can access on the online content management system.
To identify whether a previously captured digital content item portrays a displayed document, some embodiments of the document enhancement system includes an image classifier. For example, the image classifier determines if a digital content item is scannable in response to identifying a displayed document in the digital content item. Conversely, the image classifier determines a digital content item is not scannable in response to not identifying a displayed document in the digital content item. In one or more embodiments, and as will be explained in detail below, the image classifier utilizes a trained neural network to determine whether a digital content item is scannable or not scannable.
The above-described functions and features of the document enhancement system, as well as the additional details below, provide several advantages over conventional systems. For example, when compared to conventional systems that require multiple acts and various hardware devices, document enhancement system enables a user to utilize a handheld computing device to “scan” a document to cloud storage in a single step. Thus, in one example, the user can scan, store, and throw away a restaurant receipt before leaving the restaurant. Accordingly, document enhancement system eases the burden on users to store and maintain physical copies of documents.
Additionally, document enhancement system utilizes processor optimized methods that do not overburden the processing capabilities of a handheld computing device, such as a mobile phone. Therefore, users can scan and store documents quickly wherever they go. Furthermore, while conventional systems store representations of documents that are virtually unreadable (e.g., due to lighting problems, skew, and other noise) the document enhancement system includes additional methods that justify, color-correct, remove shadows, crop, and generally produce a scanned image that is clear, evenly illuminated, and easily readable. As mentioned above, document enhancement system performs these methods in an optimized manner that reduces the amount of computing resources required to produce a live boundary indicator, and therefore, a mobile computing device can provide a boundary indicator at a rate that generates little to no lag with respect to an image feed (e.g., a mobile device's camera image feed).
Moreover, document enhancement system also conserves computing resources by determining whether a saved image is “scannable” or not. As described above, document enhancement system determines that a picture of a dog, for example, is not an image that may be “scanned,” and accordingly, does not give the user an option to scan the picture of the dog. Conversely, document enhancement system also determines that a picture of a document (e.g., a restaurant receipt) is an image that may be “scanned,” and gives the user the option to scan the picture to scanned document quality. Thus, document enhancement system streamlines the scanning process by performing this first determination step for the user.
This disclosure refers to various terms to describe the functions and features of one or more embodiments of a document enhancement system. As used herein, a “physical document” refers to a real-world object used to convey information. For instance, a physical document can include real-word objects that include printed text, handwritten text, drawings, figures, diagrams, or other forms of information. Various examples of physical documents include paper-type documents such as a piece of paper, a receipt, a pamphlet, a book page, a notepad, a menu, an envelope, a holiday card, a business card, etc. Physical documents further can include a whiteboard, chalkboard, or other types of writing surfaces. In yet other examples, a physical document can include an image of a computer monitor, television screen, projector display, or other presentation mediums. As is appreciated based on the disclosure herein, other examples of physical documents exist that benefit from the systems and method described herein.
As used herein, an “image feed” includes a feed of digital image frames for presentation on a screen or monitor of a computing device. For instance, an image feed can include a feed from a digital camera of a computing device. In other examples, an image feed can include a previously captured feed. In addition, in some embodiments, the image feed can include streaming video, a presentation of saved video, or other digital content that includes a presentation of a series of multiple image frames. An image feed can have various frame rates, or in other words, the rate at which image frames are displayed upon presentation of an image feed. As is understood based on this disclosure, an “image frame,” as used herein, is a defined portion or instance of digital content included within an image feed. For example, an image feed generally includes multiple successive image frames that, when presented in succession, can provide a video-type presentation.
As used herein the term “displayed document” refers to a depiction of a physical document within a digital image. For example, a displayed document can include a visual representation of a physical document within an image frame of an image feed, or within an image feed itself (e.g., a camera viewfinder image feed). In addition, a displayed document can include a representation of a physical document within a captured digital photo (e.g., a digital photo that the document identification system converts to a document file). In some embodiments, a displayed document does not include an entire physical document, but rather only includes a portion of a physical document. Accordingly, and in general, a displayed document includes a visual digital depiction of at least a portion of a physical document.
As used herein, an “enhanced document image” refers to an output image from a document enhancement process. In one or more embodiments, an enhanced document image is an image of a displayed document that has been edited, modified, altered, etc. so as to appear as a digital document created using a flatbed scanner. For example, an enhanced document image can include dark, clear text against a mostly white, evenly illuminated, and clean background. It will be understood that while the document enhancement process is described herein as acting in combination with a displayed document, the acts of the document enhancement process actually act in combination with an image of a displayed document as detected within an image frame taken from a live image feed or stored digital content item.
Additional details of various example embodiments of the document enhancement system will not be discussed with respect to the figures.
In at least one embodiment, mobile computing device 106 and server 102 are communicatively coupled across network 110. Although
Although one or more embodiments are described herein as including mobile computing device 106 (e.g., a smartphone), in additional embodiments, document enhancement system 100 can operate in combination with any type of client computing device. For example, in an additional embodiment, rather than including mobile computing device 106, document enhancement system 100 can include a client computing device such as a laptop, desktop, tablet, smart-wearable, etc. Additional examples and features of client computing devices are described below with reference to
Mobile computing device 106 and server 102 may communicate using any communication platform or technology suitable for transporting data and/or communication signals. For example, mobile computing device 106 and server 102 may communicate via any known communication technologies, devices, media, and protocols supportive of remote data communications, examples of which are described below with respect to
As shown in
Also further shown in
As will be understood based on the disclosure herein, various functions and processes of document enhancement system 100 can be located on server 102, mobile computing device 106, or both server 102 and mobile computing device 106. In some embodiments, online content management system 104 on server 102 cooperates with online content management system application on mobile computing device 106 to provide the functions and features described herein. Alternatively, the functions and features may be performed solely on mobile client device 108 or solely on server 102 as a particular application of the document enhancement system requires.
In some embodiments, the document enhancement system detects a displayed document using a document identification system that determines a boundary of a displayed document in an image feed (e.g., digital camera feed on a mobile device), and provides a boundary indicator corresponding to the boundary of the displayed document within the image feed. For example, in one embodiment, document identification system generates and provides a document boundary indicator outlining the boundaries of a displayed document in an image feed to detect a displayed document within an image frame of an image feed.
Further shown in
As further shown in
As mentioned above, in one or more embodiments, generating an enhanced document image (e.g., as in act 204 in
Referring again to
For example, depending on the circumstances under which a camera associated with mobile computing device 106 captures the image frame, the image frame may contain superfluous background. Accordingly, in at least one embodiment, document enhancement system 100 crops the image frame along the edges of the displayed document to create a standalone image of the displayed document. For instance, document enhancement system 100 detects pixels along the detected edges of the displayed document in the image frame that are likely part of the background of the image (e.g., based on differences in color, etc.), and crops those pixels from the image frame. For ease of explanation, the cropped image of the displayed document will further be referred to as simply the displayed document.
Furthermore, as part of act 302 document enhancement system 100 also rectifies the displayed document. For example, the displayed document may be skewed due to the camera angle when the original image frame was captured (e.g., the edges of the displayed document may not be square or rectangular because the camera was not parallel to the document, or the document was not on a flat surface, etc.). Thus, document enhancement system 100 rectifies the displayed document utilizing geometric transformations to correct any skew or orientation abnormality in the displayed document. For example, as shown in
For instance, one case occurs when all four corners of the displayed document are within the image frame. In one or more embodiments, document enhancement system 100 can also rectify the displayed document in additional cases where some number of the displayed document's edges and/or corners are outside of the image frame. For example, when one edge and zero corners of the displayed document are within the image frame, document enhancement system 100 determines if the single edge is the top, bottom, left side, or right side of the displayed document and rotates the displayed document to the correct orientation to preserve the aspect ratio and pixel resolution of the displayed document.
In another example, if the image frame includes two edges and zero corners of the displayed document, document enhancement system 100 determines whether the two corresponding edges are from opposite sides of the displayed document or from adjacent sides. When the edges are from adjacent sides of the displayed document, document enhancement system 100 computes the intersection point at a location outside of the image frame, and then proceeds as though the image frame includes two edges and one corner of the displayed document.
When the edges are from opposites sides of the displayed document, the two displayed document edges meet at a vanishing point (outside the image frame). Thus, document enhancement system 100 applies a projective transformation to send the vanishing point to the appropriate point at infinity (vertical or horizontal). However, without using the interior content of the displayed document, document enhancement system 100 does not have access to a second vanishing point needed to compute the full homography.
Accordingly, in one or more embodiments, document enhancement system 100 can compute a reasonable estimate to find the edges of the displayed document outside the image frame. For example,
In at least one embodiment, document enhancement system 100 determines that the extreme points of these projections (e.g., “s1” and “t2”) determine the height of the displayed document. To determine the width of the displayed document, document enhancement system 100 first computes the distance between the bisector “b” and the four endpoint projections “s1, “s2,” “t1,” and “t2,” and then takes the average of the smallest distance and the largest distance. Document enhancement system 100 uses the result of this computation as the width of the displayed document.
With the height and width of the displayed document now computed, document enhancement system 100 identifies the coordinates of the corners of the displayed document outside the image frame. For example, the document enhancement system 100 assigns point “s1” as the bottom of the displayed document, and point “t2” as the top of the document. Furthermore, for instance, the document enhancement system 100 uses the determined width of the displayed document to determine corner points projected out from the bisector “b.” The intersection of lines “e1” and “e2” with the projected corner points result in the identification or approximation of displayed document corners that are located outside of the image frame.
In another example, if the image frame includes two edges and one corner of the displayed document, document enhancement system 100 may not have enough information to correct the perspective distortion. However, in at least one embodiment, document enhancement system 100 can bring the angle of the corner to ninety degrees using an affine transformation, and aligning the displayed document's edges with the vertical and horizontal directions in the rectified displayed document.
In yet another example, if the image frame includes three edges and zero, one, or two corners of the displayed document, document enhancement system 100 can identify any missing corner simply as the intersection of subsequent edges. For example, on a rectangular displayed document, two of the three edges are the projection of opposite sides of the rectangle, and the third edge is a projection of an orthogonal displayed document edge (e.g., the two sides and the top). Finally, if there are four edges and zero, one, two, three, or four corners of the displayed document shown in the image, document enhancement system 100 utilizes the intersection of pairs of lines to determine the location of all four corners of the displayed document. Finally, if the image includes four edges and zero, one, two, three, or four corners of the displayed document, document enhancement system 100 can determine the location of each missing corner by determining the intersection of adjacent edges of the displayed document.
Referring again to
In one or more embodiments, document enhancement system 100 changes a displayed document from RGB color to grayscale by converting each pixel in the displayed document to the minimum of the pixel's RGB value. For example, if a pixel from the displayed document is pure red, its RGB value is (255,0,0). Accordingly, in converting this pixel to grayscale, document enhancement system 100 identifies min(255,0,0), which is 0. Thus, document enhancement system 100 determines the pixel's new grayscale value is (0,0,0), or black. In one or more embodiments, document enhancement system 100 continues this conversion on each pixel in the displayed document until the displayed document is fully converted to grayscale.
As mentioned above, act 304 includes denoising the displayed document. Typically, in an image frame of a document captured under low-lighting situations, the darkness in the image frame manifests as spurious texture. For example, a piece of paper in an image frame taken under low-lighting situations may appear to have a gritty surface, even though the piece of paper is smooth and uniform in real-life. Accordingly, document enhancement system 100 denoises the displayed document to rid the background of the displayed document of excess variation (e.g., noise). Denoising the displayed document avoids document enhancement system 100 from treating this spurious texture as something meaningful later in the enhancement process. Thus, document enhancement system 100 denoises the displayed document by cleaning up the background of the displayed document using denoising techniques, while leaving the foreground of the displayed document intact.
Referring again to
In some embodiments, to subsample a displayed document, document enhancement system 100 divides the displayed document into groups of pixel neighborhoods. In at least one embodiment, document enhancement system 100 operates under the assumption constraint that the displayed document is mostly background with some foreground text. Accordingly, in some embodiments, document enhancement system 100 then takes the minimum of a given number of adjoining neighborhoods, and assigns that value to a representative single pixel. When repeated over all pixel neighborhoods in the displayed document, the resulting collection of representative pixels preserves the geometric information from the original displayed document, even though the resolution of the displayed document is greatly reduced.
To illustrate the subsample process,
Based on the reduced resolution within the subsampled version of the displayed document, document enhancement system 100 can efficiently perform enhancement computations in combination with the subsampled version of the displayed document to create an enhanced document image with a foreground that is crisp and visible with high contrast, and with a background that is nearly a uniform white, or is a uniform white, with even illumination (e.g., uniform gradient). In one or more embodiments, document enhancement system 100 utilizes the Poisson equation to generate the enhanced image with the features described above. For example, the Poisson equation is an objective function that document enhancement system 100 optimizes. In at least one embodiment, document enhancement system 100 solves the following:
Given input image I(x,y),
find output image J(x,y) that minimizes:
In at least one embodiment, document enhancement system 100 associates a penalty when the output of the above equation is not close to (255,255,255), or the RGB value for white. Furthermore, in at least one embodiment, the Poisson equation above also penalizes for any deviation in the horizontal and vertical gradients of the displayed document. Based on optimizing the equation above (e.g., solving for the min), document enhancement system 100 produces a displayed document that is mostly white and with the same gradient as the displayed document in the original image frame.
In light of the potential computational intensity required to optimize the equation above, in at least one embodiment, document enhancement system 100 utilizes a transformation space rather than linear algebra in optimizing the Poisson equation. For example, in at least one embodiment, document enhancement system 100 optimizes the equation above by utilizing a Fourier Transformation. Accordingly, document enhancement system 100 transforms the displayed document into Fourier Domain where document enhancement system 100 solves the Fourier Transformation version of the above objective function. Then, by utilizing inverse Fourier Transformation, document enhancement system 100 outputs the optimized displayed document, albeit still subsampled. The Fourier Transformation simplifies the Poisson equation into a problem that document enhancement system 100 can solve very close to real-time using a mobile computing device.
With the subsampled version of the displayed document now optimized to a mostly white background with the original text in a grayscale foreground, as shown in
For example, as illustrated in
At this point, there may still be some pixels in tri-map version of the displayed document 416 that have no estimate (e.g., the “unknown” pixels). Accordingly, in one or more embodiments, document enhancement system 100 estimates background for all unknown pixels by processing tri-map version of the displayed document 416 in a pyramid, and continuously down-sampling the displayed document by half until all unknown pixels are given a value. In other words, at some resolution, document enhancement system 100 can estimate a value for all pixels in tri-map version of the displayed document 416. Furthermore, in one or more embodiments, document enhancement system 100 determines an amount of foreground represented by a single pixel by estimating an alpha value for each pixel in tri-map version of the displayed document 416 using simple arithmetic.
In one or more embodiments, the edges of a displayed document are rarely perfectly rectangular. Accordingly, as shown in
Finally, document enhancement system 100 recolors the displayed document, as also shown in act 310 of
At this point, the document enhancement process provides an enhanced document image of the original displayed document as an output, as shown in the act 312 shown in
Furthermore, at this point, document enhancement system 100 can easily convert the enhanced document image into a different file format, such as a PDF file. Due to the document enhancement process, the resulting PDF file that is based on the enhanced document image of the displayed document appears as though it was scanned on a flatbed scanner. Furthermore, with the enhanced document image in PDF, document enhancement system 100 can optionally perform additional procedures in combination with the enhanced document image (e.g., optical character recognition, text searching, etc.).
As will be described in more detail below, document enhancement system 100 can facilitate, generate, or otherwise provide one or more graphical user interfaces. For example, document enhancement system 100 can allow a user to interact with a collection of display elements for a variety of purposes in connection with the document enhancement process described above. In particular,
In one or more embodiments, a mobile computing device can implement part or all of document enhancement system 100. For example,
Mobile computing device 500 includes any of the features and components described below with reference to computing device 1200 of
As shown in
In response to receiving a selection of scan document option 514a, document enhancement system 100 provides camera viewfinder GUI 516, as shown in
Upon generating the enhanced document image, document enhancement system 100 provides enhanced document image preview GUI 520, as shown in
In at least one embodiment, document enhancement system 100 enables the user of mobile computing device 500 to further edit enhanced document image 522. For example, in response to receiving a selection of edit button 524, document enhancement system 100 provides edit GUI 526, as shown in
Referring again to
The features and functionality of document enhancement system 100 is described above with regard to
In one or more embodiments, online content management system 104 includes features of document enhancement system 100 that identify stored digital content items with which the document enhancement process can be applied. For example, online content management system 104 may store any number of digital content items. Despite this, many of the stored digital content items likely do not include a displayed document. For instance, many digital content items may be digital photographs of people, places, animals, and so forth. Thus, document enhancement system 100 cannot apply the document enhancement process to those digital content items because those digital content items do not include a displayed document. Accordingly, prior to applying the document enhancement process to a digital content item that is either stored on online content management system 104 or provided by online content management system application 108, document enhancement system 100 must first determine whether the digital content item is “scannable;” or in other words, whether the digital content item includes a displayed document.
In one or more embodiments, document enhancement system 100 utilizes an image classifier to determine whether a digital content item includes a displayed document. For example, in at least one embodiment, the image classifier is a deep convolutional neural network that receives a digital content item as input, and outputs a determination as to whether the digital content item is “scannable” or “not scannable.” In response to determining that the digital content item is “scannable” (i.e., includes a displayed document), document enhancement system 100 can provide additional functionality in connection with the digital content item that enables the document enhancement process to be applied to the digital content item.
The process by which document enhancement system 100 determines whether the document enhancement process can be applied to a digital content item, and subsequently generates an enhanced document image based on the digital content item, is illustrated in
Document enhancement system 100 builds the convolutional neural network representing the image classifier including a plurality of neuron layers. For example, in one or more embodiments, a convolutional neural network can include an input layer having one or more neurons (i.e., such as a node function that accepts an image), one or more hidden layers that each include a plurality of neurons, and an output layer including at least one neuron (i.e., a node function that outputs “scannable” or “not scannable”). In one or more embodiments, the convolutional neural network can have more than one hidden layer within the neural network, in order to add greater processing power and flexibility to the neural network. For instance, example convolutional neural networks can include two, three, four or more hidden layers, wherein each hidden layer includes a plurality of neurons.
Notwithstanding the various types and/or number of neuron layers in a neural network, each neuron of a fully-connected neuron layer is connected to every neuron in an adjacent neuron layer. For instance, in a typical neural network, each neuron in the fully-connected input layer is connected by an edge to each and every neuron in the hidden layer, and each neuron in the fully-connected hidden layer is connected by an edge to each and every neuron in the output layer. Accordingly, data enters the neural network at the input layer and flows through the hidden layer and eventually to the output layer. In alternative types of neural networks, each neuron in a layer of the network may only feed into a subset of neurons in the next layer.
In at least one embodiment, document enhancement system 100 builds the convolutional neural network of at least four layers. For example, in one or more embodiments, these four layers include a convolution layer, a pooling layer, an elementwise nonlinearity layer, and a fully-connected layer. In at least one embodiment, the convolution layer includes a filter that includes the same number of planes as the input and can be overlaid and applied to the values in the input in order to get an output. For example, as shown in
Next, in the pooling layer, document enhancement system 100 defines a “max pool” filter that identifies the maximum value in a region of the input. For example, as shown in
Document enhancement system 100 builds the elementwise nonlinearity layer by applying a nonlinear single variable function to every value in the input in order to get a corresponding value in the output. In at least one embodiment, as shown in
Lastly, document enhancement system 100 builds the fully-connected layer to receive an input of any dimension and output a vector of any length. For example, as shown in
Before document enhancement system 100 can use the convolutional neural network as an image classifier, document enhancement system 100 must train the convolutional neural network to determine whether an image is scannable or not scannable. In other words, whether the image includes a displayed document or not. In at least one embodiment, document enhancement system 100 utilizes a known training set of inputs to perform a feed-forward back-propagation on the convolutional neural networking in order to train the convolutional neural network into providing a known set of outputs that correspond with the known training set of inputs.
In practice, document enhancement system 100 trains the convolutional neural network by first randomly initializing parameters of each layer. Document enhancement system 100 then feeds an example image through the network and compares the output of the network to the expected output for the example image. Next document enhancement system 100 works back through the neural network adjusting parameters within each layer that will push the actual output of the neural network for the example image closer to the expected output. This process is known as back-propagation.
Document enhancement system 100 repeats this process millions of times until the neural network is trained (e.g., consistently provides expected outputs) and therefore capable of functioning as an image classifier. In at least one embodiment, document enhancement system 100 trains the convolutional neural network using an image database of thousands of training images. Furthermore, in one or more embodiments, document enhancement system 100 can utilize outputs of various layers within the convolutional neural network. For example, earlier layers within the convolutional neural network may identify edges and corners allowing document enhancement system 100 to determine with a degree of certainty whether an image contains a quadrilateral (e.g., a likely displayed document). In one or more embodiments, if document enhancement system 100 determines the digital content item likely contains a displayed document, document enhancement system 100 classifies the digital content item as scannable.
Referring again to
In response to receiving the digital content item (610), document enhancement system 100 determines whether the digital content item includes a displayed document (612). As discussed above, in at least one embodiment, document enhancement system 100 makes this determination by feeding the digital content item into the image classifier. Document enhancement system 100 determines that the digital content item includes a displayed document in response to the image classifier outputting a “scannable” determination in connection with the digital content item.
Accordingly, in response to determining that the digital content item includes a displayed document (612), as shown in
In response to the digital content item metadata that indicates the digital content item includes a displayed document, document enhancement system 100 provides a selectable indicator (618) associated with the digital content item (616) to online content management system application 108 on mobile computing device 106. In at least one embodiment, providing the selectable indicator (618) can include providing an instruction to update a graphical user interface to include the selectable indicator (618). At this point, online content management system application 108 can display the selectable indicator associated with the digital content item (620). For example, in one embodiment, the selectable indicator is a “Save as Scan” button. In response to detecting a selection of the selectable indicator (622), online content management system application 108 communicates the selection (624) to online content management system 104.
At this point, document enhancement system 100 generates an enhanced document image based on the digital content item (626). For example, as described above with reference to
As with
As described above, a mobile computing device can implement part or all of document enhancement system 100. For example,
Each digital content item 810a-810c is an interactive display object that includes various additional elements. For example, as shown in
Further, as shown in
In response to a detected selection of selectable graphical element 816, document enhancement system 100 generates an enhanced document image based on digital content item 810a, utilizing the document enhancement process described above. For example, in response to the selection of selectable graphical element 816, document enhancement system 100 generates enhanced document image 818 in a preview GUI 804b on touch screen display 802 of mobile computing device 800, as shown in
Components 104, 108, and 902-918 can comprise software, hardware, or both. For example, components 104, 108, and 902-918 can comprise one or more computer-executable instructions stored on a computer readable storage medium and executable by one or more processors of one or more computing devices. When executed by the one or more processors, the one or more computer-executable instructions of document enhancement system 100 can cause a computing device(s) to perform the features and methods described herein. Alternatively, components 104, 108, and 902-918 can comprise a special purpose processing device to perform a certain function or group of functions. Additionally, or alternatively, components 104, 108, and 902-918 can comprise a combination of computer-executable instructions and hardware.
Although the features and functionality of document enhancement manager 902 is described in relation to mobile computing device 106, part or all of the features and functionality of document enhancement manager 902 can reside on and be performed by online content management system 104 on server 102. Similarly, although the features and functionality of image classifier 914 is described in relation to online content management system 104 on server 102, part or all of the features and functionality of image classifier 914 can reside on and be performed by online content management system application 108 on mobile computing device 106.
As discussed above, document enhancement manager 902 generates an enhanced document image based on an image frame taken from a live image feed. Accordingly, in one or more embodiments, live document manager 904 handles all tasks related to generating the enhanced document image. For example, as described above, live document manager 904 receives an image frame from a live image feed provided by camera 912 of mobile computing device 106. Further, live document manager 904 also identifies a displayed document in the received image frame and generates an enhanced document image based on the displayed document.
Also shown in
Further shown in
Additionally, as shown in
Furthermore, method 1000 also includes an act 1020 of generating an enhanced document image of the displayed document. In particular, act 1020 can involve, based on detecting the displayed document within the live image feed, generating an enhanced document image corresponding to the displayed document. For example, in at least one embodiment, method 1000 further includes an act of capturing an image frame from the live image feed, the image frame comprising the displayed document, wherein generating the enhanced document comprises modifying the image frame with respect to the displayed document within the image frame.
In one or more embodiments, modifying the image frame includes detecting, without receiving user input, portions of the image frame that are not part of the displayed document, and cropping the image frame to remove the portions of the image frame that are not part of the displayed document. Moreover, in at least one embodiment, generating the enhanced document further includes altering the displayed document within the cropped imaged frame. Furthermore, in at least one embodiment, altering the displayed document includes at least one of: rectifying the displayed document, converting the displayed document to grayscale, or denoising the displayed document. In one or more embodiments, altering the displayed document also includes correcting a background of the displayed document. For example, in at least one embodiment, correcting the background of the displayed document includes: creating a subsampled version of the displayed document; and optimizing the subsampled version of the displayed document by solving an objective function that penalizes deviations from white within the subsampled version and penalizes deviations in gradient within the subsampled version to generate an optimized subsampled version.
Additionally, in one or more embodiments, the method 1000 includes acts of performing a Fourier Domain transfer of the subsampled version of the displayed document, solving the objective function of the Fourier Domain, and performing an inverse Fourier Domain transfer to generate the optimized subsampled version of the displayed document. Further, the method 1000 includes an act of upsampling the optimized subsampled version of the displayed document to generate a tri-map version of the displayed document that identifies background pixels, foreground pixels, and unknown pixels. Additionally, the method 1000 includes an act of assigning each of the unknown pixels as either a background pixel or a foreground pixel by estimating the background color of each of the unknown pixels.
Additionally, method 1000 further includes an act 1030 of providing the enhanced document image. In particular, act 1030 can involve provide, for presentation on a display of the computing device, the enhanced document image. In at least one embodiment, method 1000 also includes an act of converting the enhanced document image to a document file format. Additionally, in at least one embodiment, method 1000 further includes an act of, after providing the enhanced document image in a preview graphical user interface, receiving one or more edits to the enhanced document image via an editing graphical user interface. Furthermore, method 1000 can also include an act of editing the enhanced document image in accordance with the one or more received edits.
Additionally, method 1100 includes an act 1120 of determining that the digital content item includes a displayed document. For example, in at least one embodiment, method 1100 also includes an act of building and training an image classifier, wherein determining that the digital content item includes a displayed document includes applying the image classifier to the digital content item. In that case, building and training the image classifier includes: building a convolutional neural network comprising a plurality of layers, and training, utilizing a training data set, the convolutional neural network to determine whether an image includes a displayed document. In one or more embodiments, building the convolutional neural network including a plurality of layers includes building the convolutional neural network including a convolution layer, a pooling layer, an elementwise nonlinearity layer, and a fully-connected layer.
Furthermore, method 1100 includes an act 1130 of associating metadata with the digital content item. In particular, act 1130 can involve associating, with the digital content item and based on the determination, metadata that indicates the digital content item comprises the displayed document. For example, associating metadata that indicates the digital content item includes the displayed document can include updating a metadata tag associated with the digital content item from an unclassified status to a scannable status.
Method 1100 also includes an act 1140 of providing a selectable graphical element associated with the digital content item. In particular, act 1140 can involve providing, to a client-computing device and based on the metadata associated with the digital content item, a selectable graphical element that the digital content item comprises a displayed document. For example, in one or more embodiments, the selectable graphical element that the digital content item comprises a displayed document includes a graphical user interface button associated with the digital content item in a graphical listing of digital content items.
Furthermore, method 1100 includes an act 1150 of generating an enhanced document image based on the digital content item. In particular, act 1150 can involve, in response to a user selection of the selectable graphical element, generating an enhanced document based on the displayed document within the digital content item. In one or more embodiments, generating an enhanced document based on the displayed document within the digital content item includes subsampling the displayed document, correcting a background of the displayed document, and upsampling the displayed document. In at least one embodiment, generating an enhanced document based on the displayed document within the digital content item further includes, prior to subsampling the displayed document, cropping the displayed document, rectifying the displayed document, converting the displayed document to grayscale, and denoising the displayed document. Furthermore, in at least one embodiment, generating an enhanced document based on the displayed document within the digital content item further includes, after upsampling the displayed document, estimating the background and alpha of the displayed document, fixing the border of the displayed document, and recoloring the displayed document.
Embodiments of the present disclosure may comprise or utilize a special purpose or general-purpose computer including computer hardware, such as, for example, one or more processors and system memory, as discussed in greater detail below. Embodiments within the scope of the present disclosure also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. In particular, one or more of the processes described herein may be implemented at least in part as instructions embodied in a non-transitory computer-readable medium and executable by one or more computing devices (e.g., any of the media content access devices described herein). In general, a processor (e.g., a microprocessor) receives instructions, from a non-transitory computer-readable medium, (e.g., a memory, etc.), and executes those instructions, thereby performing one or more processes, including one or more of the processes described herein.
Computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system. Computer-readable media that store computer-executable instructions are non-transitory computer-readable storage media (devices). Computer-readable media that carry computer-executable instructions are transmission media. Thus, by way of example, and not limitation, embodiments of the disclosure can comprise at least two distinctly different kinds of computer-readable media: non-transitory computer-readable storage media (devices) and transmission media.
Non-transitory computer-readable storage media (devices) includes RAM, ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM), Flash memory, phase-change memory (“PCM”), other types of memory, other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer.
A “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules and/or other electronic devices. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a transmission medium. Transmissions media can include a network and/or data links which can be used to carry desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media.
Further, upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission media to non-transitory computer-readable storage media (devices) (or vice versa). For example, computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface module (e.g., a “NIC”), and then eventually transferred to computer system RAM and/or to less volatile computer storage media (devices) at a computer system. Thus, it should be understood that non-transitory computer-readable storage media (devices) can be included in computer system components that also (or even primarily) utilize transmission media.
Computer-executable instructions comprise, for example, instructions and data which, when executed at a processor, cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. In some embodiments, computer-executable instructions are executed on a general purpose computer to turn the general purpose computer into a special purpose computer implementing elements of the disclosure. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts described above. Rather, the described features and acts are disclosed as example forms of implementing the claims.
Those skilled in the art will appreciate that the disclosure may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, tablets, pagers, routers, switches, and the like. The disclosure may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices.
Embodiments of the present disclosure can also be implemented in cloud computing environments. In this description, “cloud computing” is defined as a model for enabling on-demand network access to a shared pool of configurable computing resources. For example, cloud computing can be employed in the marketplace to offer ubiquitous and convenient on-demand access to the shared pool of configurable computing resources. The shared pool of configurable computing resources can be rapidly provisioned via virtualization and released with low management effort or service provider interaction, and then scaled accordingly.
A cloud-computing model can be composed of various characteristics such as, for example, on-demand self-service, broad network access, resource pooling, rapid elasticity, measured service, and so forth. A cloud-computing model can also expose various service models, such as, for example, Software as a Service (“SaaS”), Platform as a Service (“PaaS”), and Infrastructure as a Service (“IaaS”). A cloud-computing model can also be deployed using different deployment models such as private cloud, community cloud, public cloud, hybrid cloud, and so forth. In this description and in the claims, a “cloud-computing environment” is an environment in which cloud computing is employed.
In particular embodiments, processor 1202 includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor 1202 may retrieve (or fetch) the instructions from an internal register, an internal cache, memory 1204, or storage device 1206 and decode and execute them. In particular embodiments, processor 1202 may include one or more internal caches for data, instructions, or addresses. As an example and not by way of limitation, processor 1202 may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (“TLBs”). Instructions in the instruction caches may be copies of instructions in memory 1204 or storage 1206.
Memory 1204 may be used for storing data, metadata, and programs for execution by the processor(s). Memory 1204 may include one or more of volatile and non-volatile memories, such as Random Access Memory (“RAM”), Read Only Memory (“ROM”), a solid state disk (“SSD”), Flash, Phase Change Memory (“PCM”), or other types of data storage. Memory 1204 may be internal or distributed memory.
Storage device 1206 includes storage for storing data or instructions. As an example and not by way of limitation, storage device 1206 can comprise a non-transitory storage medium described above. Storage device 1206 may include a hard disk drive (“IHDD”), a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (“USB”) drive or a combination of two or more of these. Storage device 1206 may include removable or non-removable (or fixed) media, where appropriate. Storage device 1206 may be internal or external to computing device 1200. In particular embodiments, storage device 1206 is non-volatile, solid-state memory. In other embodiments, Storage device 1206 includes read-only memory (“ROM”). Where appropriate, this ROM may be mask programmed ROM, programmable ROM (“PROM”), erasable PROM (“EPROM”), electrically erasable PROM (“EEPROM”), electrically alterable ROM (“EAROM”), or flash memory or a combination of two or more of these.
I/O interface 1208 allows a user to provide input to, receive output from, and otherwise transfer data to and receive data from computing device 1200. I/O interface 1208 may include a mouse, a keypad or a keyboard, a touch screen, a camera, an optical scanner, network interface, modem, other known I/O devices or a combination of such I/O interfaces. I/O interface 1208 may include one or more devices for presenting output to a user, including, but not limited to, a graphics engine, a display (e.g., a display screen), one or more output drivers (e.g., display drivers), one or more audio speakers, and one or more audio drivers. In certain embodiments, I/O interface 1208 is configured to provide graphical data to a display for presentation to a user. The graphical data may be representative of one or more graphical user interfaces and/or any other graphical content as may serve a particular implementation.
Communication interface 1210 can include hardware, software, or both. In any event, communication interface 1210 can provide one or more interfaces for communication (such as, for example, packet-based communication) between computing device 1200 and one or more other computing devices or networks. As an example and not by way of limitation, communication interface 1210 may include a network interface controller (“NIC”) or network adapter for communicating with an Ethernet or other wire-based network or a wireless NIC (“WNIC”) or wireless adapter for communicating with a wireless network, such as a WI-FI.
Additionally or alternatively, communication interface 1210 may facilitate communications with an ad hoc network, a personal area network (“PAN”), a local area network (“LAN”), a wide area network (“WAN”), a metropolitan area network (“MAN”), or one or more portions of the Internet or a combination of two or more of these. One or more portions of one or more of these networks may be wired or wireless. As an example, communication interface 1210 may facilitate communications with a wireless PAN (“WPAN”) (such as, for example, a BLUETOOTH WPAN), a WI-FI network, a WI-MAX network, a cellular telephone network (such as, for example, a Global System for Mobile Communications (“GSM”) network), or other suitable wireless network or a combination thereof.
Additionally, communication interface 1210 may facilitate communications various communication protocols. Examples of communication protocols that may be used include, but are not limited to, data transmission media, communications devices, Transmission Control Protocol (“TCP”), Internet Protocol (“IP”), File Transfer Protocol (“FTP”), Telnet, Hypertext Transfer Protocol (“HTTP”), Hypertext Transfer Protocol Secure (“HTTPS”), Session Initiation Protocol (“SIP”), Simple Object Access Protocol (“SOAP”), Extensible Mark-up Language (“XML”) and variations thereof, Simple Mail Transfer Protocol (“SMTP”), Real-Time Transport Protocol (“RTP”), User Datagram Protocol (“UDP”), Global System for Mobile Communications (“GSM”) technologies, Code Division Multiple Access (“CDMA”) technologies, Time Division Multiple Access (“TDMA”) technologies, Short Message Service (“SMS”), Multimedia Message Service (“MMS”), radio frequency (“RF”) signaling technologies, Long Term Evolution (“LTE”) technologies, wireless communication technologies, in-band and out-of-band signaling technologies, and other suitable communications networks and technologies.
Communication infrastructure 1212 may include hardware, software, or both that couples components of computing device 1200 to each other. As an example and not by way of limitation, communication infrastructure 1212 may include an Accelerated Graphics Port (“AGP”) or other graphics bus, an Enhanced Industry Standard Architecture (“EISA”) bus, a front-side bus (“FSB”), a HYPERTRANSPORT (“HT”) interconnect, an Industry Standard Architecture (“ISA”) bus, an INFINIBAND interconnect, a low-pin-count (“LPC”) bus, a memory bus, a Micro Channel Architecture (“MCA”) bus, a Peripheral Component Interconnect (“PCI”) bus, a PCI-Express (“PCIe”) bus, a serial advanced technology attachment (“SATA”) bus, a Video Electronics Standards Association local (“VLB”) bus, or another suitable bus or a combination thereof.
In particular, online content management system 1302 can manage synchronizing content items across multiple client devices 1306 associated with one or more users. For example, user may edit a content item using client devices 1306. The online content management system 1302 can cause client device 1306 to send the edited content item to online content management system 1302. Online content management system 1302 then synchronizes the edited content item on one or more additional computing devices.
In addition to synchronizing content items across multiple devices, one or more embodiments of the online content management system 1302 can provide an efficient storage option for users that have large collections (e.g., galleries) of content items. For example, the online content management system 1302 can store a collection of content items, while the client device 1306 only stores reduced-sized versions of the content items. A user can navigate and browse the reduced-sized versions (e.g., eBook cover art) of the content items on client device 1306. In particular, one way in which a user can experience content items is to browse the reduced-sized versions of the content items on client device 1306. Online content management system 1302 may store any number of reduced size versions (e.g., thumbnails) of digital content items and provide them to client device 1306 at a suitable time (e.g., to allow client device 1306 to emphasize one or more digital content items within a graphical user interface).
Client device 1306 may be a desktop computer, a laptop computer, a tablet computer, a personal digital assistant (PDA), an in- or out-of-car navigation system, a handheld device, a smart phone or other cellular or mobile phone, or a mobile gaming device, other mobile device, or other suitable computing devices. Client device 1306 may execute one or more client applications, such as a web browser (e.g., Microsoft Windows Internet Explorer, Mozilla Firefox, Apple Safari, Google Chrome, Opera, etc.) or a native or special-purpose client application (e.g., Application for iPhone or iPad or for Android, etc.), to access and view content over network 1304.
Network 1304 may represent a network or collection of networks (such as the Internet, a corporate intranet, a virtual private network (VPN), a local area network (LAN), a wireless local area network (WLAN), a cellular network, a wide area network (WAN), a metropolitan area network (MAN), or a combination of two or more such networks) over which client devices 1306 may access online content management system 1302.
Online content management system 1302 may also include social network components such as a social network management system. A social network management system may generate, store, manage, receive, and send social network communications. For example, the social network management system may send and receive social network communications to and from client devices 1306 by way of network 1304. In particular, the social network management system can store and manage one or more social network communications sent between co-users of a social network. The social network management system can manage the sharing of social network communications between computing devices associated with a plurality of users. For instance, the social network management system can facilitate a user sharing a social network communication with another user of document enhancement system 100.
In the foregoing specification, the present disclosure has been described with reference to specific exemplary embodiments thereof. Various embodiments and aspects of the present disclosure(s) are described with reference to details discussed herein, and the accompanying drawings illustrate the various embodiments. The description above and drawings are illustrative of the disclosure and are not to be construed as limiting the disclosure. Numerous specific details are described to provide a thorough understanding of various embodiments of the present disclosure.
The present disclosure may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. For example, the methods described herein may be performed with less or more acts/acts or the acts/acts may be performed in differing orders. Additionally, the acts/acts described herein may be repeated or performed in parallel with one another or in parallel with different instances of the same or similar acts/acts. The scope of the present application is, therefore, indicated by the appended claims rather than by the foregoing description. All changes that come within the meaning and range of equivalency of the claims are to be embraced within their scope.
This application is a continuation of U.S. application Ser. No. 17/323,838, filed May 18, 2021, which is a continuation of U.S. application Ser. No. 16/830,047, filed Mar. 25, 2020, which issued as U.S. Pat. No. 11,017,159, which is a continuation of U.S. application Ser. No. 15/658,289, filed Jul. 24, 2017, which issued as U.S. Pat. No. 10,628,519, which claims the benefit of and priority to U.S. Provisional Application No. 62/365,914, filed Jul. 22, 2016. Each of the aforementioned patent(s), and applications(s) are hereby incorporated by reference in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
6671684 | Hull et al. | Dec 2003 | B1 |
8832549 | Mansfield et al. | Sep 2014 | B2 |
9105011 | Calman et al. | Aug 2015 | B2 |
9280691 | Kleinman et al. | Mar 2016 | B2 |
9305402 | Bilbrey et al. | Apr 2016 | B2 |
20050100209 | Lewis et al. | May 2005 | A1 |
20060039629 | Li et al. | Feb 2006 | A1 |
20100060915 | Suzuki et al. | Mar 2010 | A1 |
20110145068 | King | Jun 2011 | A1 |
20120238254 | Yankovich et al. | Sep 2012 | A1 |
20130083003 | Perez et al. | Apr 2013 | A1 |
20130113943 | Wormald et al. | May 2013 | A1 |
20130182002 | Macciola | Jul 2013 | A1 |
20130182970 | Shustorovich | Jul 2013 | A1 |
20140072201 | Tilt | Mar 2014 | A1 |
20140297256 | Rogowski et al. | Oct 2014 | A1 |
20160037087 | Price | Feb 2016 | A1 |
20160071319 | Fallon et al. | Mar 2016 | A1 |
20160309085 | Ilic et al. | Oct 2016 | A1 |
20160328607 | Krishnan et al. | Nov 2016 | A1 |
20160330374 | Ilic et al. | Nov 2016 | A1 |
20180024974 | Welinder et al. | Jan 2018 | A1 |
20180025251 | Welinder et al. | Jan 2018 | A1 |
20180184062 | Hariri | Jun 2018 | A1 |
Entry |
---|
Khan Z.H., et al., “Real Time Object Tracking Using BMA,” First International Conference on Information and Communication Technologies, 2005, 5 pages. |
Kim J., et al., “Video-based Document Tracking: Unifying your Physical and Electronic Desktops,” UIST Proceedings of the Annual ACM symposium on User interface Software and Technology, 2004, 9 pages. |
Non-Final Office Action from U.S. Appl. No. 16/457,423, mailed Aug. 20, 2020, 26 pages. |
Non-Final Office Action from U.S. Appl. No. 16/830,047, mailed Oct. 29, 2020, 24 pages. |
Non-Final Office Action from U.S. Appl. No. 16/830,077, mailed Oct. 29, 2020, 21 pages. |
Non-Final Office Action from U.S. Appl. No. 17/315,027, mailed Aug. 18, 2022, 17 pages. |
Non-Final Office Action from U.S. Appl. No. 17/323,838, mailed Oct. 4, 2022, 13 pages. |
Notice of Allowance for U.S. Appl. No. 15/658,291 mailed on Apr. 15, 2019, 8 pages. |
Notice of Allowance from U.S. Appl. No. 15/658,289, mailed Dec. 11, 2019, 6 pages. |
Notice of Allowance from U.S. Appl. No. 16/457,423, mailed Apr. 30, 2021, 2 pages. |
Notice of Allowance from U.S. Appl. No. 16/457,423, mailed Feb. 24, 2021, 8 pages. |
Notice of Allowance from U.S. Appl. No. 16/457,423, mailed Mar. 26, 2021, 2 pages. |
Notice of Allowance from U.S. Appl. No. 16/830,047, mailed Apr. 29, 2021, 2 pages. |
Notice of Allowance from U.S. Appl. No. 16/830,047, mailed Mar. 10, 2021, 6 pages. |
Notice of Allowance from U.S. Appl. No. 16/830,077, mailed Apr. 19, 2021, 2 pages. |
Notice of Allowance from U.S. Appl. No. 16/830,077, mailed Mar. 22, 2021, 16 pages. |
Notice of Allowance from U.S. Appl. No. 17/315,027, mailed Dec. 13, 2022, 08 pages. |
Notice of Allowance from U.S. Appl. No. 17/315,027, mailed Dec. 20, 2022, 02 pages. |
Notice of Allowance from U.S. Appl. No. 17/323,838, mailed Dec. 2, 2022, 13 pages. |
Notice of Allowance from U.S. Appl. No. 17/323,838, mailed Mar. 8, 2023, 02 pages. |
Office Action for U.S. Appl. No. 15/658,289 mailed on Jan. 28, 2019, 17 pages. |
Office Action for U.S. Appl. No. 15/658,289 malled on Jun. 29, 2018, 19 pages. |
Office Action for U.S. Appl. No. 15/658,291 mailed on Oct. 16, 2018, 13 pages. |
Office Action for U.S. Appl. No. 15/658,289 mailed on Jun. 25, 2019, 18 pages. |
Pozik L., et al., “Visual-Inertial Tracking on Android for Augmented Reality applications,” 2012 IEEE Workshop on Environmental Energy and Structural Monitoring Systems, Electronic ISBN: 978-1-4673-2738-1, 7 pages. |
Non-Final Office Action from U.S. Appl. No. 18/295,043, mailed Dec. 7, 2023, 9 pages. |
Notice of Allowance from U.S. Appl. No. 18/295,043, mailed Apr. 1, 2023, 8 pages. |
Number | Date | Country | |
---|---|---|---|
20230237247 A1 | Jul 2023 | US |
Number | Date | Country | |
---|---|---|---|
62365914 | Jul 2016 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 17323838 | May 2021 | US |
Child | 18295049 | US | |
Parent | 16830047 | Mar 2020 | US |
Child | 18295049 | US | |
Parent | 15658289 | Jul 2017 | US |
Child | 18295049 | US |