Parsing 如何使用powershell将PDF内容解析到数据库

Parsing 如何使用powershell将PDF内容解析到数据库,parsing,pdf,powershell,extract,Parsing,Pdf,Powershell,Extract,我有一个pdf文档,我想从中提取内容。我遇到的问题是。。。我搜索IMEI关键字,它会找到它,但我需要实际的IMEI值,它是循环中的下一项 在PDF中,该值如下所示: IMEI 90289393092 通过以下脚本返回值: -0.1-8.8 9.8-0.1 446.7 403.9 Tm IMEI:Tj 我只想得到以下值: 902893092 我正在使用的脚本: Add-Type -Path .\itextsharp.dll $reader = New-Object iTextSharp.text.

我有一个pdf文档,我想从中提取内容。我遇到的问题是。。。我搜索IMEI关键字,它会找到它,但我需要实际的IMEI值,它是循环中的下一项

在PDF中,该值如下所示: IMEI 90289393092

通过以下脚本返回值: -0.1-8.8 9.8-0.1 446.7 403.9 Tm IMEI:Tj

我只想得到以下值: 902893092

我正在使用的脚本:

Add-Type -Path .\itextsharp.dll
$reader = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList "$pwd\PDF\DOC001.pdf"

for ($page = 1; $page -le $reader.NumberOfPages; $page++) {
 $lines = [char[]]$reader.GetPageContent($page) -join "" -split "`n"
 foreach ($line in $lines) {
  if ($line -match "IMEI") { 
   $line = $line -replace "\\([\S])", $matches[1]
   $line -replace "^\[\(|\)\]TJ$", "" -split "\)\-?\d+\.?\d*\(" -join ""

  }
 }
}

这是使用itextsharp.dll并以纯文本形式读取pdf的方法:

添加类型-路径。\itextsharp.dll $reader=New Object iTextSharp.text.pdf.pdfreader-ArgumentList c:\ps\a.pdf 对于$page=1$page-le$reader.NumberOfPages$页面++ { $strategy=新对象“iTextSharp.text.pdf.parser.SimpleTextTractionStrategy” $currentText=[iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage$reader,$page$strategy; [string[]$Text+=[system.Text.Encoding]::UTF8.GetString[system.Text.AscienceODing]::转换[system.Text.Encoding]::默认值[system.Text.Encoding]::UTF8[system.Text.Encoding]::默认值.GetBytes$currentText; } $Reader.Close; 这可能是你需要的正则表达式,但我还没有测试过


[regex]::匹配$text,“?这是使用itextsharp.dll并以纯文本形式读取pdf的方法:

添加类型-路径。\itextsharp.dll $reader=New Object iTextSharp.text.pdf.pdfreader-ArgumentList c:\ps\a.pdf 对于$page=1$page-le$reader.NumberOfPages$页面++ { $strategy=新对象“iTextSharp.text.pdf.parser.SimpleTextTractionStrategy” $currentText=[iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage$reader,$page$strategy; [string[]$Text+=[system.Text.Encoding]::UTF8.GetString[system.Text.AscienceODing]::转换[system.Text.Encoding]::默认值[system.Text.Encoding]::UTF8[system.Text.Encoding]::默认值.GetBytes$currentText; } $Reader.Close; 这可能是你需要的正则表达式,但我还没有测试过


[regex]::匹配$text'?如果是regex问题,了解文件中的原始文本是什么样子会有所帮助。应用程序如何呈现它并没有多大帮助。如果这是一个正则表达式问题,了解文件中的原始文本是什么样子会有帮助。应用程序的呈现方式没有多大帮助。您的建议发现IMEI没有问题,谢谢。但是,我仍然无法捕获下一个值,即实际的IMEI编号。在找到IMEI后,我一直在想如何捕获下一个变量。@user2219768我帮不了这个人更多的忙,如果没有原始文件,很难给出完整的解决方案,你需要自己再试一次。明白。谢谢你的帮助。从PDF转换似乎删除了所有行返回。因此,当我找到IMEI时,它返回整个字符串。。。。当使用itextsharp作为AGPL下的许可时要小心,这基本上意味着您必须公开发布您的源代码。这可能是商业设置中的问题您的建议发现IMEI没有问题,谢谢。但是,我仍然无法捕获下一个值,即实际的IMEI编号。在找到IMEI后,我一直在想如何捕获下一个变量。@user2219768我帮不了这个人更多的忙,如果没有原始文件,很难给出完整的解决方案,你需要自己再试一次。明白。谢谢你的帮助。从PDF转换似乎删除了所有行返回。因此,当我找到IMEI时,它返回整个字符串。。。。当使用itextsharp作为AGPL下的许可时要小心,这基本上意味着您必须公开发布您的源代码。这在商业环境中可能是一个问题