open pdf from windows form c# : Remove text from pdf SDK application project winforms azure web page UWP redp52351-part1721

11
The Image Enhancement ruleset
When Image Enhancement is used in the Accounts Payable Capture workflow, it follows 
PageID. With form-type applications where fingerprinting is often used for page identification, 
Image Enhancement runs on every page before the fingerprint match is attempted. When 
PageID is run before Image Enhancement, you can be more aggressive with the line removal 
process because barcodes have been read and processed by that point. However, 
particularly for invoices, you need to be less aggressive on the despeckling process because 
you need to keep the decimal points in the currency fields if possible.
To define the rules, we use Datacap 9’s compiled rulesets capabilities, which provides a 
GUI-based method to quickly configure, test, and save rulesets (Figure 9).
Figure 9   Settings for the Image Enhancement ruleset
The AutoRotation ruleset
The AutoRotation ruleset automatically rotates the images that it processes. It creates a CCO 
file to do its work, unless one was already created. The CCO file is created before the image 
is deskewed. Therefore, you do not want to use this CCO file for fingerprint matching. You can 
create another one during the Recognize ruleset. Figure 10 on page 12 shows the 
AutoRotation ruleset.
Remove text from pdf - delete, remove text from PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Allow C# developers to use mature APIs to delete and remove text content from PDF document
delete text from pdf online; how to remove highlighted text in pdf
Remove text from pdf - VB.NET PDF delete text library: delete, remove text from PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
VB.NET Programming Guide to Delete Text from PDF File
erase text from pdf; pull text out of pdf
12
IBM Datacap Accounts Payable Capture
Figure 10   The AutoRotation ruleset
The CreateDocs ruleset
The CreateDocs ruleset in an Accounts Payable Capture workflow is the same as it is in other 
workflows. At the batch level, you run the CreateDocs ruleset and at the page level, on pages 
that contain fields, you run CreateFields.
Figure 11 on page 13 shows a document structure created by the CreateDocs ruleset in the 
Accounts Payable Capture workflow. When using the CreateDocs ruleset on the Main_Page 
object, it always sets it as the first page of a new document called the 
Invoice
. The Invoice 
document can contain all of the other page types that are set in PageID, except for a 
Document_Separator page. When found, those pages are placed in a Separator document. 
No additional processing is done on Separator documents in Accounts Payable Capture. The 
process ignores the Document_Separator images from the batch, without removing them, 
leaving your audit trail intact.
C# PDF remove image library: remove, delete images from PDF in C#.
Delete Text from PDF. Text: Replace Text in PDF. Image: Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut
how to delete text from a pdf in acrobat; remove text from pdf online
VB.NET PDF remove image library: remove, delete images from PDF in
PDF Write. Text: Insert Text to PDF. Text: Delete Text from PDF. Text: Replace Text in PDF. Image: Insert Image to PDF. Image: Remove Image from PDF Page. Image
remove text watermark from pdf; how to delete text in pdf acrobat
13
Figure 11   Accounts Payable Capture DCO
The AdjustFields ruleset
The AdjustFields ruleset creates a document structure called 
Browse
so that users have a 
structure that spans each page of the invoice, and you can browse between them when using 
the Datacap Web client. The AdjustFields ruleset creates a line-item child, called 
PageNo
PageNo contains a subfield named TIFF, which is placed in the upper left corner of each page 
and contains the name of the TIFF image containing the field.
When you are in the Verify panel and you click a field, it automatically shows the page on 
which the field is found. If you need to move to a page to click data, the thin client does not 
have buttons to make such a move. The Browse structure places a field and associated 
buttons so you can move back and forth between pages of the invoice. Figure 12 on page 14 
shows the page browse buttons.
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Able to remove a single page from adobe PDF document in VB.NET. Ability to remove consecutive pages from PDF file in VB.NET. Enable
acrobat remove text from pdf; how to erase text in pdf file
VB.NET PDF Password Library: add, remove, edit PDF file password
Remove password from PDF. Dim outputFilePath As String = Program.RootPath + "\\" Remove.pdf" ' Remove password in the input file and output to a new file.
pdf editor delete text; how to delete text in pdf converter
14
IBM Datacap Accounts Payable Capture
Figure 12   Page browse buttons in thin client
Figure 13 shows the implementation of the AdjustFields ruleset. The Add 
Page_NoReferences runs on the Browse field on Main_Page.
Figure 13   The AdjustFields implementation
The Recognize ruleset
In the Recognize ruleset, a number of job-specific actions occur. This ruleset also provides a 
technique for capturing statistics in the runtime DCO.
Figure 14 on page 15 shows the rules, functions, and actions of the Recognize ruleset used 
in Accounts Payable Capture. The single page-level rule is attached to the Main_Page and 
Trailing_Page objects. The Attachment pages are not recognized.
Note: At the time of writing, Accounts Payable Capture is being ported to work with 
Datacap Navigator, the IBM Content Navigator-based thin client released with Datacap 9. 
Therefore, in this paper, the term 
thin client
refers to the Microsoft Internet Explorer web 
client at http://server/tmweb.net/.
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
console application. Able to remove a single page from PDF document. Ability to remove a range of pages from PDF file. Free trial package
remove text from pdf preview; how to erase text in pdf online
C# PDF Password Library: add, remove, edit PDF file password in C#
String outputFilePath = Program.RootPath + "\\" Remove.pdf"; // Remove password in the input file and output to a new file. int
how to delete text from pdf document; delete text from pdf preview
15
Figure 14   The Recognize ruleset
The first function, the Recognize Dot Matrix function, always returns 
false
. The first action, 
rrSet(), creates a batch-level variable called 
RecogType
. The action sets its value to 
Normal
The second action, Is_JobName(), checks the job name, which is Demo-Dot Matrix in this 
case. If this name is not the current job name, the action fails, and the next function is started. 
If 
true
, the action adds variables to the page and sets the values of those variables to inform 
the Nuance recognition engine to use the dot-matrix settings. It then sets the batch-level 
RecogType variable to a value of 
Dot Matrix
, and the last action, rrCompare(), then returns a 
value of 
False
.
You might need to copy this function if you have more than one job that you want to use for 
Dot Matrix. You need a function before the Recognize Normal Pages (not dot matrix) function 
for every job that you add for Dot Matrix recognition. For example, if you want to add a Main 
Dot Matrix job, you copy the top function and place the copy above the Recognize Normal 
Pages function. Then, you change the IsJobName parameter to the name of your new job.
The second function, which is the Recognize Normal Pages function in Figure 14, shows the 
first attempt at managed recognition. With managed recognition, the recognition engine is 
placed outside of the current thread and monitored by Datacap. When recognition occurs, if 
the recognition engine is successful in recognizing the image, it returns the data directly to the 
main application thread for further processing. If it fails or times out, a number of additional 
attempts are made, with longer timeouts, before an error is returned.
Recognition begins with the SetFingerprintRecogPriority() action set to 
true
. By setting this 
action, RecognizePageOCR_S replaces any existing CCO with a new CCO that is created by 
C# PDF Digital Signature Library: add, remove, update PDF digital
Delete Text from PDF. Text: Replace Text in PDF. Image: Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut
how to delete text in pdf using acrobat professional; delete text from pdf
C# PDF bookmark Library: add, remove, update PDF bookmarks in C#.
Ability to remove and delete bookmark and outline entry.GetLocation()); Console.WriteLine("Text: " + entry.GetText NET Sample Code: Update PDF Document Outline
delete text pdf files; delete text pdf file
16
IBM Datacap Accounts Payable Capture
the recognition process. This action is necessary because RotateImage was used in the 
ImageFix ruleset. It creates a CCO with the AnalyzeImage method and was created before 
the image was deskewed. This action essentially throws away the CCO and makes a new 
CCO based on where words and lines were recognized by the recognition engine. This action 
provides a more usable CCO for locating data than a CCO that was created with 
AnalyzeImage.
The RecogContinueOnFailue() action is then set to 
true
. This way, if a problem image is found 
in the batch, the batch can continue after you detect this problem and reset the engine.
The next two actions, SetOutOfProcessRecogTimeout() and SetEngineTimeout() actions, 
specify the timeouts to use. A monitored thread is created that is set to automatically shut 
down after 25 seconds if recognition is unsuccessful. The recognition engine itself is created 
in that second thread and has its internal timeout set to 20 seconds. In most cases, a page is 
recognized quickly, usually in 2 seconds or less. However, if a problem image is encountered, 
the recognition engine can detect this image based on the time it takes to recognize it. Failing 
that test, the thread expires if the recognition engine hangs and is unable to monitor itself.
The RecognizePageOCR_S() action does the recognition. It uses variables that are created 
with the engine setup on the Zones tab in Datacap Studio and, possibly, the Dot Matrix 
variables. It tries to recognize the page, write the CCO, and return a status.
If the status it returns is 0, everything is successful. A text file is then created in the batch 
directory with the createTextFile() action. This text file is for observation and troubleshooting 
only. It is not used elsewhere in the process. 
Finally, a batch-level variable is created or incremented with a special action called the 
IncrementBatchVariable() 
action. This action helps to capture statistics and place them at the 
top of the runtime page file so that you can quickly look at the page file. This technique is 
useful if you have several branches processing your images because it counts the number of 
times that a path is taken. If the variable does not exist, it is created with a value of 1. If the 
variable does exist, the value is incremented by 1.
The Managed OCR Failure function is a copy of the function before it tries recognition a 
second time with longer timeouts, but after resetting the engine. The IncrementBatchVar() 
action logs in the DCO when the managed failure occurs.
If the engine fails a second time, the Second Recognition Failure function deletes the 
document. However, if the recognition engine returns a value of 0 for RecogStatus, the 
Managed OCR Failure completes. If the recognition engine returns a value of 1 for 
RecogStatus, the recognition engine detects a blank page. 
If the page is not blank, we have tried to recognize it twice, once with a 20-second timeout, 
and another time with a 3-minute timeout. In this case, mark the page for deletion, which also 
deletes the document it is in. This action does not delete the document. Instead, it marks the 
document so that you do not attempt to process it further. A well-designed system notifies 
someone about these deleted documents. Accounts Payable Capture does this notification in 
the Export task.
The FindFingerprint ruleset
Fingerprinting on the Accounts Payable Capture workflow is only done on the Main_Page. 
The purpose of the Fingerprint ruleset is for automatic identification of the specific vendor 
who sent the invoice. It also provides the offset that is needed to apply to zones to 
compensate for differences in the scanning positions.
17
If the Accounts Payable Capture application is being used to capture documents from tens of 
thousands of vendors, use the Fingerprint Service. The 
Fingerprint Service
is a web server 
that stores the CCOs for all active fingerprints in memory. Without it, the CCOs must be 
loaded from the network every time a batch is processed, which can add significant time to 
the background processing.
The purpose of the FindFingerprint ruleset is to ensure that every Main_Page has a 
fingerprint TemplateID. If no match is found with an existing fingerprint, a new fingerprint is 
created automatically. Any new fingerprints created this way do not have zones defined on 
them and data must be extracted by keyword or regular expression before a data entry 
operator views and processes the invoice. Later in the “The PreExport ruleset” on page 35, 
we run rules that save any zones that are identified for these new fingerprints. This way, the 
next time that this invoice is encountered, the data can be found by using zones.
Figure 15 shows the FindFingerprint ruleset that is used in an Accounts Payable Capture 
workflow.
Figure 15   The FindFingerprint ruleset
The batch-level rulesets the fingerprint directory from the App Service setting. New 
fingerprints are stored in this directory if they are created. The paths to the existing 
fingerprints are stored in the Fingerprint database. 
Consider what might happen if you copy your entire system from production to development, 
work on the system in development for a few days, and then try to copy the entire system 
back. You might lose any new fingerprints that were added to the production system while the 
copy was in development. In general, do not move the fingerprint database from one system 
to another.
In the batch-level rule in Figure 15, the first function, 
For commas as decimal separator
checks the locale of the machine that is processing the fingerprints. It ensures that the 
floating point values from SetProblemValue and SetFingerprintSearchArea use the correct 
decimal separation character in their parameters.
Normally, we want to look at the top 30% or so of the current image to compare it against our 
fingerprint library for matching. The ProblemValue, by default, is set to 0.8. Decreasing this 
Moving the Fingerprint database from one system to another: With a learning system, 
such as Accounts Payable Capture, use care when moving the Fingerprint database from 
one system to another. You must ensure that the paths are correct and that you do not lose 
entries when moving.
18
IBM Datacap Accounts Payable Capture
value increases the chance that the fingerprint (incorrectly) matches a fingerprint from 
another vendor, creating fewer fingerprints in the system overall. Increasing this value gives a 
more precise match, creating more fingerprints in the system and additional work for data 
entry operators in zoning these additional new fingerprints.
Adjust this setting only after a discussion with the users about the effects they can expect by 
changing this value. A value of 0.8 often provides the correct balance.
If a mismatch does occur, data entry operators can create a fingerprint with the click of a 
button, or in the case of the web client, by choosing YES from the Add New Fingerprint list. If 
more than one fingerprint exceeds the ProblemValue setting, the fingerprint with the best 
match is returned by the FindFingerprint action.
In the page-level 
Find Fingerprint Main_Page
rule, the SetDCOType action ensures that the 
FindFingerprint action does not change the page type (which is set in the PageID ruleset) to 
another value.
The Locate ruleset
In the Locate ruleset, data is pulled from the CCO created in the Recognize ruleset. This 
ruleset uses a number of techniques for retrieving data. We explore each technique.
The Locate ruleset is run as part of two different task profiles, Batch Profiler and Sticky. 
Figure 16 shows how the Locate, along with CheckForSticky, Clean, DynamicDetails, Filter, 
and Validate rulesets are used in the Sticky task profile, which is called during the Verify 
process.
Figure 16   The Sticky task profile
Reusing rulesets in this way reduces the maintenance of the system. However, it does make 
each ruleset slightly more complex because it must test when it is being run so that it knows 
how to handle its operations when processing or reprocessing a document.
Sticky fingerprints
“Sticky” fingerprints is a technique for “saving” a new fingerprint’s location information at verify 
time so it can be applied immediately to other images in the batch that match the same (new) 
fingerprint.
For example, when an operator encounters a new image with no matching fingerprint, a new 
fingerprint is automatically created and he or she extracts, or indexes, data using Click N Key 
capability. This provides location information for that fingerprint.
When a second image of the same type, from the same vendor, is encountered, a 
Sticky 
Available
button is displayed. When the operator clicks that button, the location information 
from the previous invoice is applied immediately to the current one. The CCO is searched for 
the header and line-item data, and the document is processed without further operator 
interaction.
Figure 17 on page 19 shows the document-level and page-level rules of the Locate ruleset.
19
Figure 17   Document and page-level rules in the Locate ruleset
The document-level rule, 
Document Level Rule
, creates a multi-CCO file (MCCO) by 
combining all of the CCOs from the Main_Page and any Trailing_Pages and replacing the 
CCO of the Main_Page with the larger, combined one. This way, the entire document can be 
searched for data at the same time.
When making an MCCO, you only do it once and only during the Batch Profiler task profile. To 
prevent merging CCOs a second time, there is a check in place, on the document-level rule, 
to make sure merging does not take place during the Verify task. Running this action more 
than once duplicates data from the Trailing_Pages to the merged CCO, potentially doubling 
the data found when we search for it.
In the first function, 
Skip during Verify Function
, we check to see if we are running under the 
Verify task. If we are, the function returns 
true
and does not run the second function that 
creates the MCCO. 
In the second function, the IsMultipageDocument() action determines if the document 
contains more than one page. If it does, it makes an MCCO for you.
For the page-level rule, we are trying to read any zones, if they exist, that are associated with 
the fingerprint. Similar to the document-level rule, we must check to see when the Locate 
ruleset is running so we do not reprocess documents that do not need it.
The first function checks to see if we are in a situation where sticky fingerprint technology is 
useful. See the Sticky task profile (see Figure 16 on page 18). The first ruleset in the Sticky 
task profile sets a variable named 
Sticky
that indicates whether we need to reprocess the 
runtime document with Locate rules. If the value of the Sticky variable is 
No
, the 
20
IBM Datacap Accounts Payable Capture
SkipChildren() action causes the ruleset to stop running for all children of the page, meaning 
that the fields will not be searched for data. 
Regardless of whether Sticky is set to 
Yes
or 
No
, we do not want to attempt to read the zonal 
information when we run from the Verify task. This is because the first ruleset in the Sticky 
task profile also sets the zones based on the previous document in the batch. The net result 
of the first two rulesets is that, when running under Sticky, the zonal data is never read by the 
Locate ruleset. Depending on whether the Sticky variable is set to 
Yes
or 
No
, the field-level 
actions in the Locate ruleset will or will not run.
The remaining functions on the page-level rule must only run during the Batch Profiler task 
profile. Again, because there are two different places where zones can be stored (FPXML or 
the Setup DCO), we must check to see which actions are appropriate for reading the zonal 
information.
Reading zones with the FPXML method requires us to set the fingerprint directory where the 
FPXML files are kept. To read FPXML with detail lines defined, we must inform the 
ReadZonesFPX() action of a detail structure so that it can read and apply the detail line zones 
correctly. This process is done by using the SetDetailsandLineitemPairFPX() action. You do 
not have to specify the Browse structure here. Such zones are set programmatically in the 
AdjustFields ruleset, run previously in the Batch Profiler task profile.
FPXReadZones returns FALSE if it cannot find or read an FPXML file. If it is a multipage 
document, set an EOL character for the MCCO to process correctly. If the FPXML is read, a 
variable is set at the page level so that we know the method by which the zones are read. 
Because there are two actions that can return FALSE in this function, we must check this 
variable in the next function to see if the zones are read in correctly. If the ReadZonesFPX() 
action returns FALSE, the variable is not set, and it attempts to read zones from the Setup 
DCO.
The rest of the Locate ruleset pulls data into the fields by using the following methods:
 Populating data that is normally best found zonally
 Finding data that floats around
 Searching for and populating the detail lines
Populating data that is normally best found zonally
Using the first two methods listed above, Accounts Payable Capture checks zonally and uses 
keyword searches. The order in which the methods that are used is important: Figure 18 on 
page 21 shows how we find data when zones are preferable for locating the data. We use this 
method when data is in a predictable place on the page.
As with the previous rules in this ruleset, we must check which task we are running under. 
The first function, 
Called from Verify Function
, checks to see if we are running under the 
Verify task. If we are, then it loads the CCO dynamically and attempts to populate the data 
from a zone using PopulateZNField(). If we are not running under the Verify task, the CCO 
has already been loaded and we can immediately run the PopulateZNField() action. If a zone 
is defined for the field and the zone contains data, the data in that position is pulled into the 
field. The rule for that field is finished, and we can move on to the next field.
If no zone is defined (for example, when we have a new fingerprint) or if the zone contains no 
data, we use Locate actions to try to find the data programmatically.
The first step in this process is to find data using a keyword or regular expression. Although 
regular expressions are a powerful method of finding data in general, most of what we 
capture from invoices is not sufficiently unique to justify finding it using a regular expression. 
The exception is a Purchase Order (PO) field. If a company uses a number that is fairly 
Documents you may be interested
Documents you may be interested