Söka och indexera

Banderoll för användningsfall

Organisationer måste ofta digitalisera sina papperskopior av dokument och skannade filer. Tänk på detta scenario. En advokatbyrå har tusentals juridiska avtal som de har skannat för att skapa digitala filer. De vill fastställa om något av dessa rättsliga avtal har en särskild klausul eller ett tillägg som de måste se över. För att uppfylla kraven är det nödvändigt att vara noggrann. Lösningen är att inventera de digitala dokumenten, göra texten sökbar och skapa ett index för att hitta denna information.

Utmaningen att skapa digitala arkiv för att hämta information för redigering eller nedströmsverksamhet är en mardröm för de flesta organisationer.

Vad du kan lära dig

Den här praktiska självstudiekursen utforskar hur Adobe Acrobat Services API:ernas funktioner och kan enkelt användas för att arkivera och digitalisera dokument. Du utforskar dessa funktioner genom att skapa ett Express NodeJS-program och sedan integrera Acrobat Services API:er för arkivering, digitalisering och dokumenttransformering.

Om du vill följa behöver du Node.js och en grundläggande förståelse av Node.js och ES6-syntax.

Relevanta API:er och resurser

Projektinställningar

Först gör du mappstrukturen för programmet. Du kan hämta källkoden här.

Katalogstruktur

Skapa en mapp med namnet AdobeDocumentServicesAPI:er och öppna den i en redigerare som du väljer. Skapa ett grundläggande NodeJS-program med npm init kommando som använder den här mappstrukturen:

AdobeDocumentServicesAPIs
config
default.json
controllers
createPDFController.js
makeOCRController.js
searchController.js
models
document.js
output
.gitkeep
routes
web.js
services
upload.js
views
index.hbs
ocr.hbs
search.hbs
index.js

Du använder MongoDB som databas för detta program. Om du vill konfigurera placerar du därför standarddatabaskonfigurationerna i mappen config/ genom att klistra in kodfragmentet nedan i filen default.json i den här mappen och lägger sedan till URL:en till databasen.

### config/default.json and config/dev.json
{ "DBHost": "YOUR_DB_URI" }

Paketinstallation

Installera nu några paket med hjälp av kommandot npm install som visas i kodfragmentet nedan:

