What is ByteScout Cloud API Server? It is the ready to use Web API Server that can be deployed in less than 30 minutes into your own in-house server or into private cloud server. Can store data on in-house local server based storage or in Amazon AWS S3 bucket. Processing data solely on the server using buil-in ByteScout powered engine, no cloud services are used to process your data!.
On-demand (REST Web API) version:
Web API (on-demand version)
On-premise offline SDK for Windows:
60 Day Free Trial (on-premise)
$APIBaseURL='http://localhost:80' $scriptDir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent $InputFile = "$scriptDir\sample.pdf" $RulesSpreadsheet = "$scriptDir\rules.csv" $RulesColumnIndex = 1 $ResultIdentifiersColumnIndex = 0 function main() { $rules = Get-Content -Path $RulesSpreadsheet | Out-String Write-Host "Uploading document `"$InputFile`"" -ForegroundColor Green $fileUrl = UploadFile $InputFile if ($null -ne $fileUrl) { Write-Host "Processing document..." $result = ClassifyDocument $fileUrl $rules if ($null -ne $result) { Write-Host "Detected classes:" foreach ($elem in $result.classes) { Write-Host $elem.class } } } } function ClassifyDocument($fileUrl, $rules) { # Prepare URL for `pdf/classifier` API call $query = "$APIBaseURL/pdf/classifier" # Prepare POST request body $body = @{ "async" = "true"; "url" = $fileUrl; "rulescsv" = $rules; "caseSensitive" = $false } | ConvertTo-Json # Note, rules can also be passed as URL of file `rulesCsvUrl` param instead of `rulesCsv`. # Rules can be a spreadhset in CSV, XLS, XLSX, ODS format. try { # Execute request $jsonResponse = Invoke-RestMethod -Method Post -Uri $query -Body $body if ($jsonResponse.error -eq $false) { # Asynchronous job ID $jobId = $jsonResponse.jobId # URL of generated TXT file that will available after the job completion $resultFileUrl = $jsonResponse.url # Check the job status in a loop. do { $statusCheckUrl = "{0}/job/check?jobid={1}" -f $APIBaseURL, $jobId $jsonStatus = Invoke-RestMethod -Method Get -Uri $statusCheckUrl # Display timestamp and status (for demo purposes) Write-Host "$(Get-date): $($jsonStatus.status)" if ($jsonStatus.status -eq "success") { # Download result return Invoke-WebRequest -Uri $resultFileUrl | ConvertFrom-Json } elseif ($jsonStatus.status -eq "working") { # Pause for a few seconds Start-Sleep -Seconds 3 } else { Write-Host $jsonStatus.status break } } while ($true) } else { # Display service reported error Write-Host $jsonResponse.message } } catch { # Display exception if any Write-Host $_.Exception } return $null } function UploadFile($filePath) { # Prepare URL for `Get Presigned URL` API call $query = "{0}/file/upload/get-presigned-url?contenttype=application/octet-stream&name={1}" -f ` $APIBaseURL, [System.IO.Path]::GetFileName($filePath) $query = [System.Uri]::EscapeUriString($query) try { # Execute request $jsonResponse = Invoke-RestMethod -Method Get -Uri $query if ($jsonResponse.error -eq $false) { # Get URL to use for the file upload $uploadUrl = $jsonResponse.presignedUrl # Get URL of uploaded file to use with later API calls $uploadedFileUrl = $jsonResponse.url # UPLOAD THE FILE $r = Invoke-WebRequest -Method Put -Headers @{ "content-type" = "application/octet-stream" } -InFile $filePath -Uri $uploadUrl if ($r.StatusCode -eq 200) { return $uploadedFileUrl } else { # Display request error status Write-Host $r.StatusCode + " " + $r.StatusDescription } } else { # Display service reported error Write-Host $jsonResponse.message } } catch { # Display request error Write-Host $_.Exception } return $null; } main trap { Write-Host "Exception: $_" -ForegroundColor White -BackgroundColor DarkRed exit 1 }
@echo off powershell -NoProfile -ExecutionPolicy Bypass -Command "& .\ClassifyPdfWithUploadAsync.ps1" echo Script finished with errorlevel=%errorlevel% pause
See also:
Get Your API Key
See also: