Watch our short video in order to learn how to make non-searchable documents searchable with ABBYY FineReader Server.
Hello. Today I’d like to show you our ABBYY FineReader Server product. Now this product is a fantastic solution if you’re looking to make non-searchable documents into searchable documents and perhaps maybe even you have a variety of different formats that you’re dealing with as well. Now as you can see in front of us, the FineReader Server product comes with an administration console, which is where we administer how documents are coming in, what happens during process, and also what happens as they’re exported. Everything that happens here is done via a workflow and in essence this workflow is really where the nitty gritty of the solution takes place. So I’m going to show you an example workflow and there are seven tabs. There’s a general tab, which is where of course we put a name to the workflow. Also we determine the input source.
So is it a folder? Are we grabbing information from emails? Or is there something like a SharePoint system where we need to grab them from a document repository. But in today’s demo, I’m just going to quickly show you how we use a traditional hot folder to grab documents from. The input tab tells us where to grab those documents and in this case I’m using a shared folder, but we also can use FTP in this sense and although there are a lot of other settings here, I won’t necessarily go into the specifics with, I want to give you confidence that this software has been used to process billions of pages, so there are a lot of different settings you can use to kind of tweak it and tune it to work in your environment here. The next step is processing and this is where we determine the languages and also the OCR quality that we expect to receive out of the application.
The next step is how do we separate a document? Do we keep individual files? Do we want to use bar codes? Do we want to be able to use blank pages as a separator? There are a lot of different ways that organizations separate documents, but you can see here we have the ability to handle a variety of those different methods. Quality control tells us when and if we want a human involved in the process as part of a traditional OCR process. It’s important that we understand there’s a confidence level that the software provides and if for some reason there is low confidence for a given character or given document, we may want a human or a staff member to review the OCR results and therefore, any low confidence information is corrected before it’s exported into its final format. And so this tab on the quality control gives us the ability to set some of those settings here.
The indexing tab gives us the ability to set up different document types and therefore different fields for each document type. It also allows for a human to interact with the software and provide the ability to manually index a document. And then lastly we have an output tab. This output tab tells us what kind of format we want to standardize as the output. And you can see here I’m exporting a document as both a PDF and I’m exporting the text to a text file as well. We support a lot of different output formats. You control all of them and actually each of them have their own settings and destination locations that you can customize. So I won’t go into each one of those individually. But understand, once again being used over billions of pages, there’s a lot of ways that you can customize and make sure you’re getting the proper tuning and output format that you’re expecting.
So as you can see from a workflow perspective, it’s a very, very easy process for us. We set up these tabs, we’ve set up our settings, we hit okay and we move on. And actually what we’re going to do is show you this specific workflow in action. So I’m going to provide some documents to an input folder. Remember the input folder is where we’re told the software to grab the documents that we want OCR performed on. So I have some documents that are on my clipboard. I’m just going to drop them into our input folder and the software is going to monitor. As you see it just did that. It grabbed those documents and now it’s performing OCR on them. And now if we go look at an output folder, you will see that we will have both our PDF versions of these as well as a text version.
So the original documents that I sent in for OCR were JPEG formats, but now we are sending them out as PDFs and I also have access to all of the text on the documents. So now I can refer and use a control F to find different information on these documents. And just for fun, I did have the software provide the text file of each document so that you can rest assured that we’re extracting all the information on each file as well and grabbing that text. So ABBYY FineReader Server is a fantastic solution in this bulk OCR scenario where we want to make a non-searchable document or documents searchable and therefore be able to use them in downstream systems. Hope you enjoyed this video. If you have any questions, feel free to reach out to us. Thank you so much!
Watch our video in order to learn how to create a classification training batch in ABBYY FlexiCapture 12 which teaches the classifier system.
Hello. Today I’m going to show you how we create a classification training batch within ABBYY FlexiCapture and the concept of creating this classifier is the ability to teach the software how to determine document types automatically so that a human doesn’t have to be involved in telling the software the document type that is processing. So what I have are three separate types of documents. You can see them listed in my document definitions menu here and I’m just going to double click and show you that each document definition is blank. There are no samples, there’s not even fields here listed on the side. And what we’re going to do is tell the software using samples, how to determine the document type. So what I’ve done is I’ve created a classifier training batch and in just one second I’m going to show you how we load images. But I want you to understand that when we do classification, sometimes it’s helpful that we have documents listed in a folder and sub-folders with the document type listed separately. And the reason why we do that is just so that it’s easy for us to process them and keep the truth documents in the proper spot where they’re supposed to be.
Now on the classifier batch, before we get started, I want you to understand also that there are settings called “Classification Profile”. Also we have what’s called a recall or precision priority and it’s important for you to understand and research these types of settings and the effects thereof because they may impact how the software is looking at your documents and how it’s training and reviewing the document types and using that classification technology. But for today’s demo, I’m going to keep these defaulted so I’m just going to open my classifier batch and you can see here I’ve already put some documents in my batch and once we’ve loaded them, sometimes it’s nice to use our sub-folders to name the class. I’m actually going to click that and you can see it’s very quick. The software comes through and determines the class for us. Just for today’s demo, I’m going to properly set the section. I’m going to click on the document and set the section here on the right. Once I’ve done that, we can modify the state, but we’re going to leave these all “For Training”. In other words, the software is going to literally train itself using these documents. The other setting that you would get is “For Testing” and that can be changed on a per document basis as well. But for today’s date I’m going to use “For Training”. Okay, so I’m going to go ahead and select these and I’m going to tell the software to train.
Once the software is done performing its training, I’m going to simply hit a classify button up here on the menu. And what the software is going to do is use the logic that it trained itself on to determine the result class. The reference class is sometimes what we call a truth class. So that’s the actual answer. And then the result class is what the software is using and telling us is what it’s thinking that document type is. And that classify button, it gives us the ability to run what the software believes. The document type is here and use its own training.
Now that it’s done, you can see our result class matches everything and we’re good to go. There is a benchmark tool that you may want to use and determine how the software is reading a group of documents. But let me just share with you. When we use classification training, it’s very important that we potentially run classification training over hundreds of documents per document type. So even though I only have 11 that’s actually a very small amount of samples. In a real world scenario, we would use hundreds per document type to train the software because a given variety is good and the software needs to understand the different formats potentially that a document type may have. Now before we run some actual documents and determine how well we did as far as training, and I will tell you that it’s important that at this point, you go to “Project” and “Project Properties” and you make sure that we have a classification batch selected here as a classifier. You may need to do this on the batch type as well if you’re using batch types within your project. Okay, so I will go ahead and select that and I’ve had documents loaded here in a working batch for me and I’m just going to simply right click them and recognize what the software is going to do at this point is use that logic that we set up that classifier to determine what kind of document type these are.
So now that the software’s perform recognition, we can see it determined a document type per document and of course we do have these separated, so you can see there’s our banking applications and our questionnaires and our tax documents down here at the bottom. So now we continue processing documents around that classifier so that the software can determine automatically what those document types are. Once again, we would use potentially hundreds of documents samples to train the software and then from this point on we can tell the software and teach it using field extraction batches and other videos that we’ve produced, how to automatically using machine learning tell the software where to extract the data per document type, or even what we call a variant of the document type. So I’d hope you’ve enjoyed this video. This is a really quick preview of how we set up a classification training project, and if you have any questions, feel free to reach out to us. Thank you so much!
October is just around the corner, which means so is the 2019 ABBYY Content IQ Summit! This annually ABBYY hosted event is a wonderful opportunity for both clients and partners to learn alongside each other from experts in the technology industry about new trends and seek advice to improve their companies. This year’s event will … Read More
Watch our video in order to learn how to perform OCR Processing in Four Simple Steps in ABBYY FlexiCapture 12: Import, recognize, verify, and export.
Hello. I want to walk you through the four steps that we use when we do any sort of document automation or OCR process. Now the four steps are: we import documents, we let the software perform recognition, which is step number two. Step number three is we perform a verification step where if and only if we need to, a human will be involved in the verification of the OCR results. Then lastly, we export those results. Now what I’m going to do is I’m going to send some documents in, so this would represent the import step in the process. There are multiple ways to get documents into the software, but for today’s demo I’m going to show you how we can just right click and send documents in manually. Now to explain the other steps quickly, we can also allow the software to monitor a folder.
It can monitor an email box, you can scan documents, but for today’s demo we’re going to keep it solely focused on just uploading them from a tool that we offer here where you can just right click and send the documents in. I’m just going to simply select the project and then I’m going to go ahead and send these documents over to ABBYY FlexiCapture. At this point, the documents go into ABBYY and they become available to us after the recognition step is done. Now the recognition step happens behind the scenes, so there’s nothing to really see there besides ABBYY is using its intelligence to perform the data extraction that we’ve told it to. And then the next step verification is where we will go into a queue and look at the results. We can double click every single document. We’ll see the results here on the left and the copy of the document on the right and we would perform a manual verification and specifically look at items that maybe have these red flags so that we can put a little bit of attention to those business rule errors that are happening on documents.
The very next step. Then once we are done performing the verification on every document is we hit close task. This will allow the documents to be exported. Now when we export we have a lot of different options, but for today’s export I’m just going to show you that we’ve exported both a copy of the data so the data that we extracted on the document can be exported and a copy of the actual document itself is also exported as well or available to us for export. Now just a little caveat with exporting is that we have a ton of flexibility with exporting just like any other part of the application so we can export to flat files like what I’m showing you in this demo, but we can also export to databases and web services. We can call other applications in your internal business as well. So a lot of options here, but this is the four steps and once again that is import, recognition, which it happens behind the scenes where the software does its extraction.The third step is verification where we allow a human to be involved in reviewing the results. And then lastly, the export step, which gives us both a copy of the data that it extracted and the actual document itself. And typically that would be in some searchable format, so we can store that in a document repository. Thank you very much!
Watch our video in order to learn how to create an alternative layout in FlexiLayout Studio in the ABBYY FlexiCapture intelligent capture system.
Hello. Today I’d like to show you how we can use ABBYY FlexiLayout Studio to create an Alternate FlexiLayout or what we sometimes refer to as an Alternative FlexiLayout. And the reason why we would have an alternate is because we want to extract the same information from a variety of different forms, but the look and the feel and the structure of those forms are drastically different. And in this case we would want to tell the software that we’re going to use alternates and we’ll direct the software, how to figure out which alternative to use. The first thing I’m going to show you is what the documents look like. I have two transcripts and one is just from a generic like a homeschool document and the other one is from a document from Doe High School and I’ve already created the first one for us so that we don’t have to worry about this and waste video time to do so.
But this is the typical structure where you would add your search elements, define the header so that we can figure out which form this is and process those accordingly. Now I’m just going to add an alternate tier by right clicking at the very top of the tree and go in to add FlexiLayout Alternative. When I do that I will get a new set of search elements and you can see here I now have brand new search elements. And at this point I may want to rename these so that I can tell later on downstream which alternate is selected by the software. In this case, our typical document processing and FlexiLayout design happens just the same, so we will define a header and the header is very crucial because this is going to tell us how we locate this document and what makes it stand apart differently than the other ones.
And then of course we can have a footer. I disabled it in this case, but we can reference other footers. Now for ease of this video, I’m not going to describe how we would go and process the results accordingly, but you can see, I’m trying to find a student name and a GPA and just like any other FlexiLayout, we can add logic to go find that information using labeled fields and relations and all those cool little features that we have within the FlexiLayout Studio. But for today’s demo, I’m not going to do this. I’m just going to create the placeholders. So I’m just going to say this would be our student name and then of course we would provide logic and how to extract that in your forms and maybe I’m just going to select a different one for GPA. So now that we have the information being extracted and of course you can test and tune your documents, we would create a block. When we create a block, we will add the type of block, for example, student name, and this is where it actually becomes pretty important. We want to tell the software for this layout. So when you go to the Homeschool layout, I want you to reference the Homeschool student name and then you want to select alternative layouts and make sure you set the source element as well. And the software will automatically, of course with intelligence go to the proper FlexiLayout search element for us here.
So now I can see in the Doe Alternate FlexiLayout, I want to get it from this source and in the Homeschool I want to get it from this source and just to keep it very basic, we’ll do another one. This is going to be our GPA.
And in the Homeschool one we want to reference this GPA and in the Doe one we want to reference this GPA from this source element. So creating these different Alternate Layouts now has given us a lot of flexibility in where we control how the software extracts that information. Now let me just be clear. The normal designing and logic of a FlexiLayout still happens. So you want to define your headers and footers when and if applicable. You want to define your search elements and your relationships, and your grouping. Just like normal, but the only thing we’re dictating here is which FlexiLayout Alternate is being used. Now some things that is handy to do when you have an alternate is to be able to set the layout here. So we know that this one is going to be Homeschool.
And we know that this one is going to be Doe and the cool part is is now when we match, we can see here some logic that tells us when a document is referenced. So if it’s a certain check mark, we can tell that the software has referenced those for us. Now, just like normal FlexiCapture Studio, we would want to process these and test and make sure that what’s matching is green. And then of course we would export it. And just to show you on the other side how things look, I will open our project setup station.
So in our project setup station I’ve created a document definition and uploaded that FlexiLayout that we exported. But to show you the results here, you can see that even though I have one document definition, the content and location of those fields differ based on the layout. So this is a very cool way for us to kind of be able to dictate which layout the software is using, but have one FlexiLayout so that way we don’t have to have multiple document definitions for the same content. And so later on downstream we can have the same workflow, the same rules, the same export path that every other document in this document definition will have. So it’s a really good way for us to have one document definition and apply one FlexiLayout with Alternates here. So I hope you enjoyed this video! Please feel free to reach out to us if we can help you with anything!
We look forward to meeting with our customers and leadership from ABBYY USA during the Content IQ Summit 2019 being held in Nashville, Tennessee on October 23 – 25, 2019. Even if you are not yet using ABBYY software products we invite you to register and attend in order to learn more about the software … Read More
Watch our video to learn how to create a basic table in the ABBYY FlexiCapture FlexiLayout Studio application and the power of this innovative solution.
Today, I’d like to show you how we use the FlexiLayout Studio and our FlexiLayout out templates to extract tables or tabular information from documents. Now I’m going to show you my samples real quick. I have a document that has two pages worth of tables. We have a part number, a description or a name, and then we have a price and it’s two pages. It’s two pages long. And then my last sample here is another table where we have a name or description and we have a price, but we don’t have a part number. And so we want to extract this information from the documents. And make sure that we process them accordingly. So what I’m going to do, and this is probably one of the most important first steps that we can do, is we need to add a block. And this is going to be a table block. And what we’ll do here is we’ll create our columns. So I did share with you, we have a part number, we have a name, it’s a name or a description, and then we have a price. Okay, so we’re simply going to define our fields here and just to keep this video a little bit speedier, we’ve already assumed that we know the headers or how a document starts in our case, but let’s go ahead and add a table element. Now when we add a table element, we can of course give it an intelligent name and we can tell the software here about the columns. But if you realize it’s actually looking for a block, that’s the block that we created in the first step. So we’re just simply gonna go tell the software about that block. Now of course we’d want to name this something intelligent, like a table block, or something similar to that. So you can see here we have part number, name and description, and a price.
If you look at the properties of these, you can see we can get very, very specific. Now for ease of our first table, we’re going to keep it very simple and we’ll just simply use keywords as part of the name. But you can see, we can reference other elements of a document to tell us when a table starts honestly and when it even stops. So a lot of different configuration we can take here. I won’t do it for ease of this demo, but obviously super flexibility here when we’re extracting tables for this demo, I know that the word description is sometimes found or the word name is sometimes found, so I’m just simply going to tell the software. This can be name or description by using our pipe symbol there.
We have other columns that are pretty relevant to us. If there’s a fixed column order, we want to tell the software that, and I’ll just double click here so you kind of see what we do, but it’s really just defining your own order. You can have an array of these, so if you have multiple different ways, a document table comes in, you can of course set multiple different column orders for that. Here we’ll tell the software to use a header and we can even tell the software to look for a footer that is optional by default and we can tell the software how to detect rows. Now you can understand for this demo that I’m keeping it very simple and these are very simple tables, but I want you to understand the amount of flexibility you have here. As you just looked at those three tabs, there’s a lot of different options that we can use using source elements and other search elements that we have to get our tables zoned in here for us.
So once again, I have our columns here applied. I’m just going to go ahead and set these up to be processed. I’m just going to right click on our first item here and match. And what I’ll show you here is that we were able to extract the table. Now you can of course double click on the table and see some more of the specifics here. And you can see we’ve got our part number column, our name slash description column and our price column. And then here on my other sample, I will go ahead and match this one as well. And by clicking on the table element, I once again have the name, description, and the price and realized how in my demo here I don’t have a part number field. And there’s configuration of course that can either let that be optional or force it to be required.
But this is pretty awesome in how we extract a table. It’s very easy and it’s very flexible in the way we do it; a lot of different ways that we can configure it to do what we want it to do. But once I’ve extracted the table here, just as our usual practice, we can export this to our AFL file and then upload that to a project. And now we’re processing tables accordingly. I hope you enjoyed this video. Please let me know if you have any questions and thank you so much!
Watch or video in order to learn a more advanced method for creating tables in the ABBYY FlexiCapture FlexiLayout Studio by utilizing repeating groups.
Hello. Today I’m going to explain to you how we create tables but more advanced. And sometimes we get in situations where there’s repeating information or tabular information on a document, but we can’t use a table element as referenced in the first basic video of table extraction. So we have to use a strategy using repeating groups and repeating groups gives us the ability to grab that repeating information but with maybe a little bit more intelligence or a little bit more complexity. So as you can see on some of my samples here, I have a situation where we have documents that have information and tables in this first page is pretty easy, but then we start getting in situations like what you see here, where we have some information, at the top, and then then there’s some white space. And then there’s another section and some additional repeating information towards the bottom.
And although in some situations we can use tables for this, it’s, it’s probably more appropriate that we use some sort of repeating group elements so that we can tell the software how to find a row and repeat itself as that row continues. So let’s walk through this. I’m just going to go back to our first page here and I did set up prior to this video, the ability for us to ignore a header on these documents. Every single page of mine has a header and just for creating a very simple video, a very pointed video. I’ll go ahead and ignore how we did that, but really all we’re doing is we have our group here where we’re ignoring the top header so that doesn’t add any complexity to our video here of using repeating groups. So the very first thing I’m going to do is figure out how we can map a table and when it comes to a table we want to anchor the table by its columns initially.
So we know that name is a very good anchor and as I go across this I can see that name isn’t always listed, but if I can find the name column once, then I can tell where this. In this case, this price list, I can see where that column is referenced on each of them of these subsiding samples here. You can see here is another document with a name, and then of course it goes down. And then the last document here has also a name column. And then they’re also structured very similar. In this case what I’m going to do is find us the name column. So I’m just gonna create a search element and it’s going to be static text. And I’m going to say go find me the name column. So I can even call this our static name and I’m going to tell the software to find the name column. Once again, when you create a FlexiLayout, your documents will be different than mine and some of your concepts may be a little different than mine, but the way we attack them as probably very similar. So use your own names and your own types of elements. But in my case, I want to anchor off the names, so I’m going to tell the software here to always find it on the first page.
And then I’m also going to tell it, always just go find the point at the top. So if we do see the word “name” multiple times in a document, which should probably be fairly common. And as this type of document we’ll tell it just always give me the one that’s nearest to the top. In other words, go find the one that’s at the very top of the document. Here are the very top name column. So there we’re going to get the name column. Now it’s very important that we find a field like price to make that our anchor per row. Once again, we use the name field to be our anchor per table. But now we want to be a price field to be our anchor per row. Cause that’s very consistent. Now just because I know how the software works, I’m going to create what we call a separator cause I’m going to have the software repeatedly find me this row, but I need to somehow find the separator here and that separator will tell me where the price begins. So I’m just going to create an element and it’s going to be a separator. A separator is simply a line and I’m just going to give it a name and it’s going to be a vertical separator.
And then we have our relations here. I’m just going to tell it to use the name field and go to the right so that we find the separator to the right. So go find the name field and we’re going to say to the right and I’ll probably give it some sort of offset. And once again your documents may be a little different, but I’m just going to let it kind of push that over to the right there a little bit. So we have some room. And lastly what I’ll do here is say go find me the one nearest to the name. Now this is making the assumption that I have a good solid barrier here or a line in between the name and the price column. So I’m just going to match this document so you can kind of see what we did here.
And that’s the column. So we found name and we find a separator. So now I can tell the software, now that we know where name is and we know how to section off the page because we have the separator, now we can get into some intelligence. So what I’m going to do is create a repeating group and now we’re going to start working in building this table. When we create the group, we’re just going to call it our table field. And we’re going to create some intelligence here. So we’re going to tell the software to ignore. In my case the header, and this is just once again special to my documents here.
So we’re just going to tell the software to ignore all instances of this header so we don’t get any confusion. And I’m going to tell the software that it’s going to find these below that name field. So we’re just going to say below. And so the software is going to say, okay now I have repeating information that’s going to be below the name field. Pretty simple here. We have our table. Now let’s focus on price. Cause once again, prices are anchor. If I can find a price, I can find everything else related to this row. So what I’m going to do is create an element and we’re going to just in this case consider it a character string. And this is going to be our anchoring field. So I’m just going to call it cs price. Cs stands for character string. And I’m going to add my own alphabet here because I know we have some common characters that we find. And let’s just add common things that we see in documents or in prices here.
And then lastly, I’m gonna create a new relation. I’m going to say, okay, now that you can find these characters, go find it to the right of the name of this separator here.
I’m just going to go ahead and apply this and just so you can see it take place, I’m going to go ahead and walk through this. So here’s our name column. You can see it highlighted, here’s our separator. And then lastly you can see our price and we’re able to capture all of these currencies. And then if I of course match another page, it’ll be very similar because I have a name and I have a separator and I have the prices as well. So now we have price and that’s going to be our anchor. That’s our row anchor. So what we would commonly like to do as a best practice is we create a group and we’re gonna call this group our row. And this will be how we define the full row. So in this case, our row, we actually have properties on a given row and we’re just going to tell the software, don’t find the row if you don’t find the price. In other words, you don’t even attempt to grab the row if we don’t have a price. And maybe something else we’ll do is we’ll say go find this information if it’s below the price name.
We’re just going to give it some room here to create its own square so that we can tell the software how to anchor in and kind of rectangle in this given row. We’re going to say go get the price and let’s say it’s below the top of the price. Maybe even give it some offset here, a negative offset. So that just gives us a little bit taller of a rectangle and then we’ll say it’s above the bottom in a similar fashion of price.
Now we have a group and that group defines that whole row. What we’ll do here, actually just just go ahead and run one. Now if I go into my table in my repeating group and I want to find the row there, you can see in gray how the software is now mapped out the row. So it found the price and now that we’ve found price we’ve structured in to actually find the whole row itself and now we can be more intelligent within the group without adding a lot more complexity. We’re just going to go ahead and add what we call a character string and we’re going to call this the name column and we’re just going to tell it to grab any character it finds. But the important part about the name is that we’re going to grab the one that’s to the left of price. So in this case we’ll just simply tell the software to grab price and go find me this to the left of it.
And just to be a little bit more intelligent here, we’re going to find it nearest to the page, right edge.
Now what we’re going to do is add an element for the part number and once again, that’ll be a character string. And we’ll call this cs part number. Once again, we’ll grab any characters we can, we can add a little bit more intelligence because now that we’ve found the name, we can say it’s to the left of the name.
And also just to be careful, we’ll say go get me the the character string closest to the left of the page. And that’ll just kind of give us a little bit more insurance there that we’re grabbing the right fields. So what I’ll do now is go ahead and mask that first one and I’ll show you here. We’ll dive into some of the rows. And as you can see, not only am I grabbing the price, but we’re also grabbing the part name and a part number. The cool part about this is is as I match a whole document, I’ll show you here all of the elements. You can see we’re grabbing all of these elements off the table, even when the document spans multiple pages. So this is a very cool way to do it. And of course we can process these through the other samples. At this point, what we will do is create a repeating group block and that will repass the information back to the FlexiCapture application. So I’ll call this our repeating group table. We’ll give it a source element here you can see we’re going to tell the software to grab it top to bottom. That’s kind of very helpful because typically when we read a table, we want to read it. As we’re seeing it on the screen, we will then add the additional fields.
And now we have our blocks created. At this point, what we would do is we would save our results, go to file and export and we’ll generate that AFL file that we’re familiar with when we are working with FlexiLayouts. From here what we would do then is we would create a document definition, of course if you’ve done this before, I’m actually going to show you something pretty cool about repeating groups that I think is very helpful, especially in a lot of business ways that we read a repeating group or a table. So what I’m just going to do is go ahead and create us a new document definition. I’ll load that FlexiLayout just so that we have it convenient to us.
And you can see here we have our table and I have a test sample. I’m just gonna go ahead and run this test sample just so you can see typically how a repeating group looks and you can see we have each row and it’s outlined here and as I click, the software will highlight for me where it’s at. Now this is a default way of how a repeating group looks. Now, sometimes we like repeating groups to look like tables. So in this case, and this is a very neat feature, you can right click and say, show as table. So now instead of breaking them out into separate, repeating groups with repeating rows, it will actually format it as a table. So now when we run a test here, you can see it looks like a table. It feels like a table just as if the user was reading it on the documents. So this is a very cool way and flexible way to extract information from tables, especially with repeating groups, because we have a lot of control over how we structure it. And sometimes that gives us an advantage instead of using a table element. I hope you have enjoyed this video. If you have any questions, please feel free to leave a comment for us. Thank you so much!
Watch our video in order to learn how to create custom reports in ABBYY FlexiCapture and expand on the data the is already included within the software.
Hello. Today I’m going to show you how we create a custom report within ABBYY FlexiCapture. Now this is a pretty cool concept because it gives us the ability to expand on the data that is already included in the system, especially when we’re dealing with statistics like batch user document verification type of statistics. So what we’re going to do is create a brand new report and the way that we do that is we open up a report server project within visual studio. Now to save us some time on the video, I’ve already done that, but typically you would just do file, new project and you can just start typing in report and typically we just start with a report server project and empty one. If you do not see this option here in your visual studio, I would recommend that you look and download SQL servers data tools.
So sometimes it’s called SSDT. You can just Google that and download it. It’ll just add this add on to visual studio for you. But once you’re within the report server project, which I have here behind the scenes, you can simply design your report. Now, I’m not going to explain to you in this video how to create a report from scratch. We will assume that you have some skills with creating your own report, but obviously you can find all kinds of resources online for how to customize, create and develop your own report. But what I’ve done, just to summarize is I’ve created a report that will show us by document type some statistics. And just to kind of give you a quick summary, we created a data set and we created a data source, the data sources of course, my database. Then you would establish your own data sources as well.
And then you would point a data set at a data source. It is very important that you call this Dataset, that name that you see on the screen. ABBYY FlexiCapture, when we deploy this, is expecting to see this name for the Dataset. Now you can point this Dataset at anything you’d like and including a stored procedure, which I did, but you will definitely want to make sure that that name is correct and that the information is accessible from an ABBYY FlexiCapture database. For example, mine’s calling the stored procedure, which is one that’s comes out of the box. Within the software. We can of course test it and then once we’ve tested it, we can now deploy it. Now it’s very important that we talk about some project settings before we deploy it. When we deploy it, we need to have some specific properties set up and you can see most importantly is this target version down here. Currently in FlexiCapture version 12, you will need to make sure that you have this second option selected. After you selected it, you can right click and go to build and what that will do, is it will put a directory called the “Bin Directory” under the project so that you can access the version of this file and I’ll show that to you. And here, since I’ve built the project, I have a debugging folder and there’s a copy of the report that I’m creating and deploying. Now what I will do is I will copy that into a special directory that ABBYY has told us to deploy custom reports to, and here you can see where it’s at. It’s typically in the FlexiCapture website. You may have years deployed at a different location, mine’s simply on the C drive and if we dive into the custom reports section, we will see that here. Now what I’m going to do is I’m going to copy over our report and it’s going to show us that there. Now if I refresh the screen, you not not see a difference and the reason why that is is because every report must have a XML file that goes along with it. I’ve actually already had one. I will show it to you. I’m going to copy mine in and when I copy that in you’ll see now I have a new report that’s available to us. Just to show you some settings here.
You can see that we can name the report, we need to tell that it’s a data set report, we give it a file name. And then we also have some information here about the stored procedure, if we’re using a stored procedure. We can also put plain SQL as well. And then we have information about the parameters. So that’s what we’re showing here. And what I’m going to do is now go back to our site and when I Click on the custom report that I just deployed, you will see now a list of those parameters and also some information about the report itself. Those parameters are coming from this XML. ABBYY’s help documentation lists a lot of information here that is important for you to understand about parameters and default values, but I’ll trust that you know how to access that. At this point we now have a custom report deployed and I can run some data.
Actually I’m going to move this back quite a bit and then you can see now when I hit show report, the software will now load up that custom report for us. It’s very cool because now I have the ability to report on any information that is located within that FlexiCapture database that is accessible to us and now managers or end users, or team leads, have access to that data through critical reports and I can make those designed with all kinds of styling and and all those sorts of cool things that we want. Also, I can have them exportable to Excel, PDF or Word, and therefore managers have access to this information as well. So customer reports is a great way to expand on the data that is within the software. The software also does come with some out of the box reports, whether we’re talking about site performance, processing performance, or maybe even users and end user performance. We call them operators. But once again, all of your reports are accessible through via the administration of monitoring console. So I hope this has shown you a glimpse into how to create a custom report. This is a very cool process and look forward to helping out if we can help you in any way. Have a good day.