Technical FAQs

Question

I need to store a unique ID with each of my marks. Is the ID returned by Mark.GetID() unique?

Answer

The ID generated by Mark.GetID() is only unique for that instance of the viewing session (for example, if you refresh the page, the counter for mark IDs will reset to 1).

If you are saving your marks to markup layers using the SaveMarkupLayers() method, then each mark will have a unique ID generated which will be stored in the “uid” key in the markup layer JSON.

If you are saving your marks as XML, using the SaveMarks() method, then each mark’s unique ID will be stored in the key “nodeId”.

If you want to generate your own unique ID for your marks, you can include the code below in your viewer.js to generate a UUID. A UUID contains 122 randomly generated bits so you shouldn’t need to worry about any duplicate IDs:

    function uuidv4() {
      return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
        (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
      )
    }

You can store this UID in the marks data using Mark.SetData("ID", uuidv4());.

You can then use Mark.GetData("ID"); to retrieve the ID at a later time.

Question

We are planning to upgrade our PrizmDoc Server and PrizmDoc Client to the latest major version. What is the best practice for doing so?

Answer

For best results, you will want to follow the instructions below to ensure the cleanest upgrade of the newest version:

NOTE: Before starting, make a backup of the following configuration files for use as reference when re-configuring your new version installation. This should be done before the PrizmDoc installer is run, as all configuration files will be replaced with new ones (resetting them to their default configuration).

  • Prizm Server Configuration: prizm\prizm-services-config.yml

  • Prizm Client Configuration (Windows): prizm\pas\pcc.win.yml

  • Prizm Client Configuration (Linux): /usr/share/prizm/pas/pcc.nix.yml

  • ServiceHost Configuration: prizm\PCCIS\ServiceHost\pcc.config

How To:

  1. Uninstall the previous version of PrizmDoc Server and PrizmDoc Client. Be sure to delete all PrizmDoc folders that are still present. For Windows you can Find PrizmDoc Server and Prizm Client under Add/Remove Programs. For Linux, please follow instructions below for uninstall instructions.

Linux Prizm/PAS Service Uninstall:

https://help.accusoft.com/PrizmDoc/latest/HTML/webframe.html#linux-uninstall-prizmdoc-serve.html

https://help.accusoft.com/PrizmDoc/v13.10/HTML/webframe.html#pas-linux-uninstallation.html

  1. Download the latest version of PrizmDoc for your operating system from https://www.accusoft.com/products/prizmdoc-suite/prizmdoc-viewer-builds/

  2. Install PrizmDoc Server first and then the PrizmDoc Client.

  3. At the end of the server installation, the install may request a reboot.

  4. Make a backup of your new configuration files as listed above.

  5. Modify each of the new configuration files and make the same changes as you did in the older configuration files.

NOTE: Do not just replace the new configuration files with the old version configuration files, as new configurations may have been introduced in the new version and they would be lost.

  1. Restart the Prizm Services and Prizm Application Services to ensure the newly configured file changes take affect.

NOTE: If either service fails to start with an error after modifying the configuration files, replace the configuration files with the original copy of the configuration files and try making the changes again.

NOTE: If you are using viewing packages and have an existing database, we provide additional scripts in the \prizm\pas\db folder to modify your existing database. For example, upgrading from PrizmDoc 12.x to PrizmDoc 13.x we provide an additional script addTenantId to add a new field to one of the existing tables.

Question

We are using the Webforms Samples and want to know how to enable the “Always User Raster” feature. Which file needs to be modified and how should it be modified?

Answer

In order to enable the “Always Use Raster” option for our Webforms sample, you will need to do the following:

  • Modify the Default.aspx file
  • Update the Central Configuration file

How To:

  1. In the Sample, before modifying, make a backup of the following file for safekeeping:

\Prizm\Samples\dotnet\webforms\full-viewer-sample\Default.aspx

  1. In the original file, modify the code that is located close to line 115:

\Prizm\Samples\dotnet\webforms\full-viewer-sample\Default.aspx

Line to Replace:

} else {
        sessionData.source = getDocumentSource(query.document || '');
        }

Replace with:

} else {
        sessionData.source = getDocumentSource(query.document || '');
        sessionData.render = {
          html5: {
             alwaysUseRaster: true
          }
       };
}
  1. Next, to update the Central Configuration file you will need to stop the Prizm Services.

  2. Make a backup of the prizm\prizm-services-config.yml file.

  3. Edit the .yml file and remove the leading # for the following line and add true to the array so that it looks like the following:

viewing.sessionConstraints.render.alwaysUseRaster.allowedValues:
[true, false]

  1. Restart the Prizm Services.
Question

When viewing an Excel document with hidden content in the viewer, the content remains visible when otherwise expected to remain hidden. Is this intended behavior?

Answer

Short answer: Yes.

Currently, both PrizmDoc Cloud and PrizmDoc Viewer (Self-Hosted) are configured to render hidden content by default, so this is expected behavior.

For PrizmDoc Viewer (Self-Hosted) users, this rendering behavior is configurable using the central configuration file.

The file paths for the central configuration file are:

  • Linux: /usr/share/prizm/prizm-services-config.yml
  • Windows: C:\Prizm\prizm-services-config.yml

Simply add/modify the following parameter:

fileTypes.excel.renderHiddenContent: false

Setting the render option to false will hide content as expected, whereas true will render it.

Question

What features does PAS provide that I don’t get from exclusively using the backend?

Answer

The following features are provided through PAS:

  • Viewing Packages
  • Annotation storage/retrieval
  • Form Definition storage/retrieval
  • Simplified API to communicate with the backend
  • Affinity token management (clustered mode)

It is also important to note that all new feature development will involve PAS.

Features not offered through PAS include:

  • Content Conversion output to anything other than PDF.
Question

In PrizmDoc Viewer, when viewing Excel documents that have pictures on certain spreadsheets within that document, the pictures are not displayed.

This appears to happen only if PrizmDoc has the Microsoft Office Conversion (MSO) feature enabled. This issue does not occur if PrizmDoc is using LibreOffice.

Why is this happening?

Answer

The issue is related to an Excel “Page Setup” option called “Black and white”. The option is located in Excel under File, Print, Page Setup and is only respected when PrizmDoc has the MSO feature enabled.

When using LibreOffice, this setting does not exist and is ignored, which is why you can see the pictures.

By default, this option is disabled in Excel, so that specific option would have to be manually set by the creator of the document.

As a workaround, ensure that the “Page Setup” option for “Black and white” is not checked on any spreadsheets in an Excel document that has pictures.

Question

I am integrating PrizmDoc using just the API to convert documents, and I am noticing an initial delay of about 10 seconds before the conversion starts.

Why is this happening?

Answer

One of the likely reasons this could happen is if your PrizmDoc Server is not licensed properly or if you are running in the Evaluation mode. In such cases, there are restrictions in place.

Among those restrictions is an artificial delay of 10 seconds imposed before viewing or conversion operations begin. A dialog window normally indicates this in the Viewer interface, but if you are just making API calls to the server, it will not be apparent.

A valid product license is required to eliminate these restrictions, which can be done as follows: https://help.accusoft.com/PrizmDoc/latest/HTML/prizmdoc-server-docker.html#2-configure-your-license.

Today’s organizations are inundated with a variety of document and image formats on a regular basis. By integrating comprehensive PDF functionality into their applications, developers can provide the tools to manage those files much more easily. Converting files into PDFs makes them easier to share, modify, and annotate without having to worry about compatibility issues across applications.

Simply converting documents or images into searchable PDF files is easy enough, but in many cases, several files need to be merged into a single document or one large file must be split into multiple documents. Accusoft’s ImageGear SDK gives applications the ability to process PDFs programmatically, allowing users to quickly prepare documents for viewing and collaboration.

How to Merge PDF Files with ImageGear Using C#

ImageGear can merge two multi-page PDF documents into a single document. This is especially useful for organizations that have multiple files associated with the same workflow or account, such as loan applications or medical records. The following steps will walk you through the merge PDF process using ImageGear.NET in C#.

Step 1: Initialize PDF Support

Before getting started, you’ll need to initialize PDF support within ImageGear.NET (if you haven’t done so already during deployment). This initialization will allow your application to load, save, and process PDF files.

After creating a new “Console Application” and adding the required assembly reference and resources, you can use the following code snippet to load and save PDF files.

 

using System.IO;
using ImageGear.Formats;
using ImageGear.Formats.PDF;
using ImageGear.Evaluation;
namespace MyPDFProject
{
    class Program
    {
        public void Initialize()
        {
            // Initialize evaluation license.
            ImGearEvaluationManager.Initialize();
            ImGearEvaluationManager.Mode = ImGearEvaluationMode.Watermark;
            // Initialize common formats.
            ImGearCommonFormats.Initialize();
            // Add support for PDF files.
            ImGearFileFormats.Filters.Insert(0, ImGearPDF.CreatePDFFormat());
            ImGearPDF.Initialize();
        }
        public void Terminate()
        {
            // Dispose of support for PDF files.
            ImGearPDF.Terminate();
        }
        public void LoadAndSave(string fileIn, string fileOut)
        {
            ImGearPDFDocument igPDFDocument = null;
            try
            {
                // Load the PDF document.
                using (FileStream inStream = new FileStream(fileIn, FileMode.Open))
                    igPDFDocument = (ImGearPDFDocument)ImGearFileFormats.LoadDocument(inStream, 0, (int)ImGearPDFPageRange.ALL_PAGES);
                // Save the PDF document to a new file.
                ImGearPDFSaveOptions pdfOptions = new ImGearPDFSaveOptions();
                using (FileStream outStream = new FileStream(fileOut, FileMode.Create))
                    ImGearFileFormats.SaveDocument(igPDFDocument, outStream, 0, ImGearSavingModes.OVERWRITE, ImGearSavingFormats.PDF, pdfOptions);
            }
            finally
            {
                igPDFDocument?.Dispose();
            }
        }
        static void Main(string[] args)
        {
            Program myProgram = new Program();
            myProgram.Initialize();
            myProgram.LoadAndSave(@"C:\PATHTOPDF\FILENAME.pdf", @"C:\PATHTOPDF\NEWNAME.pdf");
            myProgram.Terminate();
        }
    }
}

       

 

Step 2: Set the Merge PDF Parameters

You will need to determine what order the documents will be combined in and set the page numeration for the new document.

Step 3: Merge the PDF Documents

Once you’ve identified the files you want to merge and the order they should go in, you can use the “MergePdfDocuments” command to assemble the new PDF file. Here’s what the code snippet looks like in C#:

 

        // Merges two PDF document into a third PDF document.
        public void Merge(string fileInFirst, string fileInSecond, string fileOut)
        {
            // ImageGear uses zero-based page numbers.
            const int FIRST_PAGE_INDEX = 0;
            ImGearPDFDocument igPDFDocumentFirst = null;
            ImGearPDFDocument igPDFDocumentSecond = null;
            ImGearPDFDocument igPDFDocumentResult = null;
            try
            {
                // Load the source PDF documents.
                using (FileStream inStream = new FileStream(fileInFirst, FileMode.Open))
                    igPDFDocumentFirst = (ImGearPDFDocument)ImGearFileFormats.LoadDocument(inStream, 0, (int)ImGearPDFPageRange.ALL_PAGES);
                using (FileStream inStream = new FileStream(fileInSecond, FileMode.Open))
                    igPDFDocumentSecond = (ImGearPDFDocument)ImGearFileFormats.LoadDocument(inStream, 0, (int)ImGearPDFPageRange.ALL_PAGES);
                // Create the resulting PDF document.
                igPDFDocumentResult = new ImGearPDFDocument();
                // Copy all pages of first document into resulting PDF document.
                for (int pageIndex = FIRST_PAGE_INDEX; pageIndex < igPDFDocumentFirst.Pages.Count; pageIndex++)
                    igPDFDocumentResult.Pages.Add(igPDFDocumentFirst.Pages[pageIndex].Clone());
                // Copy all pages of second document into resulting PDF document.
                for (int pageIndex = FIRST_PAGE_INDEX; pageIndex < igPDFDocumentSecond.Pages.Count; pageIndex++)
                    igPDFDocumentResult.Pages.Add(igPDFDocumentSecond.Pages[pageIndex].Clone());
                // Save the resulting PDF document to a new file.
                ImGearPDFSaveOptions pdfOptions = new ImGearPDFSaveOptions();
                using (FileStream outStream = new FileStream(fileOut, FileMode.Create))
                    ImGearFileFormats.SaveDocument(igPDFDocumentResult, outStream, 0, ImGearSavingModes.OVERWRITE, ImGearSavingFormats.PDF, pdfOptions);
            }
            finally
            {
                igPDFDocumentFirst?.Dispose();
                igPDFDocumentSecond?.Dispose();
                igPDFDocumentResult?.Dispose();
            }
        }
        static void Main(string[] args)
        {
            Program myProgram = new Program();
            myProgram.Initialize();
            myProgram.Merge(@"C:\PATHTOPDF\FIRSTFILENAME.pdf", @"C:\PATHTOPDF\SECONDFILENAME.pdf", @"C:\PATHTOPDF\NEWNAME.pdf");
            myProgram.Terminate();
        }

 

After merging your files into a new document, you can begin working with the resulting PDF using ImageGear’s other PDF features:

How to Split PDF Files with ImageGear Using C#

While the merge PDF command is used to combine multiple documents into a new, single PDF file, the split PDF command saves pages from an existing document as a separate document. A three-page PDF file, for instance, can be broken into three, single-page PDF documents.

Once you’ve initialized PDF support for ImageGear.NET, you can split a PDF document by following a few simple steps:

Step 1: Read the PDF into a System.IO.Stream Object

This allows ImageGear to read the stream using ImGearFileFormats.LoadDocument(FILE NAME) command.

Step 2: Determine PDF Page Count

The ImGearPDFDocument.Pages property provides access to the document’s page array, which can then be used to assemble a new document.

Step 3: Create a New PDF Document

The ImGearPDFDocument object can be used to create an empty PDF document that will serve as the destination file for the split pages.

Step 4: Insert Pages into the New Document

The InsertPages command takes specific pages from the source document (the PDF you’re splitting), and inserts them into the destination document. After the pages are inserted, you can save the new PDF to disk or memory. Keep in mind that the original document will still contain all pages, so splitting it into two documents will require you to create two new documents.

Here is a what splitting a single PDF document into several single-page PDF documents looks like in C#:

 

public void Split(string fileIn, string directoryOut)
        {
            // ImageGear uses zero-based page numbers.
            const int FIRST_PAGE = 0;
            // Ensure output directory exists.
            if (!System.IO.Directory.Exists(directoryOut))
                Directory.CreateDirectory(directoryOut);
            // Load the source PDF document.
            using (FileStream inStream = new FileStream(fileIn, FileMode.Open))
            {
                using (ImGearPDFDocument igPDFDocument = ImGearFileFormats.LoadDocument(inStream, FIRST_PAGE, (int)ImGearPDFPageRange.ALL_PAGES) as ImGearPDFDocument)
                {
                    // Write each page in source PDF document to a separate PDF file.
                    for (int pageIndex = FIRST_PAGE; pageIndex < igPDFDocument.Pages.Count; pageIndex++)
                    {
                        // Construct the output filepath.
                        string outputFileName = string.Format("{0}_{1}.pdf", Path.GetFileNameWithoutExtension(fileIn), pageIndex + 1);
                        string outputPath = System.IO.Path.Combine(directoryOut, outputFileName);
                        // Create a new empty PDF document.
                        using (ImGearPDFDocument igPDFDocumentResult = new ImGearPDFDocument())
                        {
                            // Insert page into new PDF document.
                            igPDFDocumentResult.InsertPages((int)ImGearPDFPageNumber.BEFORE_FIRST_PAGE, igPDFDocument, pageIndex, 1, ImGearPDFInsertFlags.DEFAULT);
                            // Save new PDF document to file.
                            igPDFDocumentResult.Save(outputPath, ImGearSavingFormats.PDF, FIRST_PAGE, FIRST_PAGE, 1, ImGearSavingModes.OVERWRITE);
                        }
                    }
                }
            }
        }
        static void Main(string[] args)
        {
            Program myProgram = new Program();
            myProgram.Initialize();
            myProgram.Split(@"C:\PATHTOPDF\FILENAME.pdf", @"C:\PATHTOPDF\OUTPUTDIRECTORY");
            myProgram.Terminate();
        }

 

Enhance Your PDF Capabilities with ImageGear

Accusoft’s ImageGear SDK provides a broad range of document and image processing functions beyond the ability to split and merge PDFs. Whether you need powerful file conversion capabilities, multi-language OCR support, or image cleanup, correction, and transformation functions, ImageGear integrations can enhance your application’s performance and versatility. 

Learn more about the ImageGear collection of SDKs and see how they can help you shorten your development cycle and get your innovative products to market faster.

Seventy-six percent of companies surveyed plan to prioritize machine learning (ML) and artificial intelligence (AI) deployments in 2021. Despite increased uptake, however, there is still a great deal of confusion surrounding these advanced concepts. In order to understand how organizations hope to leverage ML and AI in their technology initiatives, it’s helpful to take a step back and examine how they work and how they differ from each other.

What Is Machine Learning?

