Привет, я пытаюсь прочитать документ в формате PDF вместе с номерами строк.
На изображении выше я показал PDF. В файле pdf каждая строка имеет номер строки. Я хочу сохранить в базе данных, как
Line Number Content
1 It is agreed on the date shown in Box 2 between the party named in Box 3 as
когда я читаю документ, все приходит в виде текста, но как я могу идентифицировать номера строк и содержимое отдельно? потому что в содержании также может появиться число, поэтому логика чисел не помогает определить номер строки. Есть ли в любом случае идентификационные номера строк? Любая помощь будет оценена по достоинству. Спасибо
Какую библиотеку вы используете для чтения данных из PDF? Я сделал пример с помощью iTextSharp, вы можете обратиться к нему.
В процессе построчного чтения данных используйте регулярные выражения, чтобы получить номер последней строки строки, и используйте метод TrimEnd()
, чтобы удалить его:
public IActionResult Index()
{
PdfReader reader = new PdfReader(@"C:\Users\Administrator\Desktop\Test.pdf");
int intPageNum = reader.NumberOfPages;
string[] words;
string line;
string text;
PdfModel pdfModel = new PdfModel();
for (int i = 1; i <= intPageNum; i++)
{
text = PdfTextExtractor.GetTextFromPage(reader, i, new LocationTextExtractionStrategy());
words = text.Split('\n');
for (int j = 0, len = words.Length; j < len; j++)
{
line = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(words[j]));
var x = Regex.Match(line, @"([0-9]+)[^0-9]*$");
if (x.Success && x.Groups.Count > 0)
{
var foundNumber = x.Groups[1].Captures[0].Value;
line = line.Trim().TrimEnd(foundNumber.ToCharArray());
pdfModel.Line = int.Parse(foundNumber);
pdfModel.Content = line;
_context.PdfModel.Add(pdfModel);
_context.SaveChanges();
}
}
}
return View();
}
Результат испытаний:
Мой PDF:
Моя база данных: