Technical FAQs

Question

We are running PrizmDoc on a Windows operating system and we noticed that our ms-office-conversion-service remained unhealthy even through a restart of the service. We also noticed an error in the MsOfficeConverter.log referencing the following error. What could be the cause?

“WARN – COM error occurs on 1 initialization attempt. Retrieving the
COM class factory for component with CLSID
{000209FF-0000-0000-C000-000000000046} failed due to the following
error: 80080005 Server execution failed (Exception from HRESULT:
0x80080005 (CO_E_SERVER_EXEC_FAILURE))”

Answer

The PrizmDoc MSO feature requires either Microsoft Office 2013 or 2016 to be installed in order to function properly. Based on the error, there is a Microsoft Office specific .dll file which is not registered properly.

The following process will re-register the .dll files and potentially resolve this issue (Note: for Step 2, this may vary depending on what directory you used to install Microsoft Office and the version of Office. You want to find the directory containing winword.exe):

  1. Run Command Prompt as Admin.
  2. Type cd C:\Program Files\Microsoft Office\Office15 or cd C:\Program Files\Microsoft Office\root\Office16
  3. Run winword.exe -regserver.
  4. Reboot the server.

If you don’t have the Prizm service set up to run on boot then make sure that Office applications are started by PrizmDoc, or from the command line, before being opened manually.

Question

How do I use a Network Drive path for Image and ART storage in my ImageGear .NET web application?

Answer

In an ImageGear .NET web application, you have to define the location of the images and annotations directory in the storageRootPath and artStorageRootPath configuration property.
In the current version of ImageGear .NET, the storageRootPath and artStorageRootPath do not work with a network drive path \\SERVER-NAME\sharefilename.

The workaround for this would be to create a Symbolic link from a local directory to the network drive directory.

  • To create a symbolic link: Open “Command Prompt” as Administrator and type in > mklink /d "local path" \\SERVER-NAME\sharefilename
  • Pass in the path of the symbolic link as image or art storage root path in your web.config: storageRootPath="local path" artStorageRootPath="local path"

The COVID-19 pandemic may not be the first pandemic to impact global supply chains, but its impact has been orders of magnitude greater than previous public health crises. Businesses around the world have been forced to contend with the twin challenges of transitioning to a remote workforce and overcoming severe supply chain disruption. As 2020 winds down to a close, it’s becoming clear that the pandemic may well represent a “new normal” for logistics strategy rather than a temporary situation.

3 Critical Supply Chain Challenges 

From implementing new technology to establishing relationships with alternative vendors, organizations across multiple industries are taking steps to meet the challenges confronting their supply chains in both the immediate and long-term future. One of the biggest areas of focus is barcode integration. Although they may not seem like they belong at the forefront of innovation, barcodes are scanned more than six billion times every day and serve an incredibly important role in modern supply chain management.

Here are a few of the biggest challenges organizations are facing:

1. Supply Chain Visibility

Speed and flexibility are competitive advantages in today’s on-demand marketplace. Customers want products delivered faster and will quickly lose faith in brands that fail to meet their expectations. According to a 2019 survey of online consumers, 72.7% of respondents were unlikely to order from a company again after a poor delivery experience. Given those high stakes, it’s incredibly important for organizations to maintain high levels of visibility into their supply chains.

Barcode technology makes it possible to track products and materials throughout the entire production and distribution process. A quick scan is all that’s needed to update an item’s status every time it’s processed at a location. That information feeds into inventory tracking software that allows businesses to get a more accurate picture of how shipments move through their supply chain. This visibility makes it easier to identify potential problems and enhance overall logistics efficiency. 

2. Digital Transformation

Despite the growing emphasis on digital transformation across the economy, the average supply chain is still held back with inefficient, legacy infrastructure. Small and medium-size businesses face the greatest challenges, with only 21% of them using digital tools to integrate their supply chain operations with other departments. In the retail industry alone, bad processes and data disconnects cost companies over $500 billion annually. As the holiday season draws nearer and promises to bring with it a massive increase in online shopping, having a fully digital supply chain in place with enough speed to handle that demand is essential.

Implementing the right digital technology tools can help organizations to streamline their supply chains and gather the data they need to make better decisions. Barcode integration software is a foundational component of this transformation because it forms a bridge between the physical and digital elements of logistics management. Shipments can be instantly scanned into tracking systems to provide a wealth of data points across the supply chain, making it easier to adapt to disruptions and develop better processes. Barcode libraries also need to be able to scan and decode both traditional 1D codes and newer 2D codes quickly and accurately to keep products moving swiftly and smoothly to consumers.

3. Automation

As many organizations have put social distancing protocols in place during the pandemic to protect the health of both employees and customers, automation has become more important to supply chain performance than ever before. These COVID-19 pressures are sure to accelerate what was already a growing push toward implementing automated software and systems. Gartner even projected in 2019 that 30% of warehouse workers will be replaced by collaborative robots by 2023, which will further drive the demand for automated scanning and inventory management tools to accompany them.

For these automated systems to work effectively, they will need robust software that can withstand the difficult working conditions of warehouses, assembly lines, and distribution centers. A barcode integration that struggles to accurately read damaged or broken barcode images, for instance, won’t last very long in such an environment. The software powering automated systems must be able to function under a variety of conditions and be adaptable enough to overcome obstacles without constant oversight from on-site workers.

Unleash Your Supply Chain With Barcode Xpress

Building software capable of meeting the needs of a truly digital supply chain is no easy task. That’s especially true when it comes to integrating barcode reading capabilities into supply chain applications. With so many barcode formats in use, developers need an SDK with the ability to accurately detect, read, and write both common and uncommon barcode types used across all industries.

Accusoft’s Barcode Xpress is a multi-language barcode integration capable of reading and writing more than 30 different barcode types quickly and accurately. A truly robust SDK solution, Barcode Xpress leverages the imaging functionalities of ImagXpress to repair damaged orbroken barcodes that other readers are unable to read.

Speed

Barcode Xpress is capable of detecting and decoding multiple barcodes on a page at speeds of up to 1,000 pages per minute. It doesn’t matter where the barcode is located, what type of code it is, or how many are present. The control is able to read them regardless of orientation within milliseconds.

Accuracy

Every time Barcode Xpress detects a barcode, it not only provides the information encoded within the image, but also reports a confidence value to ensure high levels of accuracy. Damaged, broken, or poorly printed barcodes can also be scanned thanks to the SDK’s image processing capabilities. Black noise, white noise, erasures, low resolution, white line streaks, and other common barcode problems are reconstructed and scanned automatically to keep the supply chain moving.

Versatility

With the ability to detect, read, and write over 30 different barcode types, Barcode Xpress is available in multiple configurations for Windows and Linux-based operating systems. The SDK library supports 24-bit color images, 8-bit grayscale images, and 1-bit black and white images, as well as providing more than 80 additional image processing and editing functions thanks to its ImagXpress integration.

Experience Barcode Xpress Today

Easy to deploy and utilize, Barcode Xpress is a true all-in-one solution for desktop and web applications seeking barcode recognition capabilities. Just a few lines of code is all it takes to unlock the full potential of your supply chain technology.

Find out just how simple barcode integration can be with Barcode Xpress. Sign up today to download a free trial or talk to one of our SDK specialists today to learn more.

OCR form

An automated forms processing solution can significantly improve accuracy and efficiency when it comes to managing large quantities of documents containing structured content. Whether an organization needs to digitize existing records or is continuously processing new documents within application workflows, having a versatile optical character recognition (OCR) component working to identify and extract text from multiple languages allows them to capture data more effectively.  Solid OCR form capture is critical.

Although a good OCR engine operates quickly and efficiently, the process of recognizing and extracting text is a highly complex undertaking that can be impacted by a variety of factors. Under optimal conditions, for example, the OCR component within Accusoft’s FormSuite can generate results quickly and accurately, with the ability to read several languages from around the world. However, if an application’s forms processing workflow is not set up efficiently or overlooks a few important considerations, recognition performance may suffer in terms of speed and accuracy.

6 Ways to Achieve the Best Results with the Accusoft OCR Component in FormSuite

 

1. Pay Attention to Image Resolution

As a general rule, OCR components should be provided with high resolution images so the recognition engine is able to distinguish the details that would otherwise be missed on low resolution images. This helps them to recognize the differences between “l” and “i” or “O” and “0” (zero), which results in better, more accurate results.

However, there could be a problem if the image resolution is too high. These images require much more time to process without delivering any benefits since the required letter properties are clearly distinguishable in a lower resolution.

To strike a balance between speed and accuracy, it’s better to scan all images in a 150-400 dots-per-pixel range. This allows the recognition engine to identify all possible letter properties and avoid being bogged down with analyzing a lot of data at the same time.

2. Don’t Lose Image Properties While Preparing to Recognize

To achieve the best results, it’s important to provide the recognition engine with a few helpful hints. In some cases, resolution properties may be lost while an image is being prepared for recognition, leading to worse than expected results. This happens most frequently when working with System.Drawing.Image or SystemDrawing.Bitmap classes directly during operations like clipping, merging, or reducing the bit depth. 

In this case, the best solution is to make sure that HorizontalResolution and VerticalResolution properties are set correctly and reflect initial image resolution values. The ScanFix component within FormSuite can perform this task automatically and is designed to be compatible with the OCR component to help achieve better recognition results.

3. Clean Up Underlined Text Before Recognition

Specks, dirt, and other imperfections within the source image can significantly reduce recognition quality. Sometimes, however, even a seemingly good image can be recognized incorrectly when there are underlined words like URLs, emails, or specifically formatted generic text. 

From the software’s point of view, this kind of text isn’t very different from other types of image distortion. ScanFix’s LineRemovalOptions can clean up the text by eliminating lines that could interfere with recognition. The API also features special parameters that ensures characters with low hanging elements (such as “j” or “y”) will be restored after line removal to avoid another potential recognition problem.

4. Use Long-Living Objects to Avoid Recognition Performance Drop

Creating a new instance requires OCR engine initialization and loading neural network data suitable for specific recognition parameters. This process is not resource free because of the data complexity and may cause delays from ~200 msec to 2 sec depending on the hardware and recognition properties. 

Existing Accusoft OCR instances may be reused to recognize other images with different properties. This will speed up the overall process because initialization will be done only once during the first AnalyzeField call and subsequent calls will be much cheaper in terms of computing resources.

5. Assign Instances to Their Own Worker Threads

Objects are thread safe and can be called from different threads. However, assigning an object to its own thread can avoid extra locking. One of the simplest ways to do this is to use C# Parallel.ForEach loop and create ConcurrentQueue with the pre-allocated objects. 

This ensures that the number of threads will not exceed the number of available CPUs. Any available instance can then be automatically assigned to recognize the images in their own thread while extra possible threads will wait until busy instances will be free to acquire.

Other common patterns are producer-consumer and map-reduce, which are more complex to implement but provide better flexibility when managing input data.

6. Dispose Objects to Avoid Memory High Memory Consumption

This is a generic rule for the C# to call a Dispose for the objects which use non-managed resources. FormSuite’s OCR component uses an external recognition engine, so it is highly recommended to call Dispose when the instance will not be required anymore. This can avoid a situation where the memory will not be available for different parts of the application, especially when a high amount of data exists for post-processing or the amount of available memory is low because of the different processes running in parallel.

Get Accurate OCR Data Capture Results with FormSuite

When properly configured and incorporated into a forms processing workflow, the FormSuite OCR component can accelerate automated data capture and reduce manual errors. Its zonal field recognition capabilities allow it to hone in on predefined field types to improve processing speed and accuracy. Developers can also adjust confidence values for recognition results to determine how frequently manual review is necessary. 

To get a hands-on look at how FormSuite incorporates OCR seamlessly into its collection of forms processing tools, schedule a free trial today.

Question

How do I remove XMP Data from my image using ImageGear .NET?

Answer

When removing XMP data in ImageGear, the simplest way to do this is to set the XMP Metadata node to null, like so:

ImGearSimplifiedMetadata.Initialize(); 
doc.Metadata.XMP = new ImGearXMPMetadataRoot();

Or, you can traverse through the metadata tree and remove each node from the tree:

// Example code. Not thoroughly tested
private static void RemoveXmp(ImGearMetadataTree tree)
{
ArrayList toRemove = new ArrayList();
foreach (ImGearMetadataNode node in tree.Children)
{
    if (node is ImGearMetadataTree)
        RemoveXmp((ImGearMetadataTree)node);

    if (node.Format != ImGearMetadataFormats.XMP)
        continue;

    toRemove.Add(node);
}

foreach (ImGearMetadataNode node in toRemove)
    tree.Children.Remove(node);
}
Question

I encounter an Unhandled Exception error, as shown below, in ImageGear when trying to load a page into the recognition engine.

Error Message: An unhandled exception of type
‘ImageGear.Core.ImGearException’ occurred in ImageGear22.Core.dll

Additional information: IMG_DPI_WARN (0x4C711): Non-supported
resolution. Value1:0x4C711

What is causing this and how can I fix it?

Answer

This is probably because the original image used to create the page didn’t have a Resolution Unit set.

Resolution unit not set in original image

To fix this, check if the page has a Resolution Unit set. If it does not, set it to inches. You should also set the DPI of the image as those values were probably not carried over from the original image since the Resolution Unit wasn’t set. The following code demonstrates how to do this.

// Open file and load page.
using (var inStream = new FileStream(@"C:\Path\To\InputImage.jpg", FileMode.Open, FileAccess.Read, FileShare.Read))
{
    // Load first page.
    ImGearPage igPage = ImGearFileFormats.LoadPage(inStream, firstPage);

    if (igPage.DIB.ImageResolution.Units == ImGearResolutionUnits.NO_ABS)
    {
        igPage.DIB.ImageResolution.Units = ImGearResolutionUnits.INCHES;
        igPage.DIB.ImageResolution.XNumerator = 300;
        igPage.DIB.ImageResolution.XDenominator = 1;
        igPage.DIB.ImageResolution.YNumerator = 300;
        igPage.DIB.ImageResolution.YDenominator = 1;
    }

    using (var outStream = new FileStream(@"C:\Path\To\OutputImage.jpg", FileMode.OpenOrCreate, FileAccess.ReadWrite))
    {
        // Import the page into the recognition engine.
        using (ImGearRecPage recognitionPage = recognitionEngine.ImportPage((ImGearRasterPage)igPage))
        {
            // Preprocess the page.
            recognitionPage.Image.Preprocess();

            // Perform recognition.
            recognitionPage.Recognize();

            // Write the page to the output file.
            recognitionEngine.OutputManager.DirectTextFormat = ImGearRecDirectTextFormat.SimpleText;
            recognitionEngine.OutputManager.WriteDirectText(recognitionPage, outStream);
        }
    }
}

 

Streamline Forms with Automation 

Forms are part of everyday business activities. Whether you work in insurance or healthcare, retail or staffing, forms are necessary to get the job done. One of the biggest struggles of forms is their manual nature. Software tries to streamline the collection of data, but often you’re still left scanning information and manually storing files on a drive for later use. 

However, digital forms aren’t exclusively available for the companies making the big bucks. Forms automation software shouldn’t be expensive. Docubee helps small companies and big businesses alike streamline their workflow processes with an economical, eco-friendly, and efficient solution.

 


 

The Economical Advantage

Digital forms processing helps users save money by enabling them to create smarter forms, use less paper, and minimize the time it takes to collect data.  After creating a form, use it as a template. Save time and money by eliminating the manual recreation of forms. 

Docubee helps users stay on top of tasks and track their progress. Eliminate hours spent sifting through spreadsheets and automate progress tracking to prevent bottlenecks in your business process. As a no-code workflow tool, Docubee can map, replicate, and update business processes in minutes, proving to be highly economical.

Companies using Docubee find the transition to form automation an economical one that leads the company to success. Employees focus on innovative processes instead. Chad Otar Forbes Councils Member states in his article, How Automation Can Help Your Small Business: “The approach to automation, constantly looking for ways to incrementally improve and automate your business, is the slow and steady path to success. It also allows you to track and optimize each new effort without feeling like you have to overhaul your business from head to toe each time.”

 


 

The Efficiency Gains

When you create a standard form and map out your business process workflow, you’re creating a more productive work environment for your team. Docubee’s Fast Form Creator helps users create reusable forms, route them to the appropriate party, track progress, and reduce manual paper-based data entry. 

Docubee populates documents from data in web forms and other system databases making the outcome efficient and timely.  Docubee’s dynamic web forms enable companies to automate their processes with the use of mobile-friendly web forms. This process creates a faster turnaround time and higher form completion rates.  

According to TechFunnel, Human Resource Departments “… often fail to engage new candidates and potential employees well enough, while automated software can help not only use data to find better-qualified candidates, but also support collaboration between management and HR. IT also helps better monitor and track all recruitment and onboarding activities.” 

 


 

Digital vs. Physical 

Saving the planet from unduly waste of paper is a major concern for most companies.  Docubee helps eliminate paper waste by storing all data in a digital format. Forms processing is expedited by the use of Docubee’s digital signature feature. Using this tool, users can track the progress and approval of forms. Digitally sign documents anytime, anywhere, on any device, and stop using fax machines or scanners to process your signature. 

According to  Business Guide to Paper Reduction:  “There does not need to be a distinction between paper reduction efforts that are good for the environment and good for the bottom line. The two even amplify each other – while cost-savings will be the most tangible benefit, a reputation for being environmentally conscious can also be good for business.” Point blank, Docubee eliminates this waste as it helps companies succeed as an environmentally conscious partner.

Economical, efficient, and environmentally friendly, Docubee is a business process automation tool that every growing company can use to build and process forms easily. With its adaptability and ease-of-use, Docubee provides an economical and efficient way for companies big and small to automate their processes.

Question

Using ScanFix Xpress (as illustrated in the ImageCleanUp sample) I can deskew an image, but the leftover blank space is filled with a user-specified pad color, which might clash horribly with the edges of the original image. Is it possible to automatically detect a matching pad color before executing a deskew operation?

Answer

A simple approach would be to crop off the four edges of the image, specified perhaps by a percentage of width/height floor-bound by a minimum pixel count, then use the RGBColorCount method from ImagXpress on each edge to generate a histogram for each color channel, find the most frequent or average intensity (or some combination of the most frequent and the average), and then find the average intensity among all four edges. Then this resultant color could be used as the pad color for the image when it is deskewed.

For example, you can crop out portions of an image using the Crop method of the Processor class…

// Crop out the top edge of the image referred to by proc.Image
Rectangle cropRectangle = new Rectangle(0, 0, inputImg.Width, verticalSliceSize);
_processor.Crop(cropRectangle);
return proc.Image;

We can do this for all four edges of the image. Then, for each edge, we can determine the frequencies at which each intensity occurs in the image’s pixel grid using the RGBColorCount Method…

int[] redHistogram, greenHistogram, blueHistogram;
_processor.Image = edge;
_processor.RGBColorCount(out redHistogram, out greenHistogram, out blueHistogram);

…now, redHistogram, greenHistogram, and blueHistogram will contain the frequencies of red, green, and blue intensities (0 to 255), respectively. We can use this data to extrapolate either the most frequent or the average intensity (or some combination of the two) in each channel. We can then construct RGB triplets representing the detected border color for that edge, and then average the values for each edge to get the appropriate overall pad color. 

For example (using an average intensity)…

public int[] DetectEdgeAverageColor(ImageX edge)
{
    int[] averageRGB = new int[] { 0, 0, 0 };
    int[] redHistogram, greenHistogram, blueHistogram;
    _processor.Image = edge;
    _processor.RGBColorCount(out redHistogram, out greenHistogram, out blueHistogram);

    int numPixels = edge.Width * edge.Height;
    averageRGB[0] = findAverageIntensity(redHistogram, numPixels);
    averageRGB[1] = findAverageIntensity(greenHistogram, numPixels);
    averageRGB[2] = findAverageIntensity(blueHistogram, numPixels);
    

    return averageRGB;
}

private int findAverageIntensity(int[] frequencies, int numPixels)
{
    double averageIntesntity = 0;
    for (int intensityValue = 0; intensityValue < 256; intensityValue++)
    {
        int frequencyOfThisIntesity = frequencies[intensityValue];
        averageIntesntity += (intensityValue * frequencyOfThisIntesity);
    }
    averageIntesntity /= numPixels;
    return (int)Math.Round(averageIntesntity);
}

This should produce an RGB triplet representing a color similar to the edges of the image to be deskewed.