Machine learning uses statistics-driven algorithms to find patterns in massive amounts of data. These algorithms are designed to improve over time as they process more data to enable more accurate outputs. Machine learning is widely used to produce predictive recommendations — companies such as Google, Netflix, and Facebook collect data about user behaviors and feed it into machine learning algorithms which then produce targeted search results, movie recommendations, or advertisements. 

The key to machine learning success is data. The more data available to ML algorithms — and the higher-quality this data — the better they’ll be able to identify patterns in current datasets and apply them to new data sources.

Most machine learning methodologies fall under one of two broad categories:

  • Supervised Learning: Developers classify and label data to guide the algorithm’s inputs and outputs to ensure specific patterns are recognized. This method is time and resource intensive because it requires data scientists to capture, control, and curate data sources.
  • Unsupervised Learning: This approach provides ML algorithms with unlabeled and unclassified data and allows them to identify patterns based on unique data characteristics. Developers don’t interfere with the learning and pattern recognition process, instead evaluating the outputs for accuracy and modifying code as needed.

Why Does Machine Learning Matter?

Machine learning helps organizations leverage the massive amounts of data they’ve accumulated. This information is drawn from a variety of sources, including disparate forms and documents, data produced through customer transactions and service calls, and the ongoing operational data produced by staff as they interact with IT resources.

Thanks to both the rapid uptake of cloud computing and availability of large-scale data collection and analysis tools, these data volumes are increasing exponentially. As a result, aggregate assessment is now critical — companies need a way to rapidly and reliably derive patterns from available data, and apply these patterns to predictive action.

This is the evolving role of machine learning. By creating, testing, and deploying ML algorithms capable of rapid pattern analysis and application it’s possible for companies to benefit from this continual data influx rather than being constrained by the bounds of traditional data evaluation. To facilitate this process, many next-generation software tools and services are either equipped with built-in ML frameworks or are capable of interfacing with them.

Key Machine Learning Applications

The applications of machine learning are vast, but they tend to produce the best results when paired with existing processes that supplement human efforts or automate low-value, but labor-intensive, functions in the workplace. In effect, it has the potential to do almost anything a human mind can do, given enough time. 

Improved Data Capture

Capturing data from internal documents and customer-submitted forms can be cumbersome and time-consuming. It can also lead to wasted time and effort if data is incorrectly entered, duplicated, or accidentally deleted. By pairing machine learning tools with forms processing solutions like Accusoft’s FormSuite for Structured Forms, developers can build applications that identify, collect, and capture key data more efficiently and accurately. For example, a robot process automation (RPA) bot can be set up to receive extracted form data from FormSuite and then populate that information into the appropriate fields within an application. This not only accelerates forms processing workflows, but also greatly reduces the risk of data entry error. Properly implemented, automated data capture can act as a springboard for improved data insight and decision-making thanks to improved accuracy and consistency. 

Streamlined Content Creation

By combining machine learning algorithms and data sources with document editing tools, it’s possible to streamline key processes such as the creation of complex, compliance-bound content. One in-practice example is the use of Accusoft’s PrizmDoc Editor within the LegalSifter contract review and creation platform. By pairing its AI technology with PrizmDoc Editor’s document assembly capabilities, LegalSifter was able to quickly locate repetitive clauses and suggest replacements to create an automated contract creation experience for end users. 

What Is AI, and How Does It Relate to Machine Learning?

The terms artificial intelligence and machine learning are closely related and often used interchangeably, but they’re not identical.

Artificial intelligence refers to technologies that are capable of performing tasks like photo recognition or data pattern analysis with similar (or better) outcomes than human beings. Machine learning refers to the creation, testing, and refinement of the algorithms needed to support AI tools. In many ways, then, ML functions as a distinct process that helps make AI possible.

As noted by Toward Data Science, it often helps to think of AI, machine learning, and deep learning like a set of concentric rings. The smallest, inner ring is deep learning, which helps inform the middle ring of machine learning by providing layered neural network structures that improve the process of pattern recognition. The final, outside ring is AI, which depends on both deep and machine learning to deliver real-world results. 

Artificial intelligence tools can be broken down into two basic types:

  • Generalized AI: These tools are capable of solving problems bounded by a clear set of rules. Using the ML algorithms that underpin the larger AI structure, general AI applications can act on stimuli — such as a security alert from an IT network — and respond appropriately by creating and logging reports or looping in human agents. 
  • Narrow AI: These solutions are designed to solve specific, small-scale tasks. Building on the security example from above, a narrow AI application might see tools responding to specific threat events such as DDoS or ransomware attacks by deploying targeted, defensive responses that close active sessions, capture attack data, and prevent future connections from the same IP address. 