{
    "name": "adobedocumentservicesapis",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "directories": {
    "test": "test"
    },
    "dependencies": {
    "body-parser": "^1.19.0",
    "config": "^3.3.6",
    "express": "^4.17.1",
    "hbs": "^4.1.1",
    "mongoose": "^5.12.1",
    "morgan": "^1.10.0",
    "multer": "^1.4.2",
    "path": "^0.12.7"
    },
    "devDependencies": {},
    "scripts": {
    "start": "set NODE_ENV=dev && node index.js"
    },
    "repository": {
    "type": "git",
    "url": "git+https://github.com/agavitalis/AdobeDocumentServicesAPIs.git"
    },
    "author": "Ogbonna Vitalis",
    "license": "ISC",
    "bugs": {
    "url": "https://github.com/agavitalis/AdobeDocumentServicesAPIs/issues"
    },
    "homepage": "https://github.com/agavitalis/AdobeDocumentServicesAPIs#readme"
}
###bash
npm install express mongoose config body-parser morgan multer hbs path pdf-parse
Ensure that the content of your package.json file is similar to this code snippet:
###package.json
{

Dessa kodfragment installerar programberoenden, inklusive mallmotorn Handlebars för vyn. I taggen scripts konfigurerar du programmets körningsparametrar.

Integrera Acrobat Services API:er

Acrobat Services innehåller tre API

  • Adobe PDF Services API

  • Adobe PDF Embed API

  • Adobe-dokumentgenererings-API

Dessa API:er automatiserar generering, manipulering och omvandling av PDF-innehåll genom en uppsättning molnbaserade webbtjänster.

Om du vill få de inloggningsuppgifter du behöver registrera och slutför arbetsflödet. PDF Embed API är gratis att använda. PDF Services API och Document Generation API är kostnadsfria i sex månader. När testperioden är över kan du betala per användning endast 0,05 USD per dokumenttransaktion. Du betalar bara när företaget växer och bearbetar fler avtal.

Skärmbild av att skapa inloggningsuppgifter

När du har slutfört registreringen hämtas ett kodexempel till datorn som innehåller dina API-inloggningsuppgifter. Extrahera koden och placera filerna private.key och pdftools-api-credentials.json i rotkatalogen i programmet.

Installera nu PDF Services Node.js SDK genom att köra npm install --save @adobe/documentservices-pdftools-node-sdk -kommandot med hjälp av terminalen i programmets rotkatalog.

Skapa en PDF

Acrobat Services stöder skapandet av PDF från Microsoft Office-dokument (Word, Excel och PowerPoint) och andra filformat som stöds som .txt, .rtf, .bmp, .jpg, .gif, .tiff och .png.

Om du vill skapa PDF-dokument från de filformat som stöds använder du det här formuläret för att överföra dokumenten. Du kommer åt HTML- och CSS-filerna för formuläret på GitHub.

Skärmbild av webbformuläret

Lägg nu till följande kodfragment i filen controllers/createPDFController.js. Med den här koden hämtas dokumentet och omvandlas till en PDF.

Originalfilerna och den omformade filen sparas i en mapp i programmet.

const PDFToolsSdk = require('@adobe/documentservices-pdftools-node-sdk');
/*
* GET / route to show the createPDF form.
*/
function createPDF(req, res) {
//catch any response on the url
let response = req.query.response
res.render('index', { response })
}
/*
* POST /createPDF to create a new PDF File.
*/
function createPDFPost(req, res) {
let filePath = req.file.path;
let fileName = req.file.filename;
try {
// Initial setup, create credentials instance.
const credentials = PDFToolsSdk.Credentials
.serviceAccountCredentialsBuilder()
.fromFile("pdftools-api-credentials.json")
.build();
// Create an ExecutionContext using credentials and create a new operation
instance.
const executionContext = PDFToolsSdk.ExecutionContext.create(credentials),
createPdfOperation = PDFToolsSdk.CreatePDF.Operation.createNew();
// Set operation input from a source file.
const input = PDFToolsSdk.FileRef.createFromLocalFile(filePath);
createPdfOperation.setInput(input);
// Execute the operation and Save the result to the specified location.
createPdfOperation.execute(executionContext)
.then((result) => {
result.saveAsFile('output/createPDFFromDOCX.pdf')
//download the file
res.redirect('/?response=PDF Successfully created')
})
.catch(err => {
if (err instanceof PDFToolsSdk.Error.ServiceApiError
|| err instanceof PDFToolsSdk.Error.ServiceUsageError) {
console.log('Exception encountered while executing operation',
err);
} else {
console.log('Exception encountered while executing operation',
err);
}
});
} catch (err) {
console.log('Exception encountered while executing operation', err);
}
}
//export all the functions
module.exports = { createPDF, createPDFPost };

Det här kodfragmentet kräver PDF Services Node.js SDK. Använd funktionerna:

  • createPDF, som visar formuläret för att ladda upp dokument

  • createPDFPost, som omvandlar det uppladdade dokumentet till en PDF

De omformade PDF-dokumenten sparas i utdatakatalogen, medan originalfilen sparas i uppladdningskatalogen.

Använda textigenkänning

Optisk teckenigenkänning (OCR) konverterar bilder och skannade dokument till sökbara filer. Du kan konvertera Acrobat Services API:er, bilder och skannade dokument till sökbart PDF. När du har utfört en OCR-åtgärd blir filen redigerbar och sökbar. Du kan lagra filens innehåll i ett datalager för indexering och annan användning.

Kom ihåg att sökning och indexering av skannade dokument är avgörande för många organisationer där filhantering och informationsbehandling är viktigt. OCR-funktionen eliminerar dessa utmaningar.

Om du vill implementera den här funktionen måste du designa ett överföringsformulär som liknar det ovan. Den här gången begränsar du formuläret till PDF-filer eftersom du bara kan använda OCR-funktionen på PDF-dokument.

Här är uppladdningsformuläret för det här exemplet:

Skärmbild av formulär för att ladda upp filer

Nu kan du manipulera den överförda PDF och utföra några OCR-åtgärder genom att lägga till kodfragmentet nedan i filen controllers/makeOCRController.js. Med den här koden implementeras OCR-processen på en uppladdad fil och sedan sparas filen i programmets filsystem.

const fs = require('fs')
const pdf = require('pdf-parse');
const mongoose = require('mongoose');
const Document = require('../models/document');
const PDFToolsSdk = require('@adobe/documentservices-pdftools-node-sdk');
/*
* GET /makeOCR route to show the makeOCR form.
*/
function makeOCR(req, res) {
//catch any response on the url
let response = req.query.response
res.render('ocr', { response })
}
/*
* POST /makeOCRPost to create a new PDF File.
*/
function makeOCRPost(req, res) {
let filePath = req.file.path;
let fileName = req.file.filename;
try {
// Initial setup, create credentials instance.
const credentials = PDFToolsSdk.Credentials
.serviceAccountCredentialsBuilder()
.fromFile("pdftools-api-credentials.json")
.build();
// Create an ExecutionContext using credentials and create a new operation
instance.
const executionContext = PDFToolsSdk.ExecutionContext.create(credentials),
ocrOperation = PDFToolsSdk.OCR.Operation.createNew();
// Set operation input from a source file.
const input = PDFToolsSdk.FileRef.createFromLocalFile(filePath);
ocrOperation.setInput(input);
// Execute the operation and Save the result to the specified location.
ocrOperation.execute(executionContext)
.then(async (result) => {
let newFileName = `createPDFFromDOCX-${Math.random() * 171}.pdf`;
await result.saveAsFile(`output/${newFileName}`);
let documentContent = fs.readFileSync(
require("path").resolve("./") + `\\output\\${newFileName}`
);
pdf(documentContent)
.then(function (data) {
//Creates a new document
var newDocument = new Document({
documentName: fileName,
documentDescription: description,
documentContent: data.text,
url: require("path").resolve("./") + `\\output\\${newFileName}`
});
//Save it into the DB.
newDocument.save((err, docs) => {
if (err) {
res.send(err);
} else {
//If no errors, send it back to the client
res.redirect(
"/makeOCR?response=OCR Operation Successfully performed on
the PDF File"
);
}
});
})
.catch(function (error) {
// handle exceptions
console.log(error);
});
})
.catch(err => {
if (err instanceof PDFToolsSdk.Error.ServiceApiError
|| err instanceof PDFToolsSdk.Error.ServiceUsageError) {
console.log('Exception encountered while executing operation',
err);
} else {
console.log('Exception encountered while executing operation',
err);
}
});
} catch (err) {
console.log('Exception encountered while executing operation', err);
}
}
//export all the functions
module.exports = { makeOCR, makeOCRPost };

Du behöver Acrobat Services Nod-SDK och mongoose-, pdf-parse- och fs-modulerna och ditt dokumentmodellschema. Dessa moduler är nödvändiga för att spara innehållet i den transformerade filen till en MongoDB-databas.

Skapa nu två funktioner: gör OCR för att visa det överförda formuläret och gör sedan OCRPost för att bearbeta det överförda dokumentet. Spara det ursprungliga formuläret i en databas och spara sedan det omformade formuläret i programmappen för utdata i programmet.

De inloggningsuppgifter som Adobe tillhandahåller från filen pdftools-api-credentials.json läses in i varje enskilt fall innan filen omvandlas.

NOTE
OCR-funktionen stöder bara PDF-dokument.

Lägg till kodfragmentet nedan i programfilen Modes/Document.js.

I kodfragmentet definierar du en mongoose-modell och beskriver sedan dokumentets egenskaper som ska sparas i databasen. Indexera också fältet documentContent för att göra det enkelt och effektivt att söka efter text.

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
//Document schema definition
var DocumentSchema = new Schema(
{
documentName: { type: String, required: false },
documentDescription: { type: String, required: false },
documentContent: { type: String, required: false },
url: { type: String, required: false },
status: {
type: String,
enum : ["active","inactive"],
default: "active"
}
},
{ timestamps: true }
);
//for text search
DocumentSchema.index({
documentContent: "text",
});
//Exports the DocumentSchema for use elsewhere.
module.exports = mongoose.model("document", DocumentSchema);

Söka i texter

Nu implementerar du en enkel sökfunktion så att användare kan utföra vissa enkla textsökningar. Du kan också lägga till hämtningsfunktioner för att aktivera hämtning av PDF-filer.

Den här funktionen kräver ett enkelt formulär och kort för att visa sökresultatet. Du hittar designerna för formuläret och korten på GitHub.

Skärmbilden nedan visar sökfunktionen och sökresultaten. Du kan hämta vilket som helst av sökresultaten.

Skärmbild av sökfunktioner

För att implementera sökfunktionen skapar du filen searchController.js i programmets styrenhetsmapp och klistrar in kodfragmentet nedan:

const fs = require('fs')
const mongoose = require('mongoose');
const Document = require('../models/document');
/*
* GET / route to show the search form.
*/
function search(req, res) {
//catch any response on the url
let response = req.query.response
res.render('search', { response })
}
/*
* POST /searchPost to search the contents of your saved file.
*/
function searchPost(req, res) {
let searchString = req.body.searchString;
Document.aggregate([
{ $match: { $text: { $search: searchString } } },
{ $sort: { score: { $meta: "textScore" } } },
])
.then(function (documents) {
res.render('search', { documents })
})
.catch(function (error) {
let response = error
res.render('search', { response })
});
}
//export all the functions
module.exports = { search, searchPost, downloadPDF };

Implementera nu en hämtningsfunktion för att aktivera hämtning av dokument som returneras från en användares sökning.

Hämtar dokument

Att implementera en hämtningsfunktion liknar det du redan har gjort. Lägg till följande kodfragment efter funktionen searchPost i filen controllers/earchController.js:

/*
* POST /downloadPDF To Download PDF Documents.
*/
async function downloadPDF(req, res) {
console.log("here")
let documentId = req.params.documentId
let document = await Document.findOne({_id:documentId});
res.download(download.link);
}

Nästa steg

I den här praktiska självstudien har du integrerat Acrobat Services API:er till ett Node.js-program och använde även API:et för att implementera en dokumentomvandling som konverterar filer till PDF. Du har lagt till en OCR-funktion som gör bilder och skannade filer sökbara. Sedan sparade du filerna i en mapp så att de kan hämtas.

Därefter lade du till en sökfunktion för att söka i dokument som konverterats till text med OCR. Slutligen har du implementerat en hämtningsfunktion för att göra det möjligt att enkelt hämta de filerna. Din ifyllda ansökan gör det mycket enklare för ett juridiskt företag att hitta och bearbeta specifik text.

Använder Acrobat Services för dokumentomvandling rekommenderas starkt på grund av dess robusthet och användarvänlighet jämfört med andra tjänster. Du kan snabbt skapa ett konto och börja använda funktionerna i Acrobat Services API:er för dokumentomvandling och -hantering.

Nu när du har en stark förståelse för hur du använder Acrobat Services API:er kan du utveckla dina färdigheter med övning. Du kan klona databasen som används i den här självstudiekursen och experimentera med några av de kunskaper du just har lärt dig. Ännu bättre, du kan försöka återskapa denna ansökan samtidigt utforska de obegränsade möjligheterna i Acrobat Services API:er

Är du redo att aktivera dokumentdelning och granskning i din egen app? Registrera dig för ditt Adobe Acrobat Services
utvecklarkonto. Testa kostnadsfritt i sex månader, sedan betala per användning för bara $0,05 per dokumenttransaktion när företaget växer.

recommendation-more-help
61c3404d-2baf-407c-beb9-87b95f86ccab