You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何读取PDF右侧旋转文本?iText提取时缺失内容问题

问题:提取PDF文本时遗漏旋转内容

我使用以下代码提取PDF文本:

string text = "";

using (PdfReader pdfReader = new PdfReader(dlg.FileName))
{
    for (int page = 1; page <= pdfReader.NumberOfPages; page++)
    {
        text = PdfTextExtractor.GetTextFromPage(pdfReader, page);
    }
}
text = text.Replace("\r\n", "\n");

运行后得到结果:

"AI(240)10575323190069
AI(13)240215
24-02-15 (YY-MM-DD)
PI-734875-1
19006
© Inter IKEA Systems
B.V. 2021
105.753.23
Made in Pakistan"

但结果遗漏了PDF最右侧的旋转文本“2407”,如何修改代码以同时读取该旋转文本及所有内容?


解决方案

默认的PdfTextExtractor采用LocationTextExtractionStrategy,该策略会基于文本布局位置提取内容,可能会遗漏旋转角度特殊的文本。可通过以下两种方式解决:

1. 使用SimpleTextExtractionStrategy

该策略按文本在PDF内容流中的原始顺序提取,不依赖布局,能捕获所有文本(包括旋转内容):

string text = "";

using (PdfReader pdfReader = new PdfReader(dlg.FileName))
{
    for (int page = 1; page <= pdfReader.NumberOfPages; page++)
    {
        // 替换为SimpleTextExtractionStrategy
        text += PdfTextExtractor.GetTextFromPage(pdfReader, page, new SimpleTextExtractionStrategy());
    }
}
text = text.Replace("\r\n", "\n");

2. 自定义文本提取策略(精准处理旋转文本)

如果需要保留布局逻辑的同时捕获旋转文本,可以自定义策略处理特定角度的文本:

public class RotatedTextExtractionStrategy : LocationTextExtractionStrategy
{
    protected override void RenderText(TextRenderInfo renderInfo)
    {
        // 获取文本基线的旋转角度
        float rotation = renderInfo.GetBaseline().GetStartPoint().GetRotation();
        // 兼容正负90度旋转的文本(可根据实际旋转角度调整阈值)
        if (Math.Abs(rotation - Math.PI / 2) < 0.01 || Math.Abs(rotation + Math.PI / 2) < 0.01)
        {
            base.RenderText(renderInfo);
        }
        else
        {
            base.RenderText(renderInfo);
        }
    }
}

使用自定义策略提取文本:

text += PdfTextExtractor.GetTextFromPage(pdfReader, page, new RotatedTextExtractionStrategy());

补充说明

  • SimpleTextExtractionStrategy适合优先保证文本完整性、对输出顺序要求不高的场景;
  • 自定义策略可在保留布局提取逻辑的基础上,精准适配特定旋转角度的文本内容。

内容的提问来源于stack exchange,提问作者SYED RASHID

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 16:32:34