In practice, narrow AI tools can outperform their human counterparts in completing specific tasks, but are unable to translate this expertise into applicable action at scale. General tools come closer to mimicking human intelligence but are still a long way from replicating the depth and breadth of human thinking.

Limitations of AI

Much has been made about the potential of AI technologies to take the place of human staff, leading to a generalized sense of worry about the future of these tools at scale. Recent research, however, found that substantial confusion remains around not only the deployment of AI but the definition itself. In fact, one study found that 40 percent of AI startups in Europe were not actually using AI. In some cases, increasing market interest in AI tools encouraged the use of this term to help startups capture attention, in much the same way that rapid cloud adoption spurred the creation of a host of “cloud” companies that offered nothing of the sort.

Uncertainty around AI itself, however, also plays a role in this disconnect. Given the massive potential of AI to help companies solve both specific and generalized problems, the term can be applied in almost any context and made to fit almost any description.

Unlocking the Future

After spending many years confined to research projects and future-focused technology articles, both machine learning and artificial intelligence are making their way into the applications and software companies are deploying every day. As developers look ahead to building the next generation of technology solutions, they must not only think about how they can better leverage ML and AI principles, but also how to implement features that take advantage of them.

Accusoft’s collection of versatile SDK and API integrations deliver powerful viewing and image processing capabilities that help applications streamline workflows and enhance productivity. To learn more about how Accusoft can help you enhance the workflow in your machine learning or artificial intelligence projects, contact us today.

Few industries have been impacted by the proliferation of digital technology than the financial services sector. In fact, it’s one of the few markets where the average consumer can easily observe how much has changed in a short amount of time. Many people haven’t even set foot inside a bank for years, and millions pay all of their bills exclusively online. According to the US Federal Reserve, personal checks declined from 58.8 percent of non-cash payments in 2000 to just 8.3 percent in 2018. Both of these trends are driven by the increased convenience of FinTech applications, and the same changes have impacted the lending industry, as well.

What Is FinTech Lending?

Since the 2008 financial crisis, a new breed of lenders has become a disruptive force in the banking sector. Unburdened by the cumbersome infrastructure that makes large financial institutions slow to adapt to change, FinTech lenders utilize the latest technology to deliver a more responsive, personalized, and transparent lending experience to consumers. These innovative startups have combined easy-to-access digital platforms with sophisticated data analytics to streamline the lending process and deliver funds to borrowers much faster than could be accomplished with traditional loans.

Borrowers, it seems, have been quick to embrace this alternative source of lending. From 2013 to 2018, FinTech companies increased their share of the personal loan market from a mere five percent to thirty-eight percent. That rapid growth is a result of increased penetration into the digital marketplace and more flexible credit scoring that allows FinTech lenders to assess risk and approve loans more effectively. 

In the early days of the industry, most FinTech lenders still relied upon traditional FICO credit scores when evaluating a borrower’s potential to repay loans. Over time, however, they have used a variety of alternative scoring mechanisms driven by data collection algorithms to create a more dynamic picture of a borrower’s credit status. Between 2007 and 2015, for instance, the correlation between FICO scores and the rating system used by one prominent peer-to-peer FinTech lender declined from 80 percent to just 35 percent.

The “Tech” Behind FinTech Lending

The loan adjustment algorithms working under the hood of FinTech lending applications are incredibly sophisticated, but they need good data for fast, accurate underwriting. While traditional lenders focus on predictable data points like income, debt payments, and assets, the digital nature of FinTech applications allows them to go much more granular. By gathering insights from other customer applications, internet searches, and even geolocation data, they can create a more complex profile of each customer, which then allows them to structure loans and other financial products that meet their specific needs while also protecting the lender to unnecessary risk.

This new approach to lending has helped FinTech applications to cut down the “time to yes” on credit decisions from the three to five weeks commonly seen from traditional banks to as little as five minutes. Even more critically, they can use digital funding to deliver cash to borrowers in less than 24 hours compared to the typical lender’s three month response time.

Improving “Time to Yes” on Credit Decisions

In addition to deploying more sophisticated risk adjustment algorithms to assess credit worthiness, there are some additional ways that FinTech lenders can continue to improve performance and efficiency.

Embrace Paperless Automation

The first and most obvious step they can take is by eliminating paper forms from the application process whenever possible. One of the reasons why banks and other financial services organizations move so slowly is due to the time it takes to fill out, fax, scan, and review physical documents. Not only are these forms inefficient, but they’re also prone to clerical errors when an applicant’s data needs to be transferred from the form into a database or application. By digitizing the application process wherever possible and automating data capture, FinTech lenders can significantly cut down on processing times and eliminate the human errors that so often create additional delays.

Increase Document Management Versatility

Shifting to an emphasis on digital documentation brings another complication along with it because there are a variety of file formats used throughout the financial industry. Some documents need to be in a specific format for compliance purposes, and if customers are submitting files through a FinTech lending platform, they could be using multiple different file types. 

In order to streamline processing, FinTech applications need to be able to easily convert a wide range of file types into a few key formats that work best with their processing workflows. That means FinTech developers will need to integrate powerful document conversion tools into their software to ensure that they can avoid any troublesome incompatibility issues during loan processing.

Enhance Data Capture Capabilities

Although FinTech lenders are developing incredible algorithms capable of analyzing massive amounts of data to shorten credit application times, they are still dependent upon the information made available to them. That means developers need to implement data capture tools that can pull key data from a variety of sources and compile it into an easily searchable format. 

Optical character recognition (OCR) engines can quickly extract information for any number of documents and images to create searchable files that FinTech software can quickly process as needed. For hand-printed documents scanned into digital format, intelligent character recognition (ICR) tools can be deployed just as effectively, allowing FinTech lenders to gather data from a wide variety of sources.

Expand FinTech Lending Capabilities with APIs and SDKs

One of the easiest ways for FinTech developers to quickly build lending-friendly features into their applications is to leverage API and SDK integrations. Rather than building new functionality from scratch, they can instead take advantage of existing, proven solutions to enhance their applications. This allows them to keep the focus on the core differentiators of their FinTech lending platform, allowing them to process and approve loans faster while minimizing potential risk.

Accusoft’s collection of API and SDK integrations provide powerful viewing and processing capabilities when it comes to FinTech workflows. Whether you need to convert multiple file types quickly, clean up document images, or perform OCR data capture, Accusoft has the solution to unlocking your FinTech lending application’s potential.

Question

How can I get a document’s dimensions with PrizmDoc?

Answer

There are two methods you can use to do this with PrizmDoc:

The first method is using the requestPageAttributes() method from ViewerControl. This method allows you to get the width and height of a page in the document in pixels. Below is sample code on how to use requestPageAttributes() to get the attributes of page 1 of a document:

viewerControl.requestPageAttributes(1).then(function(attributes) {
    var pageWidth = attributes.width;
    var pageHeight = attributes.height;
});

The second method is done by making a GET request to the PrizmDoc server to get metadata for a page of the source document in a viewing session. The request is:

GET /PCCIS/V1/Page/q/{{PageNumber}}/Attributes?DocumentID=u{{viewingSessionId}}&ContentType={{ContentType}}

The content type needs to be set to “png” for raster content and “svgb” for SVG content. The request returns the data in a JSON object containing the image’s width and height. The units for the width and height are in pixels when the contentType is set to “png” and unspecified units when the content type is set to “svgb”.

The request also returns the horizontal and vertical resolution of raster content when the content type is set to “png”. This information is similar to pixels per inch, but the units are unspecified, so if you wanted to calculate the size of the document you can calculate it by width divided by horizontal resolution or height divided by vertical resolution. The resolution is hard-coded to 90 when contentType is set to “svgb”.

image processing

Accusoft’s ImageGear is a powerful image processing SDK integration that allows software developers to give their applications the ability to open, convert, and transform multiple image file formats. Given the complexity of image processing tasks, turning to a comprehensive SDK can save significant time and headaches in the software development cycle. Rather than building image manipulation features from scratch or seeking out multiple open source solutions for every processing need, developers can use ImageGear to add image processing essentials and whatever capabilities they need to keep their project on schedule.

8 Essential ImageGear Features

ImageGear delivers several noteworthy capabilities that are worth highlighting for developers looking to add image processing features to their applications. Here are a few of the most essential:

1. General Use Tools

Although ImageGear delivers a wide range of advanced image processing capabilities, it also provides a variety of conventional tools for image modification. Developers often incorporate these features into their application’s viewing interface, which allows users to easily alter images as needed. Some of the more commonly used tools include:

  • Image cropping 
  • Image rotation and resizing
  • Thumbnail creation
  • Sharpening/smoothing filters
  • Contrast adjustment/gamma correction
  • Red eye removal

2. Region of Interest Selection

Using ImageGear’s region of interest (ROI) features, it’s possible to create a freely shaped image area that can be targeted for additional processing. The ROI can be an ellipse or polygon shape, or it can be drawn freehand. Marking a specified area creates a 1-bit mask image to indicate which pixels will be affected by image processing algorithms.

3. Erosion/Dilation

ImageGear deploys mathematical morphology operations to help clean up and enhance binary images. Erosion works by removing layers of pixels from the inner and outer boundaries of defined regions in the foreground. This causes the white pixels in the foreground to shrink, which has the effect of making the area darker. Dilation performs the opposite function, increasing the boundaries of those same pixels to make the image region lighter. These functions are typically deployed in combination to remove objects or smooth borders on black and white or grayscale images.

4. Edge Detection

A key image processing capability, edge detection is used in pattern recognition, image matching, and 3D vision applications to identify the boundaries of objects within images. This function is particularly useful for image segmentation and data extraction tasks.

5. Speckle Removal

Speckling is the distinctive “salt and pepper” noise commonly found in many scanned or low resolution images. ImageGear has two different ways of removing speckles from an image to reduce noise and improve the overall quality without blurring details.

  • Despeckle Method: Removes color noise from a 1-bit image by finding the average color value within the ROI and replacing the other pixels in the speckle area with this value.
  • GeomDespeckle Method: Uses the Crimmins complementary hulling algorithm, which sends the image through a geometric filter that reduces speckle noise without compromising the edges of the original image.

6. ImageClean

The ImageClean function is a multi-faceted cleanup tool that uses several classes to perform common image processing tasks. Some of those tasks include:

  • Inverting white text or auto-inverting black text on a white background.
  • Auto-orientation or auto-cropping of an image.
  • Cleaning borders.
  • Dotted or solid line removal.
  • Punch hold removal.

7. Background Correction

ImageGear can identify the best-fit plane for an image and then adjust the image luminance tilt accordingly, either by increasing or decreasing the image plane. This method is particularly effective at correcting illumination gradients in low-quality digitized images.

8. Image Effects

As part of its image processing capabilities, ImageGear provides a wide array of image effects that can be used to transform or modify image files. Developers can easily integrate these tools into their application’s viewer to allow end users to easily alter images. Some of these image effects include:

  • Aging Effect: This effect adjusts image saturation and contrast to make an image appear worn and old. Noise and random vertical lines are also added to enhance the effect.
  • Boost Effect: Often used to make older or faded images look new and more vibrant, this effect increases saturation, brightness, and contrast.
  • Drop Shadow: This method adds a drop shadow to an image, which is often useful for setting an image apart from a background when combining visual elements.
  • Gaussian Blur: Typically used to smooth out composited images, this effect blurs pixels to soften images and make them appear slightly (or extremely) out of focus.
  • High Density Range Effect: This effect increases the contrast of shadow, highlight, and midtone areas separately, which mimics the human eye’s ability to adjust to lighting conditions rather than applying a uniform contrast adjustment.
  • Lens Flare Effect: Commonly used to make images appear more dramatic or realistic, this method simulates a bright light reflecting within the camera lens.
  • Solarize Effect: This effect sets a light threshold and then inverts the colors of any pixels that exceed that value. When applied to an image, it mimics the look of photographic film that was exposed to too much light during development.
  • Toy Camera Effect: Often used to liven up an image, this effect emulates the distortions and imperfections created by using a low-quality camera lens in poor shooting conditions. 
  • Sketch Effect: By blending the original image with a texture image, this effect can make the image look like it was sketched with a pencil or charcoal.
  • Artistic Effects: This feature includes a series of effects that make images look as if they were hand painted. Two of these methods, the Pointillist and Splatter methods, use randomly generated pixel elements that cause the resulting image to be different each time the method is applied.

Expand Your Image Processing Capabilities with ImageGear

The features listed above only scratch the surface of ImageGear’s capabilities. In addition to essential image processing tools, the SDK also allows developers to add document features like annotation, conversion, compression, and full-page optical character recognition (OCR). With support for dozens of file formats, ImageGear gives software teams the tools they need to expand their application’s capabilities without wasting months of valuable development time. To get a first-hand look at what ImageGear can do for your .NET application, download a trial today.