mirror of
https://github.com/DS4SD/docling.git
synced 2025-07-23 18:45:00 +00:00
refactor(HTML): handle text from styled html (#1960)
* A new HTML backend that handles styled html (ignors it) as well as images. Images are parsed as placeholders with a caption, if it exists. Co-authored-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com> Co-authored-by: vaaale <2428222+vaaale@users.noreply.github.com> Signed-off-by: Alexander Vaagan <alexander.vaagan@gmail.com> Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com> Signed-off-by: vaaale <2428222+vaaale@users.noreply.github.com> * tests(HTML): re-enable test_ordered_lists Re-enable test_ordered_lists regression test for the HTML backend since docling-core now supports ordered lists with custom start value. Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com> --------- Signed-off-by: Alexander Vaagan <alexander.vaagan@gmail.com> Signed-off-by: Cesar Berrospi Ramis <75900930+ceberam@users.noreply.github.com> Signed-off-by: vaaale <2428222+vaaale@users.noreply.github.com> Co-authored-by: Alexander Vaagan <2428222+vaaale@users.noreply.github.com>
This commit is contained in:
parent
5d98bcea1b
commit
a069b1175b
@ -1,10 +1,11 @@
|
||||
import logging
|
||||
import re
|
||||
import traceback
|
||||
from io import BytesIO
|
||||
from pathlib import Path
|
||||
from typing import Final, Optional, Union, cast
|
||||
|
||||
from bs4 import BeautifulSoup, NavigableString, PageElement, Tag
|
||||
from bs4 import BeautifulSoup, NavigableString, Tag
|
||||
from bs4.element import PreformattedString
|
||||
from docling_core.types.doc import (
|
||||
DocItem,
|
||||
@ -15,6 +16,7 @@ from docling_core.types.doc import (
|
||||
GroupLabel,
|
||||
TableCell,
|
||||
TableData,
|
||||
TextItem,
|
||||
)
|
||||
from docling_core.types.doc.document import ContentLayer
|
||||
from pydantic import BaseModel
|
||||
@ -26,10 +28,14 @@ from docling.datamodel.document import InputDocument
|
||||
|
||||
_log = logging.getLogger(__name__)
|
||||
|
||||
# tags that generate NodeItem elements
|
||||
TAGS_FOR_NODE_ITEMS: Final = [
|
||||
DEFAULT_IMAGE_WIDTH = 128
|
||||
DEFAULT_IMAGE_HEIGHT = 128
|
||||
|
||||
# Tags that initiate distinct Docling items
|
||||
_BLOCK_TAGS: Final = {
|
||||
"address",
|
||||
"details",
|
||||
"figure",
|
||||
"h1",
|
||||
"h2",
|
||||
"h3",
|
||||
@ -41,12 +47,9 @@ TAGS_FOR_NODE_ITEMS: Final = [
|
||||
"code",
|
||||
"ul",
|
||||
"ol",
|
||||
"li",
|
||||
"summary",
|
||||
"table",
|
||||
"figure",
|
||||
"img",
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
class _Context(BaseModel):
|
||||
@ -56,12 +59,16 @@ class _Context(BaseModel):
|
||||
|
||||
class HTMLDocumentBackend(DeclarativeDocumentBackend):
|
||||
@override
|
||||
def __init__(self, in_doc: "InputDocument", path_or_stream: Union[BytesIO, Path]):
|
||||
def __init__(
|
||||
self,
|
||||
in_doc: InputDocument,
|
||||
path_or_stream: Union[BytesIO, Path],
|
||||
):
|
||||
super().__init__(in_doc, path_or_stream)
|
||||
self.soup: Optional[Tag] = None
|
||||
# HTML file:
|
||||
self.path_or_stream = path_or_stream
|
||||
# Initialise the parents for the hierarchy
|
||||
|
||||
# Initialize the parents for the hierarchy
|
||||
self.max_levels = 10
|
||||
self.level = 0
|
||||
self.parents: dict[int, Optional[Union[DocItem, GroupItem]]] = {}
|
||||
@ -70,13 +77,12 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
|
||||
self.parents[i] = None
|
||||
|
||||
try:
|
||||
if isinstance(self.path_or_stream, BytesIO):
|
||||
text_stream = self.path_or_stream.getvalue()
|
||||
self.soup = BeautifulSoup(text_stream, "html.parser")
|
||||
if isinstance(self.path_or_stream, Path):
|
||||
with open(self.path_or_stream, "rb") as f:
|
||||
html_content = f.read()
|
||||
self.soup = BeautifulSoup(html_content, "html.parser")
|
||||
raw = (
|
||||
path_or_stream.getvalue()
|
||||
if isinstance(path_or_stream, BytesIO)
|
||||
else Path(path_or_stream).read_bytes()
|
||||
)
|
||||
self.soup = BeautifulSoup(raw, "html.parser")
|
||||
except Exception as e:
|
||||
raise RuntimeError(
|
||||
"Could not initialize HTML backend for file with "
|
||||
@ -96,7 +102,6 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
|
||||
def unload(self):
|
||||
if isinstance(self.path_or_stream, BytesIO):
|
||||
self.path_or_stream.close()
|
||||
|
||||
self.path_or_stream = None
|
||||
|
||||
@classmethod
|
||||
@ -106,211 +111,156 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
|
||||
|
||||
@override
|
||||
def convert(self) -> DoclingDocument:
|
||||
# access self.path_or_stream to load stuff
|
||||
_log.debug("Starting HTML conversion...")
|
||||
if not self.is_valid():
|
||||
raise RuntimeError("Invalid HTML document.")
|
||||
|
||||
origin = DocumentOrigin(
|
||||
filename=self.file.name or "file",
|
||||
mimetype="text/html",
|
||||
binary_hash=self.document_hash,
|
||||
)
|
||||
|
||||
doc = DoclingDocument(name=self.file.stem or "file", origin=origin)
|
||||
_log.debug("Trying to convert HTML...")
|
||||
|
||||
if self.is_valid():
|
||||
assert self.soup is not None
|
||||
# set the title as furniture, since it is part of the document metadata
|
||||
title = self.soup.title
|
||||
if title:
|
||||
doc.add_title(
|
||||
text=title.get_text(separator=" ", strip=True),
|
||||
content_layer=ContentLayer.FURNITURE,
|
||||
)
|
||||
# remove scripts/styles
|
||||
for tag in self.soup(["script", "style"]):
|
||||
tag.decompose()
|
||||
content = self.soup.body or self.soup
|
||||
# Replace <br> tags with newline characters
|
||||
# TODO: remove style to avoid losing text from tags like i, b, span, ...
|
||||
# normalize <br> tags
|
||||
for br in content("br"):
|
||||
br.replace_with(NavigableString("\n"))
|
||||
|
||||
# set default content layer
|
||||
headers = content.find(["h1", "h2", "h3", "h4", "h5", "h6"])
|
||||
self.content_layer = (
|
||||
ContentLayer.BODY if headers is None else ContentLayer.FURNITURE
|
||||
)
|
||||
self.ctx = _Context() # reset context
|
||||
self.walk(content, doc)
|
||||
else:
|
||||
raise RuntimeError(
|
||||
f"Cannot convert doc with {self.document_hash} because the backend "
|
||||
"failed to init."
|
||||
)
|
||||
# reset context
|
||||
self.ctx = _Context()
|
||||
|
||||
try:
|
||||
self._walk(content, doc)
|
||||
except Exception:
|
||||
print(traceback.format_exc())
|
||||
|
||||
return doc
|
||||
|
||||
def walk(self, tag: Tag, doc: DoclingDocument) -> None:
|
||||
# Iterate over elements in the body of the document
|
||||
text: str = ""
|
||||
for element in tag.children:
|
||||
if isinstance(element, Tag):
|
||||
try:
|
||||
self.analyze_tag(cast(Tag, element), doc)
|
||||
except Exception as exc_child:
|
||||
_log.error(
|
||||
f"Error processing child from tag {tag.name}:\n{traceback.format_exc()}"
|
||||
)
|
||||
raise exc_child
|
||||
elif isinstance(element, NavigableString) and not isinstance(
|
||||
element, PreformattedString
|
||||
):
|
||||
# Floating text outside paragraphs or analyzed tags
|
||||
text += element
|
||||
siblings: list[Tag] = [
|
||||
item for item in element.next_siblings if isinstance(item, Tag)
|
||||
]
|
||||
if element.next_sibling is None or any(
|
||||
item.name in TAGS_FOR_NODE_ITEMS for item in siblings
|
||||
):
|
||||
text = text.strip()
|
||||
if text and tag.name in ["div"]:
|
||||
doc.add_text(
|
||||
parent=self.parents[self.level],
|
||||
label=DocItemLabel.TEXT,
|
||||
text=text,
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
text = ""
|
||||
def _walk(self, element: Tag, doc: DoclingDocument) -> None:
|
||||
"""Parse an XML tag by recursively walking its content.
|
||||
|
||||
While walking, the method buffers inline text across tags like <b> or <span>,
|
||||
emitting text nodes only at block boundaries.
|
||||
|
||||
Args:
|
||||
element: The XML tag to parse.
|
||||
doc: The Docling document to be updated with the parsed content.
|
||||
"""
|
||||
buffer: list[str] = []
|
||||
|
||||
def flush_buffer():
|
||||
if not buffer:
|
||||
return
|
||||
|
||||
def analyze_tag(self, tag: Tag, doc: DoclingDocument) -> None:
|
||||
if tag.name in ["h1", "h2", "h3", "h4", "h5", "h6"]:
|
||||
self.handle_header(tag, doc)
|
||||
elif tag.name in ["p", "address", "summary"]:
|
||||
self.handle_paragraph(tag, doc)
|
||||
elif tag.name in ["pre", "code"]:
|
||||
self.handle_code(tag, doc)
|
||||
elif tag.name in ["ul", "ol"]:
|
||||
self.handle_list(tag, doc)
|
||||
elif tag.name in ["li"]:
|
||||
self.handle_list_item(tag, doc)
|
||||
elif tag.name == "table":
|
||||
self.handle_table(tag, doc)
|
||||
elif tag.name == "figure":
|
||||
self.handle_figure(tag, doc)
|
||||
elif tag.name == "img":
|
||||
self.handle_image(tag, doc)
|
||||
elif tag.name == "details":
|
||||
self.handle_details(tag, doc)
|
||||
else:
|
||||
self.walk(tag, doc)
|
||||
|
||||
def get_text(self, item: PageElement) -> str:
|
||||
"""Get the text content of a tag."""
|
||||
parts: list[str] = self.extract_text_recursively(item)
|
||||
|
||||
return "".join(parts) + " "
|
||||
|
||||
# Function to recursively extract text from all child nodes
|
||||
def extract_text_recursively(self, item: PageElement) -> list[str]:
|
||||
result: list[str] = []
|
||||
|
||||
if isinstance(item, NavigableString):
|
||||
return [item]
|
||||
|
||||
tag = cast(Tag, item)
|
||||
if tag.name not in ["ul", "ol"]:
|
||||
for child in tag:
|
||||
# Recursively get the child's text content
|
||||
result.extend(self.extract_text_recursively(child))
|
||||
|
||||
return ["".join(result) + " "]
|
||||
|
||||
def handle_details(self, element: Tag, doc: DoclingDocument) -> None:
|
||||
"""Handle details tag (details) and its content."""
|
||||
|
||||
self.parents[self.level + 1] = doc.add_group(
|
||||
name="details",
|
||||
label=GroupLabel.SECTION,
|
||||
text = "".join(buffer).strip()
|
||||
buffer.clear()
|
||||
if not text:
|
||||
return
|
||||
for part in text.split("\n"):
|
||||
seg = part.strip()
|
||||
if seg:
|
||||
doc.add_text(
|
||||
DocItemLabel.TEXT,
|
||||
seg,
|
||||
parent=self.parents[self.level],
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
|
||||
self.level += 1
|
||||
self.walk(element, doc)
|
||||
self.parents[self.level + 1] = None
|
||||
self.level -= 1
|
||||
for node in element.contents:
|
||||
if isinstance(node, Tag):
|
||||
name = node.name.lower()
|
||||
if name == "img":
|
||||
flush_buffer()
|
||||
self._emit_image(node, doc)
|
||||
elif name in _BLOCK_TAGS:
|
||||
flush_buffer()
|
||||
self._handle_block(node, doc)
|
||||
elif node.find(_BLOCK_TAGS):
|
||||
flush_buffer()
|
||||
self._walk(node, doc)
|
||||
else:
|
||||
buffer.append(node.text)
|
||||
elif isinstance(node, NavigableString) and not isinstance(
|
||||
node, PreformattedString
|
||||
):
|
||||
buffer.append(str(node))
|
||||
|
||||
def handle_header(self, element: Tag, doc: DoclingDocument) -> None:
|
||||
"""Handles header tags (h1, h2, etc.)."""
|
||||
hlevel = int(element.name.replace("h", ""))
|
||||
text = element.text.strip()
|
||||
flush_buffer()
|
||||
|
||||
def _handle_heading(self, tag: Tag, doc: DoclingDocument) -> None:
|
||||
tag_name = tag.name.lower()
|
||||
# set default content layer to BODY as soon as we encounter a heading
|
||||
self.content_layer = ContentLayer.BODY
|
||||
|
||||
if hlevel == 1:
|
||||
level = int(tag_name[1])
|
||||
text = tag.get_text(strip=True, separator=" ")
|
||||
# the first level is for the title item
|
||||
if level == 1:
|
||||
for key in self.parents.keys():
|
||||
self.parents[key] = None
|
||||
|
||||
self.level = 1
|
||||
self.parents[self.level] = doc.add_text(
|
||||
parent=self.parents[0],
|
||||
label=DocItemLabel.TITLE,
|
||||
text=text,
|
||||
content_layer=self.content_layer,
|
||||
self.level = 0
|
||||
self.parents[self.level + 1] = doc.add_title(
|
||||
text, content_layer=self.content_layer
|
||||
)
|
||||
# the other levels need to be lowered by 1 if a title was set
|
||||
else:
|
||||
if hlevel > self.level:
|
||||
level -= 1
|
||||
if level > self.level:
|
||||
# add invisible group
|
||||
for i in range(self.level + 1, hlevel):
|
||||
self.parents[i] = doc.add_group(
|
||||
name=f"header-{i}",
|
||||
for i in range(self.level, level):
|
||||
_log.debug(f"Adding invisible group to level {i}")
|
||||
self.parents[i + 1] = doc.add_group(
|
||||
name=f"header-{i + 1}",
|
||||
label=GroupLabel.SECTION,
|
||||
parent=self.parents[i - 1],
|
||||
parent=self.parents[i],
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
self.level = hlevel
|
||||
|
||||
elif hlevel < self.level:
|
||||
self.level = level
|
||||
elif level < self.level:
|
||||
# remove the tail
|
||||
for key in self.parents.keys():
|
||||
if key > hlevel:
|
||||
if key > level + 1:
|
||||
_log.debug(f"Remove the tail of level {key}")
|
||||
self.parents[key] = None
|
||||
self.level = hlevel
|
||||
|
||||
self.parents[hlevel] = doc.add_heading(
|
||||
parent=self.parents[hlevel - 1],
|
||||
text=text,
|
||||
level=hlevel - 1,
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
|
||||
def handle_code(self, element: Tag, doc: DoclingDocument) -> None:
|
||||
"""Handles monospace code snippets (pre)."""
|
||||
if element.text is None:
|
||||
return
|
||||
text = element.text.strip()
|
||||
if text:
|
||||
doc.add_code(
|
||||
self.level = level
|
||||
self.parents[self.level + 1] = doc.add_heading(
|
||||
parent=self.parents[self.level],
|
||||
text=text,
|
||||
level=self.level,
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
self.level += 1
|
||||
for img_tag in tag("img"):
|
||||
if isinstance(img_tag, Tag):
|
||||
self._emit_image(img_tag, doc)
|
||||
|
||||
def handle_paragraph(self, element: Tag, doc: DoclingDocument) -> None:
|
||||
"""Handles paragraph tags (p) or equivalent ones."""
|
||||
if element.text is None:
|
||||
return
|
||||
text = element.text.strip()
|
||||
if text:
|
||||
doc.add_text(
|
||||
parent=self.parents[self.level],
|
||||
label=DocItemLabel.TEXT,
|
||||
text=text,
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
|
||||
def handle_list(self, element: Tag, doc: DoclingDocument) -> None:
|
||||
"""Handles list tags (ul, ol) and their list items."""
|
||||
|
||||
def _handle_list(self, tag: Tag, doc: DoclingDocument) -> None:
|
||||
tag_name = tag.name.lower()
|
||||
start: Optional[int] = None
|
||||
if is_ordered := element.name == "ol":
|
||||
start_attr = element.get("start")
|
||||
name: str = ""
|
||||
is_ordered = tag_name == "ol"
|
||||
if is_ordered:
|
||||
start_attr = tag.get("start")
|
||||
if isinstance(start_attr, str) and start_attr.isnumeric():
|
||||
start = int(start_attr)
|
||||
name = "ordered list" + (f" start {start}" if start is not None else "")
|
||||
else:
|
||||
name = "list"
|
||||
# create a list group
|
||||
# Create the list container
|
||||
list_group = doc.add_list_group(
|
||||
name=name,
|
||||
parent=self.parents[self.level],
|
||||
@ -320,64 +270,152 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
|
||||
self.ctx.list_ordered_flag_by_ref[list_group.self_ref] = is_ordered
|
||||
if is_ordered and start is not None:
|
||||
self.ctx.list_start_by_ref[list_group.self_ref] = start
|
||||
|
||||
self.level += 1
|
||||
|
||||
self.walk(element, doc)
|
||||
# For each top-level <li> in this list
|
||||
for li in tag.find_all({"li", "ul", "ol"}, recursive=False):
|
||||
if not isinstance(li, Tag):
|
||||
continue
|
||||
|
||||
self.parents[self.level + 1] = None
|
||||
self.level -= 1
|
||||
# sub-list items should be indented under main list items, but temporarily
|
||||
# addressing invalid HTML (docling-core/issues/357)
|
||||
if li.name in {"ul", "ol"}:
|
||||
self._handle_block(li, doc)
|
||||
|
||||
def handle_list_item(self, element: Tag, doc: DoclingDocument) -> None:
|
||||
"""Handles list item tags (li)."""
|
||||
nested_list = element.find(["ul", "ol"])
|
||||
|
||||
parent = self.parents[self.level]
|
||||
if parent is None:
|
||||
_log.debug(f"list-item has no parent in DoclingDocument: {element}")
|
||||
return
|
||||
enumerated = self.ctx.list_ordered_flag_by_ref.get(parent.self_ref, False)
|
||||
if enumerated and (start := self.ctx.list_start_by_ref.get(parent.self_ref)):
|
||||
marker = f"{start + len(parent.children)}."
|
||||
else:
|
||||
# 1) determine the marker
|
||||
if is_ordered and start is not None:
|
||||
marker = f"{start + len(list_group.children)}."
|
||||
else:
|
||||
marker = ""
|
||||
|
||||
if nested_list:
|
||||
# Text in list item can be hidden within hierarchy, hence
|
||||
# we need to extract it recursively
|
||||
text: str = self.get_text(element)
|
||||
# Flatten text, remove break lines:
|
||||
text = text.replace("\n", "").replace("\r", "")
|
||||
text = " ".join(text.split()).strip()
|
||||
# 2) extract only the "direct" text from this <li>
|
||||
parts: list[str] = []
|
||||
for child in li.contents:
|
||||
if isinstance(child, NavigableString) and not isinstance(
|
||||
child, PreformattedString
|
||||
):
|
||||
parts.append(child)
|
||||
elif isinstance(child, Tag) and child.name not in ("ul", "ol"):
|
||||
text_part = child.get_text()
|
||||
if text_part:
|
||||
parts.append(text_part)
|
||||
li_text = re.sub(r"\s+|\n+", " ", "".join(parts)).strip()
|
||||
|
||||
if len(text) > 0:
|
||||
# create a list-item
|
||||
# 3) add the list item
|
||||
if li_text:
|
||||
self.parents[self.level + 1] = doc.add_list_item(
|
||||
text=text,
|
||||
enumerated=enumerated,
|
||||
text=li_text,
|
||||
enumerated=is_ordered,
|
||||
marker=marker,
|
||||
parent=parent,
|
||||
parent=list_group,
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
|
||||
# 4) recurse into any nested lists, attaching them to this <li> item
|
||||
for sublist in li({"ul", "ol"}, recursive=False):
|
||||
if isinstance(sublist, Tag):
|
||||
self.level += 1
|
||||
self.walk(element, doc)
|
||||
self._handle_block(sublist, doc)
|
||||
self.parents[self.level + 1] = None
|
||||
self.level -= 1
|
||||
else:
|
||||
self.walk(element, doc)
|
||||
for sublist in li({"ul", "ol"}, recursive=False):
|
||||
if isinstance(sublist, Tag):
|
||||
self._handle_block(sublist, doc)
|
||||
|
||||
elif element.text.strip():
|
||||
text = element.text.strip()
|
||||
# 5) extract any images under this <li>
|
||||
for img_tag in li("img"):
|
||||
if isinstance(img_tag, Tag):
|
||||
self._emit_image(img_tag, doc)
|
||||
|
||||
doc.add_list_item(
|
||||
text=text,
|
||||
enumerated=enumerated,
|
||||
marker=marker,
|
||||
parent=parent,
|
||||
self.parents[self.level + 1] = None
|
||||
self.level -= 1
|
||||
|
||||
def _handle_block(self, tag: Tag, doc: DoclingDocument) -> None:
|
||||
tag_name = tag.name.lower()
|
||||
|
||||
if tag_name == "figure":
|
||||
img_tag = tag.find("img")
|
||||
if isinstance(img_tag, Tag):
|
||||
self._emit_image(img_tag, doc)
|
||||
|
||||
elif tag_name in {"h1", "h2", "h3", "h4", "h5", "h6"}:
|
||||
self._handle_heading(tag, doc)
|
||||
|
||||
elif tag_name in {"ul", "ol"}:
|
||||
self._handle_list(tag, doc)
|
||||
|
||||
elif tag_name in {"p", "address", "summary"}:
|
||||
for part in tag.text.split("\n"):
|
||||
seg = part.strip()
|
||||
if seg:
|
||||
doc.add_text(
|
||||
parent=self.parents[self.level],
|
||||
label=DocItemLabel.TEXT,
|
||||
text=seg,
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
for img_tag in tag("img"):
|
||||
if isinstance(img_tag, Tag):
|
||||
self._emit_image(img_tag, doc)
|
||||
|
||||
elif tag_name == "table":
|
||||
data = HTMLDocumentBackend.parse_table_data(tag)
|
||||
for img_tag in tag("img"):
|
||||
if isinstance(img_tag, Tag):
|
||||
self._emit_image(tag, doc)
|
||||
if data is not None:
|
||||
doc.add_table(
|
||||
data=data,
|
||||
parent=self.parents[self.level],
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
|
||||
elif tag_name in {"pre", "code"}:
|
||||
# handle monospace code snippets (pre).
|
||||
text = tag.get_text(strip=True)
|
||||
if text:
|
||||
doc.add_code(
|
||||
parent=self.parents[self.level],
|
||||
text=text,
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
|
||||
elif tag_name == "details":
|
||||
# handle details and its content.
|
||||
self.parents[self.level + 1] = doc.add_group(
|
||||
name="details",
|
||||
label=GroupLabel.SECTION,
|
||||
parent=self.parents[self.level],
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
self.level += 1
|
||||
self._walk(tag, doc)
|
||||
self.parents[self.level + 1] = None
|
||||
self.level -= 1
|
||||
|
||||
def _emit_image(self, img_tag: Tag, doc: DoclingDocument) -> None:
|
||||
figure = img_tag.find_parent("figure")
|
||||
caption: str = ""
|
||||
if isinstance(figure, Tag):
|
||||
caption_tag = figure.find("figcaption", recursive=False)
|
||||
if isinstance(caption_tag, Tag):
|
||||
caption = caption_tag.get_text()
|
||||
if not caption:
|
||||
caption = str(img_tag.get("alt", "")).strip()
|
||||
|
||||
caption_item: Optional[TextItem] = None
|
||||
if caption:
|
||||
caption_item = doc.add_text(
|
||||
DocItemLabel.CAPTION, text=caption, content_layer=self.content_layer
|
||||
)
|
||||
|
||||
doc.add_picture(
|
||||
caption=caption_item,
|
||||
parent=self.parents[self.level],
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
else:
|
||||
_log.debug(f"list-item has no text: {element}")
|
||||
|
||||
@staticmethod
|
||||
def _get_cell_spans(cell: Tag) -> tuple[int, int]:
|
||||
@ -502,84 +540,3 @@ class HTMLDocumentBackend(DeclarativeDocumentBackend):
|
||||
data.table_cells.append(table_cell)
|
||||
|
||||
return data
|
||||
|
||||
def handle_table(self, element: Tag, doc: DoclingDocument) -> None:
|
||||
"""Handles table tags."""
|
||||
|
||||
table_data = HTMLDocumentBackend.parse_table_data(element)
|
||||
|
||||
if table_data is not None:
|
||||
doc.add_table(
|
||||
data=table_data,
|
||||
parent=self.parents[self.level],
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
|
||||
def get_list_text(self, list_element: Tag, level: int = 0) -> list[str]:
|
||||
"""Recursively extract text from <ul> or <ol> with proper indentation."""
|
||||
result = []
|
||||
bullet_char = "*" # Default bullet character for unordered lists
|
||||
|
||||
if list_element.name == "ol": # For ordered lists, use numbers
|
||||
for i, li in enumerate(list_element("li", recursive=False), 1):
|
||||
if not isinstance(li, Tag):
|
||||
continue
|
||||
# Add numbering for ordered lists
|
||||
result.append(f"{' ' * level}{i}. {li.get_text(strip=True)}")
|
||||
# Handle nested lists
|
||||
nested_list = li.find(["ul", "ol"])
|
||||
if isinstance(nested_list, Tag):
|
||||
result.extend(self.get_list_text(nested_list, level + 1))
|
||||
elif list_element.name == "ul": # For unordered lists, use bullet points
|
||||
for li in list_element("li", recursive=False):
|
||||
if not isinstance(li, Tag):
|
||||
continue
|
||||
# Add bullet points for unordered lists
|
||||
result.append(
|
||||
f"{' ' * level}{bullet_char} {li.get_text(strip=True)}"
|
||||
)
|
||||
# Handle nested lists
|
||||
nested_list = li.find(["ul", "ol"])
|
||||
if isinstance(nested_list, Tag):
|
||||
result.extend(self.get_list_text(nested_list, level + 1))
|
||||
|
||||
return result
|
||||
|
||||
def handle_figure(self, element: Tag, doc: DoclingDocument) -> None:
|
||||
"""Handles image tags (img)."""
|
||||
|
||||
# Extract the image URI from the <img> tag
|
||||
# image_uri = root.xpath('//figure//img/@src')[0]
|
||||
|
||||
contains_captions = element.find(["figcaption"])
|
||||
if not isinstance(contains_captions, Tag):
|
||||
doc.add_picture(
|
||||
parent=self.parents[self.level],
|
||||
caption=None,
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
else:
|
||||
texts = []
|
||||
for item in contains_captions:
|
||||
texts.append(item.text)
|
||||
|
||||
fig_caption = doc.add_text(
|
||||
label=DocItemLabel.CAPTION,
|
||||
text=("".join(texts)).strip(),
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
doc.add_picture(
|
||||
parent=self.parents[self.level],
|
||||
caption=fig_caption,
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
|
||||
def handle_image(self, element: Tag, doc: DoclingDocument) -> None:
|
||||
"""Handles image tags (img)."""
|
||||
_log.debug(f"ignoring <img> tags at the moment: {element}")
|
||||
|
||||
doc.add_picture(
|
||||
parent=self.parents[self.level],
|
||||
caption=None,
|
||||
content_layer=self.content_layer,
|
||||
)
|
||||
|
@ -4,6 +4,7 @@ item-0 at level 0: unspecified: group _root_
|
||||
item-3 at level 2: section_header: Background
|
||||
item-4 at level 3: text: Some background information here.
|
||||
item-5 at level 3: picture
|
||||
item-5 at level 4: caption: Example image
|
||||
item-6 at level 3: list: group list
|
||||
item-7 at level 4: list_item: First item in unordered list
|
||||
item-8 at level 4: list_item: Second item in unordered list
|
||||
@ -13,3 +14,4 @@ item-0 at level 0: unspecified: group _root_
|
||||
item-12 at level 3: list: group ordered list start 42
|
||||
item-13 at level 4: list_item: First item in ordered list with start
|
||||
item-14 at level 4: list_item: Second item in ordered list with start
|
||||
item-15 at level 1: caption: Example image
|
@ -19,6 +19,9 @@
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/texts/0"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/4"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
@ -33,10 +36,10 @@
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/texts/4"
|
||||
"$ref": "#/texts/5"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/5"
|
||||
"$ref": "#/texts/6"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
@ -50,10 +53,10 @@
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/texts/6"
|
||||
"$ref": "#/texts/7"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/7"
|
||||
"$ref": "#/texts/8"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
@ -67,10 +70,10 @@
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/texts/8"
|
||||
"$ref": "#/texts/9"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/9"
|
||||
"$ref": "#/texts/10"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
@ -153,6 +156,18 @@
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/4",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "caption",
|
||||
"prov": [],
|
||||
"orig": "Example image",
|
||||
"text": "Example image"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/5",
|
||||
"parent": {
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
@ -166,7 +181,7 @@
|
||||
"marker": ""
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/5",
|
||||
"self_ref": "#/texts/6",
|
||||
"parent": {
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
@ -180,7 +195,7 @@
|
||||
"marker": ""
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/6",
|
||||
"self_ref": "#/texts/7",
|
||||
"parent": {
|
||||
"$ref": "#/groups/1"
|
||||
},
|
||||
@ -194,7 +209,7 @@
|
||||
"marker": ""
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/7",
|
||||
"self_ref": "#/texts/8",
|
||||
"parent": {
|
||||
"$ref": "#/groups/1"
|
||||
},
|
||||
@ -208,7 +223,7 @@
|
||||
"marker": ""
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/8",
|
||||
"self_ref": "#/texts/9",
|
||||
"parent": {
|
||||
"$ref": "#/groups/2"
|
||||
},
|
||||
@ -222,7 +237,7 @@
|
||||
"marker": "42."
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/9",
|
||||
"self_ref": "#/texts/10",
|
||||
"parent": {
|
||||
"$ref": "#/groups/2"
|
||||
},
|
||||
@ -246,7 +261,11 @@
|
||||
"content_layer": "body",
|
||||
"label": "picture",
|
||||
"prov": [],
|
||||
"captions": [],
|
||||
"captions": [
|
||||
{
|
||||
"$ref": "#/texts/4"
|
||||
}
|
||||
],
|
||||
"references": [],
|
||||
"footnotes": [],
|
||||
"annotations": []
|
||||
|
@ -6,6 +6,8 @@ This is the first paragraph of the introduction.
|
||||
|
||||
Some background information here.
|
||||
|
||||
Example image
|
||||
|
||||
<!-- image -->
|
||||
|
||||
- First item in unordered list
|
||||
|
@ -3,8 +3,8 @@ item-0 at level 0: unspecified: group _root_
|
||||
item-2 at level 1: text: This is another div with text.
|
||||
item-3 at level 1: text: This is a regular paragraph.
|
||||
item-4 at level 1: text: This is a third div
|
||||
with a new line.
|
||||
item-5 at level 1: section: group details
|
||||
item-6 at level 2: text: Heading for the details element
|
||||
item-7 at level 2: text: Description of the details element.
|
||||
item-8 at level 1: text: This is a fourth div with a bold paragraph.
|
||||
item-5 at level 1: text: with a new line.
|
||||
item-6 at level 1: section: group details
|
||||
item-7 at level 2: text: Heading for the details element
|
||||
item-8 at level 2: text: Description of the details element.
|
||||
item-9 at level 1: text: This is a fourth div with a bold paragraph.
|
@ -29,11 +29,17 @@
|
||||
{
|
||||
"$ref": "#/texts/3"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/4"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/5"
|
||||
},
|
||||
{
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/6"
|
||||
"$ref": "#/texts/8"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
@ -48,10 +54,10 @@
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/texts/4"
|
||||
"$ref": "#/texts/6"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/5"
|
||||
"$ref": "#/texts/7"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
@ -66,6 +72,18 @@
|
||||
"$ref": "#/body"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "furniture",
|
||||
"label": "title",
|
||||
"prov": [],
|
||||
"orig": "Sample HTML File",
|
||||
"text": "Sample HTML File"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/1",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "text",
|
||||
"prov": [],
|
||||
@ -73,7 +91,7 @@
|
||||
"text": "This is a div with text."
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/1",
|
||||
"self_ref": "#/texts/2",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
@ -85,7 +103,7 @@
|
||||
"text": "This is another div with text."
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/2",
|
||||
"self_ref": "#/texts/3",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
@ -97,7 +115,7 @@
|
||||
"text": "This is a regular paragraph."
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/3",
|
||||
"self_ref": "#/texts/4",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
@ -105,11 +123,23 @@
|
||||
"content_layer": "body",
|
||||
"label": "text",
|
||||
"prov": [],
|
||||
"orig": "This is a third div\nwith a new line.",
|
||||
"text": "This is a third div\nwith a new line."
|
||||
"orig": "This is a third div",
|
||||
"text": "This is a third div"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/4",
|
||||
"self_ref": "#/texts/5",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "text",
|
||||
"prov": [],
|
||||
"orig": "with a new line.",
|
||||
"text": "with a new line."
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/6",
|
||||
"parent": {
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
@ -121,7 +151,7 @@
|
||||
"text": "Heading for the details element"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/5",
|
||||
"self_ref": "#/texts/7",
|
||||
"parent": {
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
@ -133,7 +163,7 @@
|
||||
"text": "Description of the details element."
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/6",
|
||||
"self_ref": "#/texts/8",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
|
@ -5,6 +5,7 @@ This is another div with text.
|
||||
This is a regular paragraph.
|
||||
|
||||
This is a third div
|
||||
|
||||
with a new line.
|
||||
|
||||
Heading for the details element
|
||||
|
27
tests/data/groundtruth/docling_v2/example_09.html.itxt
vendored
Normal file
27
tests/data/groundtruth/docling_v2/example_09.html.itxt
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
item-0 at level 0: unspecified: group _root_
|
||||
item-1 at level 1: title: Introduction to parsing HTML files with Docling
|
||||
item-2 at level 2: picture
|
||||
item-2 at level 3: caption: Docling
|
||||
item-3 at level 2: text: Docling simplifies document proc ... ntegrations with the gen AI ecosystem.
|
||||
item-4 at level 2: section_header: Supported file formats
|
||||
item-5 at level 3: text: Docling supports multiple file formats..
|
||||
item-6 at level 3: list: group list
|
||||
item-7 at level 4: list_item: Advanced PDF understanding
|
||||
item-8 at level 4: picture
|
||||
item-8 at level 5: caption: PDF
|
||||
item-9 at level 4: list_item: Microsoft Office DOCX
|
||||
item-10 at level 4: picture
|
||||
item-10 at level 5: caption: DOCX
|
||||
item-11 at level 4: list_item: HTML files (with optional support for images)
|
||||
item-12 at level 4: picture
|
||||
item-12 at level 5: caption: HTML
|
||||
item-13 at level 3: section_header: Three backends for handling HTML files
|
||||
item-14 at level 4: text: Docling has three backends for parsing HTML files:
|
||||
item-15 at level 4: list: group ordered list
|
||||
item-16 at level 5: list_item: HTMLDocumentBackend Ignores images
|
||||
item-17 at level 5: list_item: HTMLDocumentBackendImagesInline Extracts images inline
|
||||
item-18 at level 5: list_item: HTMLDocumentBackendImagesReferenced Extracts images as references
|
||||
item-19 at level 1: caption: Docling
|
||||
item-20 at level 1: caption: PDF
|
||||
item-21 at level 1: caption: DOCX
|
||||
item-22 at level 1: caption: HTML
|
404
tests/data/groundtruth/docling_v2/example_09.html.json
vendored
Normal file
404
tests/data/groundtruth/docling_v2/example_09.html.json
vendored
Normal file
@ -0,0 +1,404 @@
|
||||
{
|
||||
"schema_name": "DoclingDocument",
|
||||
"version": "1.5.0",
|
||||
"name": "example_09",
|
||||
"origin": {
|
||||
"mimetype": "text/html",
|
||||
"binary_hash": 6785336133244366107,
|
||||
"filename": "example_09.html"
|
||||
},
|
||||
"furniture": {
|
||||
"self_ref": "#/furniture",
|
||||
"children": [],
|
||||
"content_layer": "furniture",
|
||||
"name": "_root_",
|
||||
"label": "unspecified"
|
||||
},
|
||||
"body": {
|
||||
"self_ref": "#/body",
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/texts/0"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/1"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/6"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/8"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/10"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
"name": "_root_",
|
||||
"label": "unspecified"
|
||||
},
|
||||
"groups": [
|
||||
{
|
||||
"self_ref": "#/groups/0",
|
||||
"parent": {
|
||||
"$ref": "#/texts/3"
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/texts/5"
|
||||
},
|
||||
{
|
||||
"$ref": "#/pictures/1"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/7"
|
||||
},
|
||||
{
|
||||
"$ref": "#/pictures/2"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/9"
|
||||
},
|
||||
{
|
||||
"$ref": "#/pictures/3"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
"name": "list",
|
||||
"label": "list"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/groups/1",
|
||||
"parent": {
|
||||
"$ref": "#/texts/11"
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/texts/13"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/14"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/15"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
"name": "ordered list",
|
||||
"label": "list"
|
||||
}
|
||||
],
|
||||
"texts": [
|
||||
{
|
||||
"self_ref": "#/texts/0",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/pictures/0"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/2"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/3"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
"label": "title",
|
||||
"prov": [],
|
||||
"orig": "Introduction to parsing HTML files with Docling",
|
||||
"text": "Introduction to parsing HTML files with Docling"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/1",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "caption",
|
||||
"prov": [],
|
||||
"orig": "Docling",
|
||||
"text": "Docling"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/2",
|
||||
"parent": {
|
||||
"$ref": "#/texts/0"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "text",
|
||||
"prov": [],
|
||||
"orig": "Docling simplifies document processing, parsing diverse formats — including HTML — and providing seamless integrations with the gen AI ecosystem.",
|
||||
"text": "Docling simplifies document processing, parsing diverse formats — including HTML — and providing seamless integrations with the gen AI ecosystem."
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/3",
|
||||
"parent": {
|
||||
"$ref": "#/texts/0"
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/texts/4"
|
||||
},
|
||||
{
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
{
|
||||
"$ref": "#/texts/11"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
"label": "section_header",
|
||||
"prov": [],
|
||||
"orig": "Supported file formats",
|
||||
"text": "Supported file formats",
|
||||
"level": 1
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/4",
|
||||
"parent": {
|
||||
"$ref": "#/texts/3"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "text",
|
||||
"prov": [],
|
||||
"orig": "Docling supports multiple file formats..",
|
||||
"text": "Docling supports multiple file formats.."
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/5",
|
||||
"parent": {
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "list_item",
|
||||
"prov": [],
|
||||
"orig": "Advanced PDF understanding",
|
||||
"text": "Advanced PDF understanding",
|
||||
"enumerated": false,
|
||||
"marker": ""
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/6",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "caption",
|
||||
"prov": [],
|
||||
"orig": "PDF",
|
||||
"text": "PDF"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/7",
|
||||
"parent": {
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "list_item",
|
||||
"prov": [],
|
||||
"orig": "Microsoft Office DOCX",
|
||||
"text": "Microsoft Office DOCX",
|
||||
"enumerated": false,
|
||||
"marker": ""
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/8",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "caption",
|
||||
"prov": [],
|
||||
"orig": "DOCX",
|
||||
"text": "DOCX"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/9",
|
||||
"parent": {
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "list_item",
|
||||
"prov": [],
|
||||
"orig": "HTML files (with optional support for images)",
|
||||
"text": "HTML files (with optional support for images)",
|
||||
"enumerated": false,
|
||||
"marker": ""
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/10",
|
||||
"parent": {
|
||||
"$ref": "#/body"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "caption",
|
||||
"prov": [],
|
||||
"orig": "HTML",
|
||||
"text": "HTML"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/11",
|
||||
"parent": {
|
||||
"$ref": "#/texts/3"
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"$ref": "#/texts/12"
|
||||
},
|
||||
{
|
||||
"$ref": "#/groups/1"
|
||||
}
|
||||
],
|
||||
"content_layer": "body",
|
||||
"label": "section_header",
|
||||
"prov": [],
|
||||
"orig": "Three backends for handling HTML files",
|
||||
"text": "Three backends for handling HTML files",
|
||||
"level": 2
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/12",
|
||||
"parent": {
|
||||
"$ref": "#/texts/11"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "text",
|
||||
"prov": [],
|
||||
"orig": "Docling has three backends for parsing HTML files:",
|
||||
"text": "Docling has three backends for parsing HTML files:"
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/13",
|
||||
"parent": {
|
||||
"$ref": "#/groups/1"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "list_item",
|
||||
"prov": [],
|
||||
"orig": "HTMLDocumentBackend Ignores images",
|
||||
"text": "HTMLDocumentBackend Ignores images",
|
||||
"enumerated": true,
|
||||
"marker": ""
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/14",
|
||||
"parent": {
|
||||
"$ref": "#/groups/1"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "list_item",
|
||||
"prov": [],
|
||||
"orig": "HTMLDocumentBackendImagesInline Extracts images inline",
|
||||
"text": "HTMLDocumentBackendImagesInline Extracts images inline",
|
||||
"enumerated": true,
|
||||
"marker": ""
|
||||
},
|
||||
{
|
||||
"self_ref": "#/texts/15",
|
||||
"parent": {
|
||||
"$ref": "#/groups/1"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "list_item",
|
||||
"prov": [],
|
||||
"orig": "HTMLDocumentBackendImagesReferenced Extracts images as references",
|
||||
"text": "HTMLDocumentBackendImagesReferenced Extracts images as references",
|
||||
"enumerated": true,
|
||||
"marker": ""
|
||||
}
|
||||
],
|
||||
"pictures": [
|
||||
{
|
||||
"self_ref": "#/pictures/0",
|
||||
"parent": {
|
||||
"$ref": "#/texts/0"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "picture",
|
||||
"prov": [],
|
||||
"captions": [
|
||||
{
|
||||
"$ref": "#/texts/1"
|
||||
}
|
||||
],
|
||||
"references": [],
|
||||
"footnotes": [],
|
||||
"annotations": []
|
||||
},
|
||||
{
|
||||
"self_ref": "#/pictures/1",
|
||||
"parent": {
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "picture",
|
||||
"prov": [],
|
||||
"captions": [
|
||||
{
|
||||
"$ref": "#/texts/6"
|
||||
}
|
||||
],
|
||||
"references": [],
|
||||
"footnotes": [],
|
||||
"annotations": []
|
||||
},
|
||||
{
|
||||
"self_ref": "#/pictures/2",
|
||||
"parent": {
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "picture",
|
||||
"prov": [],
|
||||
"captions": [
|
||||
{
|
||||
"$ref": "#/texts/8"
|
||||
}
|
||||
],
|
||||
"references": [],
|
||||
"footnotes": [],
|
||||
"annotations": []
|
||||
},
|
||||
{
|
||||
"self_ref": "#/pictures/3",
|
||||
"parent": {
|
||||
"$ref": "#/groups/0"
|
||||
},
|
||||
"children": [],
|
||||
"content_layer": "body",
|
||||
"label": "picture",
|
||||
"prov": [],
|
||||
"captions": [
|
||||
{
|
||||
"$ref": "#/texts/10"
|
||||
}
|
||||
],
|
||||
"references": [],
|
||||
"footnotes": [],
|
||||
"annotations": []
|
||||
}
|
||||
],
|
||||
"tables": [],
|
||||
"key_value_items": [],
|
||||
"form_items": [],
|
||||
"pages": {}
|
||||
}
|
32
tests/data/groundtruth/docling_v2/example_09.html.md
vendored
Normal file
32
tests/data/groundtruth/docling_v2/example_09.html.md
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
# Introduction to parsing HTML files with Docling
|
||||
|
||||
Docling
|
||||
|
||||
<!-- image -->
|
||||
|
||||
Docling simplifies document processing, parsing diverse formats — including HTML — and providing seamless integrations with the gen AI ecosystem.
|
||||
|
||||
## Supported file formats
|
||||
|
||||
Docling supports multiple file formats..
|
||||
|
||||
- Advanced PDF understanding
|
||||
PDF
|
||||
|
||||
<!-- image -->
|
||||
- Microsoft Office DOCX
|
||||
DOCX
|
||||
|
||||
<!-- image -->
|
||||
- HTML files (with optional support for images)
|
||||
HTML
|
||||
|
||||
<!-- image -->
|
||||
|
||||
### Three backends for handling HTML files
|
||||
|
||||
Docling has three backends for parsing HTML files:
|
||||
|
||||
1. HTMLDocumentBackend Ignores images
|
||||
2. HTMLDocumentBackendImagesInline Extracts images inline
|
||||
3. HTMLDocumentBackendImagesReferenced Extracts images as references
|
@ -1,458 +1,485 @@
|
||||
item-0 at level 0: unspecified: group _root_
|
||||
item-1 at level 1: section: group header-1
|
||||
item-2 at level 2: section_header: Contents
|
||||
item-3 at level 3: list: group list
|
||||
item-4 at level 4: list_item: (Top)
|
||||
item-5 at level 4: list_item: 1 Etymology
|
||||
item-6 at level 5: list: group list
|
||||
item-7 at level 4: list_item: 2 Taxonomy
|
||||
item-3 at level 3: text: move to sidebar
|
||||
item-4 at level 3: text: hide
|
||||
item-5 at level 3: list: group list
|
||||
item-6 at level 4: list_item: (Top)
|
||||
item-7 at level 4: list_item: 1 Etymology
|
||||
item-8 at level 5: list: group list
|
||||
item-9 at level 4: list_item: 3 Morphology
|
||||
item-9 at level 4: list_item: 2 Taxonomy
|
||||
item-10 at level 5: list: group list
|
||||
item-11 at level 4: list_item: 4 Distribution and habitat
|
||||
item-11 at level 4: list_item: 3 Morphology
|
||||
item-12 at level 5: list: group list
|
||||
item-13 at level 4: list_item: 5 Behaviour Toggle Behaviour subsection
|
||||
item-13 at level 4: list_item: 4 Distribution and habitat
|
||||
item-14 at level 5: list: group list
|
||||
item-15 at level 6: list_item: 5.1 Feeding
|
||||
item-16 at level 7: list: group list
|
||||
item-17 at level 6: list_item: 5.2 Breeding
|
||||
item-15 at level 4: list_item: 5 Behaviour Toggle Behaviour subsection
|
||||
item-16 at level 5: list: group list
|
||||
item-17 at level 6: list_item: 5.1 Feeding
|
||||
item-18 at level 7: list: group list
|
||||
item-19 at level 6: list_item: 5.3 Communication
|
||||
item-19 at level 6: list_item: 5.2 Breeding
|
||||
item-20 at level 7: list: group list
|
||||
item-21 at level 6: list_item: 5.4 Predators
|
||||
item-21 at level 6: list_item: 5.3 Communication
|
||||
item-22 at level 7: list: group list
|
||||
item-23 at level 4: list_item: 6 Relationship with humans Toggle Relationship with humans subsection
|
||||
item-24 at level 5: list: group list
|
||||
item-25 at level 6: list_item: 6.1 Hunting
|
||||
item-26 at level 7: list: group list
|
||||
item-27 at level 6: list_item: 6.2 Domestication
|
||||
item-23 at level 6: list_item: 5.4 Predators
|
||||
item-24 at level 7: list: group list
|
||||
item-25 at level 4: list_item: 6 Relationship with humans Toggle Relationship with humans subsection
|
||||
item-26 at level 5: list: group list
|
||||
item-27 at level 6: list_item: 6.1 Hunting
|
||||
item-28 at level 7: list: group list
|
||||
item-29 at level 6: list_item: 6.3 Heraldry
|
||||
item-29 at level 6: list_item: 6.2 Domestication
|
||||
item-30 at level 7: list: group list
|
||||
item-31 at level 6: list_item: 6.4 Cultural references
|
||||
item-31 at level 6: list_item: 6.3 Heraldry
|
||||
item-32 at level 7: list: group list
|
||||
item-33 at level 4: list_item: 7 See also
|
||||
item-34 at level 5: list: group list
|
||||
item-35 at level 4: list_item: 8 Notes Toggle Notes subsection
|
||||
item-33 at level 6: list_item: 6.4 Cultural references
|
||||
item-34 at level 7: list: group list
|
||||
item-35 at level 4: list_item: 7 See also
|
||||
item-36 at level 5: list: group list
|
||||
item-37 at level 6: list_item: 8.1 Citations
|
||||
item-38 at level 7: list: group list
|
||||
item-39 at level 6: list_item: 8.2 Sources
|
||||
item-37 at level 4: list_item: 8 Notes Toggle Notes subsection
|
||||
item-38 at level 5: list: group list
|
||||
item-39 at level 6: list_item: 8.1 Citations
|
||||
item-40 at level 7: list: group list
|
||||
item-41 at level 4: list_item: 9 External links
|
||||
item-42 at level 5: list: group list
|
||||
item-43 at level 1: title: Duck
|
||||
item-44 at level 2: list: group list
|
||||
item-45 at level 3: list_item: Acèh
|
||||
item-46 at level 3: list_item: Afrikaans
|
||||
item-47 at level 3: list_item: Alemannisch
|
||||
item-48 at level 3: list_item: አማርኛ
|
||||
item-49 at level 3: list_item: Ænglisc
|
||||
item-50 at level 3: list_item: العربية
|
||||
item-51 at level 3: list_item: Aragonés
|
||||
item-52 at level 3: list_item: ܐܪܡܝܐ
|
||||
item-53 at level 3: list_item: Armãneashti
|
||||
item-54 at level 3: list_item: Asturianu
|
||||
item-55 at level 3: list_item: Atikamekw
|
||||
item-56 at level 3: list_item: Авар
|
||||
item-57 at level 3: list_item: Aymar aru
|
||||
item-58 at level 3: list_item: تۆرکجه
|
||||
item-59 at level 3: list_item: Basa Bali
|
||||
item-60 at level 3: list_item: বাংলা
|
||||
item-61 at level 3: list_item: 閩南語 / Bân-lâm-gú
|
||||
item-62 at level 3: list_item: Беларуская
|
||||
item-63 at level 3: list_item: Беларуская (тарашкевіца)
|
||||
item-64 at level 3: list_item: Bikol Central
|
||||
item-65 at level 3: list_item: Български
|
||||
item-66 at level 3: list_item: Brezhoneg
|
||||
item-67 at level 3: list_item: Буряад
|
||||
item-68 at level 3: list_item: Català
|
||||
item-69 at level 3: list_item: Чӑвашла
|
||||
item-70 at level 3: list_item: Čeština
|
||||
item-71 at level 3: list_item: ChiShona
|
||||
item-72 at level 3: list_item: Cymraeg
|
||||
item-73 at level 3: list_item: Dagbanli
|
||||
item-74 at level 3: list_item: Dansk
|
||||
item-75 at level 3: list_item: Deitsch
|
||||
item-76 at level 3: list_item: Deutsch
|
||||
item-77 at level 3: list_item: डोटेली
|
||||
item-78 at level 3: list_item: Ελληνικά
|
||||
item-79 at level 3: list_item: Emiliàn e rumagnòl
|
||||
item-80 at level 3: list_item: Español
|
||||
item-81 at level 3: list_item: Esperanto
|
||||
item-82 at level 3: list_item: Euskara
|
||||
item-83 at level 3: list_item: فارسی
|
||||
item-84 at level 3: list_item: Français
|
||||
item-85 at level 3: list_item: Gaeilge
|
||||
item-86 at level 3: list_item: Galego
|
||||
item-87 at level 3: list_item: ГӀалгӀай
|
||||
item-88 at level 3: list_item: 贛語
|
||||
item-89 at level 3: list_item: گیلکی
|
||||
item-90 at level 3: list_item: 𐌲𐌿𐍄𐌹𐍃𐌺
|
||||
item-91 at level 3: list_item: गोंयची कोंकणी / Gõychi Konknni
|
||||
item-92 at level 3: list_item: 客家語 / Hak-kâ-ngî
|
||||
item-93 at level 3: list_item: 한국어
|
||||
item-94 at level 3: list_item: Hausa
|
||||
item-95 at level 3: list_item: Հայերեն
|
||||
item-96 at level 3: list_item: हिन्दी
|
||||
item-97 at level 3: list_item: Hrvatski
|
||||
item-98 at level 3: list_item: Ido
|
||||
item-99 at level 3: list_item: Bahasa Indonesia
|
||||
item-100 at level 3: list_item: Iñupiatun
|
||||
item-101 at level 3: list_item: Íslenska
|
||||
item-102 at level 3: list_item: Italiano
|
||||
item-103 at level 3: list_item: עברית
|
||||
item-104 at level 3: list_item: Jawa
|
||||
item-105 at level 3: list_item: ಕನ್ನಡ
|
||||
item-106 at level 3: list_item: Kapampangan
|
||||
item-107 at level 3: list_item: ქართული
|
||||
item-108 at level 3: list_item: कॉशुर / کٲشُر
|
||||
item-109 at level 3: list_item: Қазақша
|
||||
item-110 at level 3: list_item: Ikirundi
|
||||
item-111 at level 3: list_item: Kongo
|
||||
item-112 at level 3: list_item: Kreyòl ayisyen
|
||||
item-113 at level 3: list_item: Кырык мары
|
||||
item-114 at level 3: list_item: ລາວ
|
||||
item-115 at level 3: list_item: Latina
|
||||
item-116 at level 3: list_item: Latviešu
|
||||
item-117 at level 3: list_item: Lietuvių
|
||||
item-118 at level 3: list_item: Li Niha
|
||||
item-119 at level 3: list_item: Ligure
|
||||
item-120 at level 3: list_item: Limburgs
|
||||
item-121 at level 3: list_item: Lingála
|
||||
item-122 at level 3: list_item: Malagasy
|
||||
item-123 at level 3: list_item: മലയാളം
|
||||
item-124 at level 3: list_item: मराठी
|
||||
item-125 at level 3: list_item: مازِرونی
|
||||
item-126 at level 3: list_item: Bahasa Melayu
|
||||
item-127 at level 3: list_item: ꯃꯤꯇꯩ ꯂꯣꯟ
|
||||
item-128 at level 3: list_item: 閩東語 / Mìng-dĕ̤ng-ngṳ̄
|
||||
item-129 at level 3: list_item: Мокшень
|
||||
item-130 at level 3: list_item: Монгол
|
||||
item-131 at level 3: list_item: မြန်မာဘာသာ
|
||||
item-132 at level 3: list_item: Nederlands
|
||||
item-133 at level 3: list_item: Nedersaksies
|
||||
item-134 at level 3: list_item: नेपाली
|
||||
item-135 at level 3: list_item: नेपाल भाषा
|
||||
item-136 at level 3: list_item: 日本語
|
||||
item-137 at level 3: list_item: Нохчийн
|
||||
item-138 at level 3: list_item: Norsk nynorsk
|
||||
item-139 at level 3: list_item: Occitan
|
||||
item-140 at level 3: list_item: Oromoo
|
||||
item-141 at level 3: list_item: ਪੰਜਾਬੀ
|
||||
item-142 at level 3: list_item: Picard
|
||||
item-143 at level 3: list_item: Plattdüütsch
|
||||
item-144 at level 3: list_item: Polski
|
||||
item-145 at level 3: list_item: Português
|
||||
item-146 at level 3: list_item: Qırımtatarca
|
||||
item-147 at level 3: list_item: Română
|
||||
item-148 at level 3: list_item: Русский
|
||||
item-149 at level 3: list_item: Саха тыла
|
||||
item-150 at level 3: list_item: ᱥᱟᱱᱛᱟᱲᱤ
|
||||
item-151 at level 3: list_item: Sardu
|
||||
item-152 at level 3: list_item: Scots
|
||||
item-153 at level 3: list_item: Seeltersk
|
||||
item-154 at level 3: list_item: Shqip
|
||||
item-155 at level 3: list_item: Sicilianu
|
||||
item-156 at level 3: list_item: සිංහල
|
||||
item-157 at level 3: list_item: Simple English
|
||||
item-158 at level 3: list_item: سنڌي
|
||||
item-159 at level 3: list_item: کوردی
|
||||
item-160 at level 3: list_item: Српски / srpski
|
||||
item-161 at level 3: list_item: Srpskohrvatski / српскохрватски
|
||||
item-162 at level 3: list_item: Sunda
|
||||
item-163 at level 3: list_item: Svenska
|
||||
item-164 at level 3: list_item: Tagalog
|
||||
item-165 at level 3: list_item: தமிழ்
|
||||
item-166 at level 3: list_item: Taqbaylit
|
||||
item-167 at level 3: list_item: Татарча / tatarça
|
||||
item-168 at level 3: list_item: ไทย
|
||||
item-169 at level 3: list_item: Türkçe
|
||||
item-170 at level 3: list_item: Українська
|
||||
item-171 at level 3: list_item: ئۇيغۇرچە / Uyghurche
|
||||
item-172 at level 3: list_item: Vahcuengh
|
||||
item-173 at level 3: list_item: Tiếng Việt
|
||||
item-174 at level 3: list_item: Walon
|
||||
item-175 at level 3: list_item: 文言
|
||||
item-176 at level 3: list_item: Winaray
|
||||
item-177 at level 3: list_item: 吴语
|
||||
item-178 at level 3: list_item: 粵語
|
||||
item-179 at level 3: list_item: Žemaitėška
|
||||
item-180 at level 3: list_item: 中文
|
||||
item-181 at level 2: list: group list
|
||||
item-182 at level 3: list_item: Article
|
||||
item-183 at level 3: list_item: Talk
|
||||
item-184 at level 2: list: group list
|
||||
item-185 at level 2: list: group list
|
||||
item-186 at level 3: list_item: Read
|
||||
item-187 at level 3: list_item: View source
|
||||
item-188 at level 3: list_item: View history
|
||||
item-189 at level 2: text: Tools
|
||||
item-190 at level 2: text: Actions
|
||||
item-41 at level 6: list_item: 8.2 Sources
|
||||
item-42 at level 7: list: group list
|
||||
item-43 at level 4: list_item: 9 External links
|
||||
item-44 at level 5: list: group list
|
||||
item-45 at level 3: text: Toggle the table of contents
|
||||
item-46 at level 1: title: Duck
|
||||
item-47 at level 2: text: 136 languages
|
||||
item-48 at level 2: list: group list
|
||||
item-49 at level 3: list_item: Acèh
|
||||
item-50 at level 3: list_item: Afrikaans
|
||||
item-51 at level 3: list_item: Alemannisch
|
||||
item-52 at level 3: list_item: አማርኛ
|
||||
item-53 at level 3: list_item: Ænglisc
|
||||
item-54 at level 3: list_item: العربية
|
||||
item-55 at level 3: list_item: Aragonés
|
||||
item-56 at level 3: list_item: ܐܪܡܝܐ
|
||||
item-57 at level 3: list_item: Armãneashti
|
||||
item-58 at level 3: list_item: Asturianu
|
||||
item-59 at level 3: list_item: Atikamekw
|
||||
item-60 at level 3: list_item: Авар
|
||||
item-61 at level 3: list_item: Aymar aru
|
||||
item-62 at level 3: list_item: تۆرکجه
|
||||
item-63 at level 3: list_item: Basa Bali
|
||||
item-64 at level 3: list_item: বাংলা
|
||||
item-65 at level 3: list_item: 閩南語 / Bân-lâm-gú
|
||||
item-66 at level 3: list_item: Беларуская
|
||||
item-67 at level 3: list_item: Беларуская (тарашкевіца)
|
||||
item-68 at level 3: list_item: Bikol Central
|
||||
item-69 at level 3: list_item: Български
|
||||
item-70 at level 3: list_item: Brezhoneg
|
||||
item-71 at level 3: list_item: Буряад
|
||||
item-72 at level 3: list_item: Català
|
||||
item-73 at level 3: list_item: Чӑвашла
|
||||
item-74 at level 3: list_item: Čeština
|
||||
item-75 at level 3: list_item: ChiShona
|
||||
item-76 at level 3: list_item: Cymraeg
|
||||
item-77 at level 3: list_item: Dagbanli
|
||||
item-78 at level 3: list_item: Dansk
|
||||
item-79 at level 3: list_item: Deitsch
|
||||
item-80 at level 3: list_item: Deutsch
|
||||
item-81 at level 3: list_item: डोटेली
|
||||
item-82 at level 3: list_item: Ελληνικά
|
||||
item-83 at level 3: list_item: Emiliàn e rumagnòl
|
||||
item-84 at level 3: list_item: Español
|
||||
item-85 at level 3: list_item: Esperanto
|
||||
item-86 at level 3: list_item: Euskara
|
||||
item-87 at level 3: list_item: فارسی
|
||||
item-88 at level 3: list_item: Français
|
||||
item-89 at level 3: list_item: Gaeilge
|
||||
item-90 at level 3: list_item: Galego
|
||||
item-91 at level 3: list_item: ГӀалгӀай
|
||||
item-92 at level 3: list_item: 贛語
|
||||
item-93 at level 3: list_item: گیلکی
|
||||
item-94 at level 3: list_item: 𐌲𐌿𐍄𐌹𐍃𐌺
|
||||
item-95 at level 3: list_item: गोंयची कोंकणी / Gõychi Konknni
|
||||
item-96 at level 3: list_item: 客家語 / Hak-kâ-ngî
|
||||
item-97 at level 3: list_item: 한국어
|
||||
item-98 at level 3: list_item: Hausa
|
||||
item-99 at level 3: list_item: Հայերեն
|
||||
item-100 at level 3: list_item: हिन्दी
|
||||
item-101 at level 3: list_item: Hrvatski
|
||||
item-102 at level 3: list_item: Ido
|
||||
item-103 at level 3: list_item: Bahasa Indonesia
|
||||
item-104 at level 3: list_item: Iñupiatun
|
||||
item-105 at level 3: list_item: Íslenska
|
||||
item-106 at level 3: list_item: Italiano
|
||||
item-107 at level 3: list_item: עברית
|
||||
item-108 at level 3: list_item: Jawa
|
||||
item-109 at level 3: list_item: ಕನ್ನಡ
|
||||
item-110 at level 3: list_item: Kapampangan
|
||||
item-111 at level 3: list_item: ქართული
|
||||
item-112 at level 3: list_item: कॉशुर / کٲشُر
|
||||
item-113 at level 3: list_item: Қазақша
|
||||
item-114 at level 3: list_item: Ikirundi
|
||||
item-115 at level 3: list_item: Kongo
|
||||
item-116 at level 3: list_item: Kreyòl ayisyen
|
||||
item-117 at level 3: list_item: Кырык мары
|
||||
item-118 at level 3: list_item: ລາວ
|
||||
item-119 at level 3: list_item: Latina
|
||||
item-120 at level 3: list_item: Latviešu
|
||||
item-121 at level 3: list_item: Lietuvių
|
||||
item-122 at level 3: list_item: Li Niha
|
||||
item-123 at level 3: list_item: Ligure
|
||||
item-124 at level 3: list_item: Limburgs
|
||||
item-125 at level 3: list_item: Lingála
|
||||
item-126 at level 3: list_item: Malagasy
|
||||
item-127 at level 3: list_item: മലയാളം
|
||||
item-128 at level 3: list_item: मराठी
|
||||
item-129 at level 3: list_item: مازِرونی
|
||||
item-130 at level 3: list_item: Bahasa Melayu
|
||||
item-131 at level 3: list_item: ꯃꯤꯇꯩ ꯂꯣꯟ
|
||||
item-132 at level 3: list_item: 閩東語 / Mìng-dĕ̤ng-ngṳ̄
|
||||
item-133 at level 3: list_item: Мокшень
|
||||
item-134 at level 3: list_item: Монгол
|
||||
item-135 at level 3: list_item: မြန်မာဘာသာ
|
||||
item-136 at level 3: list_item: Nederlands
|
||||
item-137 at level 3: list_item: Nedersaksies
|
||||
item-138 at level 3: list_item: नेपाली
|
||||
item-139 at level 3: list_item: नेपाल भाषा
|
||||
item-140 at level 3: list_item: 日本語
|
||||
item-141 at level 3: list_item: Нохчийн
|
||||
item-142 at level 3: list_item: Norsk nynorsk
|
||||
item-143 at level 3: list_item: Occitan
|
||||
item-144 at level 3: list_item: Oromoo
|
||||
item-145 at level 3: list_item: ਪੰਜਾਬੀ
|
||||
item-146 at level 3: list_item: Picard
|
||||
item-147 at level 3: list_item: Plattdüütsch
|
||||
item-148 at level 3: list_item: Polski
|
||||
item-149 at level 3: list_item: Português
|
||||
item-150 at level 3: list_item: Qırımtatarca
|
||||
item-151 at level 3: list_item: Română
|
||||
item-152 at level 3: list_item: Русский
|
||||
item-153 at level 3: list_item: Саха тыла
|
||||
item-154 at level 3: list_item: ᱥᱟᱱᱛᱟᱲᱤ
|
||||
item-155 at level 3: list_item: Sardu
|
||||
item-156 at level 3: list_item: Scots
|
||||
item-157 at level 3: list_item: Seeltersk
|
||||
item-158 at level 3: list_item: Shqip
|
||||
item-159 at level 3: list_item: Sicilianu
|
||||
item-160 at level 3: list_item: සිංහල
|
||||
item-161 at level 3: list_item: Simple English
|
||||
item-162 at level 3: list_item: سنڌي
|
||||
item-163 at level 3: list_item: کوردی
|
||||
item-164 at level 3: list_item: Српски / srpski
|
||||
item-165 at level 3: list_item: Srpskohrvatski / српскохрватски
|
||||
item-166 at level 3: list_item: Sunda
|
||||
item-167 at level 3: list_item: Svenska
|
||||
item-168 at level 3: list_item: Tagalog
|
||||
item-169 at level 3: list_item: தமிழ்
|
||||
item-170 at level 3: list_item: Taqbaylit
|
||||
item-171 at level 3: list_item: Татарча / tatarça
|
||||
item-172 at level 3: list_item: ไทย
|
||||
item-173 at level 3: list_item: Türkçe
|
||||
item-174 at level 3: list_item: Українська
|
||||
item-175 at level 3: list_item: ئۇيغۇرچە / Uyghurche
|
||||
item-176 at level 3: list_item: Vahcuengh
|
||||
item-177 at level 3: list_item: Tiếng Việt
|
||||
item-178 at level 3: list_item: Walon
|
||||
item-179 at level 3: list_item: 文言
|
||||
item-180 at level 3: list_item: Winaray
|
||||
item-181 at level 3: list_item: 吴语
|
||||
item-182 at level 3: list_item: 粵語
|
||||
item-183 at level 3: list_item: Žemaitėška
|
||||
item-184 at level 3: list_item: 中文
|
||||
item-185 at level 2: text: Edit links
|
||||
item-186 at level 2: list: group list
|
||||
item-187 at level 3: list_item: Article
|
||||
item-188 at level 3: list_item: Talk
|
||||
item-189 at level 2: text: English
|
||||
item-190 at level 2: list: group list
|
||||
item-191 at level 2: list: group list
|
||||
item-192 at level 3: list_item: Read
|
||||
item-193 at level 3: list_item: View source
|
||||
item-194 at level 3: list_item: View history
|
||||
item-195 at level 2: text: General
|
||||
item-196 at level 2: list: group list
|
||||
item-197 at level 3: list_item: What links here
|
||||
item-198 at level 3: list_item: Related changes
|
||||
item-199 at level 3: list_item: Upload file
|
||||
item-200 at level 3: list_item: Special pages
|
||||
item-201 at level 3: list_item: Permanent link
|
||||
item-202 at level 3: list_item: Page information
|
||||
item-203 at level 3: list_item: Cite this page
|
||||
item-204 at level 3: list_item: Get shortened URL
|
||||
item-205 at level 3: list_item: Download QR code
|
||||
item-206 at level 3: list_item: Wikidata item
|
||||
item-207 at level 2: text: Print/export
|
||||
item-208 at level 2: list: group list
|
||||
item-209 at level 3: list_item: Download as PDF
|
||||
item-210 at level 3: list_item: Printable version
|
||||
item-211 at level 2: text: In other projects
|
||||
item-212 at level 2: list: group list
|
||||
item-213 at level 3: list_item: Wikimedia Commons
|
||||
item-214 at level 3: list_item: Wikiquote
|
||||
item-215 at level 2: text: Appearance
|
||||
item-216 at level 2: picture
|
||||
item-217 at level 2: text: From Wikipedia, the free encyclopedia
|
||||
item-218 at level 2: text: Common name for many species of bird
|
||||
item-219 at level 2: text: This article is about the bird. ... as a food, see . For other uses, see .
|
||||
item-220 at level 2: text: "Duckling" redirects here. For other uses, see .
|
||||
item-221 at level 2: table with [13x2]
|
||||
item-222 at level 2: text: Duck is the common name for nume ... und in both fresh water and sea water.
|
||||
item-223 at level 2: text: Ducks are sometimes confused wit ... divers, grebes, gallinules and coots.
|
||||
item-224 at level 2: section_header: Etymology
|
||||
item-225 at level 3: text: The word duck comes from Old Eng ... h duiken and German tauchen 'to dive'.
|
||||
item-226 at level 3: picture
|
||||
item-226 at level 4: caption: Pacific black duck displaying the characteristic upending "duck"
|
||||
item-227 at level 3: text: This word replaced Old English e ... nskrit ātí 'water bird', among others.
|
||||
item-228 at level 3: text: A duckling is a young duck in do ... , is sometimes labelled as a duckling.
|
||||
item-229 at level 3: text: A male is called a drake and the ... a duck, or in ornithology a hen.[3][4]
|
||||
item-230 at level 3: picture
|
||||
item-230 at level 4: caption: Male mallard.
|
||||
item-231 at level 3: picture
|
||||
item-231 at level 4: caption: Wood ducks.
|
||||
item-232 at level 2: section_header: Taxonomy
|
||||
item-233 at level 3: text: All ducks belong to the biologic ... ationships between various species.[9]
|
||||
item-234 at level 3: picture
|
||||
item-234 at level 4: caption: Mallard landing in approach
|
||||
item-235 at level 3: text: In most modern classifications, ... all size and stiff, upright tails.[14]
|
||||
item-236 at level 3: text: A number of other species called ... shelducks in the tribe Tadornini.[15]
|
||||
item-237 at level 2: section_header: Morphology
|
||||
item-238 at level 3: picture
|
||||
item-238 at level 4: caption: Male Mandarin duck
|
||||
item-239 at level 3: text: The overall body plan of ducks i ... is moult typically precedes migration.
|
||||
item-240 at level 3: text: The drakes of northern species o ... rkscrew shaped vagina to prevent rape.
|
||||
item-241 at level 2: section_header: Distribution and habitat
|
||||
item-242 at level 3: picture
|
||||
item-242 at level 4: caption: Flying steamer ducks in Ushuaia, Argentina
|
||||
item-243 at level 3: text: Ducks have a cosmopolitan distri ... endemic to such far-flung islands.[21]
|
||||
item-195 at level 2: text: Tools
|
||||
item-196 at level 2: text: Tools
|
||||
item-197 at level 2: text: move to sidebar
|
||||
item-198 at level 2: text: hide
|
||||
item-199 at level 2: text: Actions
|
||||
item-200 at level 2: list: group list
|
||||
item-201 at level 3: list_item: Read
|
||||
item-202 at level 3: list_item: View source
|
||||
item-203 at level 3: list_item: View history
|
||||
item-204 at level 2: text: General
|
||||
item-205 at level 2: list: group list
|
||||
item-206 at level 3: list_item: What links here
|
||||
item-207 at level 3: list_item: Related changes
|
||||
item-208 at level 3: list_item: Upload file
|
||||
item-209 at level 3: list_item: Special pages
|
||||
item-210 at level 3: list_item: Permanent link
|
||||
item-211 at level 3: list_item: Page information
|
||||
item-212 at level 3: list_item: Cite this page
|
||||
item-213 at level 3: list_item: Get shortened URL
|
||||
item-214 at level 3: list_item: Download QR code
|
||||
item-215 at level 3: list_item: Wikidata item
|
||||
item-216 at level 2: text: Print/export
|
||||
item-217 at level 2: list: group list
|
||||
item-218 at level 3: list_item: Download as PDF
|
||||
item-219 at level 3: list_item: Printable version
|
||||
item-220 at level 2: text: In other projects
|
||||
item-221 at level 2: list: group list
|
||||
item-222 at level 3: list_item: Wikimedia Commons
|
||||
item-223 at level 3: list_item: Wikiquote
|
||||
item-224 at level 2: text: Appearance
|
||||
item-225 at level 2: text: move to sidebar
|
||||
item-226 at level 2: text: hide
|
||||
item-227 at level 2: text: From Wikipedia, the free encyclopedia
|
||||
item-228 at level 2: text: (Redirected from Duckling)
|
||||
item-229 at level 2: text: Common name for many species of bird
|
||||
item-230 at level 2: text: This article is about the bird. ... other uses, see Duck (disambiguation).
|
||||
item-231 at level 2: text: "Duckling" redirects here. For other uses, see Duckling (disambiguation).
|
||||
item-232 at level 2: picture
|
||||
item-233 at level 2: picture
|
||||
item-234 at level 2: table with [13x2]
|
||||
item-235 at level 2: text: Duck is the common name for nume ... und in both fresh water and sea water.
|
||||
item-236 at level 2: text: Ducks are sometimes confused wit ... divers, grebes, gallinules and coots.
|
||||
item-237 at level 2: section_header: Etymology
|
||||
item-238 at level 3: text: The word duck comes from Old Eng ... h duiken and German tauchen 'to dive'.
|
||||
item-239 at level 3: picture
|
||||
item-239 at level 4: caption: Pacific black duck displaying the characteristic upending "duck"
|
||||
item-240 at level 3: text: This word replaced Old English e ... nskrit ātí 'water bird', among others.
|
||||
item-241 at level 3: text: A duckling is a young duck in do ... , is sometimes labelled as a duckling.
|
||||
item-242 at level 3: text: A male is called a drake and the ... a duck, or in ornithology a hen.[3][4]
|
||||
item-243 at level 3: picture
|
||||
item-243 at level 4: caption: Male mallard.
|
||||
item-244 at level 3: picture
|
||||
item-244 at level 4: caption: Female mallard in Cornwall, England
|
||||
item-245 at level 3: text: Some duck species, mainly those ... t form after localised heavy rain.[23]
|
||||
item-246 at level 2: section_header: Behaviour
|
||||
item-247 at level 3: section_header: Feeding
|
||||
item-248 at level 4: picture
|
||||
item-248 at level 5: caption: Pecten along the bill
|
||||
item-249 at level 4: picture
|
||||
item-249 at level 5: caption: Mallard duckling preening
|
||||
item-250 at level 4: text: Ducks eat food sources such as g ... amphibians, worms, and small molluscs.
|
||||
item-251 at level 4: text: Dabbling ducks feed on the surfa ... thers and to hold slippery food items.
|
||||
item-252 at level 4: text: Diving ducks and sea ducks forag ... ave more difficulty taking off to fly.
|
||||
item-253 at level 4: text: A few specialized species such a ... apted to catch and swallow large fish.
|
||||
item-254 at level 4: text: The others have the characterist ... e nostrils come out through hard horn.
|
||||
item-255 at level 4: text: The Guardian published an articl ... the ducks and pollutes waterways.[25]
|
||||
item-256 at level 3: section_header: Breeding
|
||||
item-257 at level 4: picture
|
||||
item-257 at level 5: caption: A Muscovy duckling
|
||||
item-258 at level 4: text: Ducks generally only have one pa ... st and led her ducklings to water.[28]
|
||||
item-259 at level 3: section_header: Communication
|
||||
item-260 at level 4: text: Female mallard ducks (as well as ... laying calls or quieter contact calls.
|
||||
item-261 at level 4: text: A common urban legend claims tha ... annel television show MythBusters.[32]
|
||||
item-262 at level 3: section_header: Predators
|
||||
item-263 at level 4: picture
|
||||
item-263 at level 5: caption: Ringed teal
|
||||
item-264 at level 4: text: Ducks have many predators. Duckl ... or large birds, such as hawks or owls.
|
||||
item-265 at level 4: text: Adult ducks are fast fliers, but ... its speed and strength to catch ducks.
|
||||
item-266 at level 2: section_header: Relationship with humans
|
||||
item-267 at level 3: section_header: Hunting
|
||||
item-268 at level 4: text: Humans have hunted ducks since p ... evidence of this is uncommon.[35][42]
|
||||
item-269 at level 4: text: In many areas, wild ducks (inclu ... inated by pollutants such as PCBs.[44]
|
||||
item-270 at level 3: section_header: Domestication
|
||||
item-271 at level 4: picture
|
||||
item-271 at level 5: caption: Indian Runner ducks, a common breed of domestic ducks
|
||||
item-272 at level 4: text: Ducks have many economic uses, b ... it weighs less than 1 kg (2.2 lb).[48]
|
||||
item-273 at level 3: section_header: Heraldry
|
||||
item-274 at level 4: picture
|
||||
item-274 at level 5: caption: Three black-colored ducks in the coat of arms of Maaninka[49]
|
||||
item-275 at level 4: text: Ducks appear on several coats of ... the coat of arms of Föglö (Åland).[51]
|
||||
item-276 at level 3: section_header: Cultural references
|
||||
item-277 at level 4: text: In 2002, psychologist Richard Wi ... 54] and was made into a movie in 1986.
|
||||
item-278 at level 4: text: The 1992 Disney film The Mighty ... Ducks minor league baseball team.[55]
|
||||
item-279 at level 2: section_header: See also
|
||||
item-280 at level 3: list: group list
|
||||
item-281 at level 4: list_item: Birds portal
|
||||
item-282 at level 3: list: group list
|
||||
item-283 at level 4: list_item: Domestic duck
|
||||
item-284 at level 4: list_item: Duck as food
|
||||
item-285 at level 4: list_item: Duck test
|
||||
item-286 at level 4: list_item: Duck breeds
|
||||
item-287 at level 4: list_item: Fictional ducks
|
||||
item-288 at level 4: list_item: Rubber duck
|
||||
item-289 at level 2: section_header: Notes
|
||||
item-290 at level 3: section_header: Citations
|
||||
item-291 at level 4: list: group ordered list
|
||||
item-292 at level 5: list_item: ^ "Duckling". The American Herit ... n Company. 2006. Retrieved 2015-05-22.
|
||||
item-293 at level 5: list_item: ^ "Duckling". Kernerman English ... Ltd. 2000–2006. Retrieved 2015-05-22.
|
||||
item-294 at level 5: list_item: ^ Dohner, Janet Vorwald (2001). ... University Press. ISBN 978-0300138139.
|
||||
item-295 at level 5: list_item: ^ Visca, Curt; Visca, Kelley (20 ... Publishing Group. ISBN 9780823961566.
|
||||
item-296 at level 5: list_item: ^ a b c d Carboneras 1992, p. 536.
|
||||
item-297 at level 5: list_item: ^ Livezey 1986, pp. 737–738.
|
||||
item-298 at level 5: list_item: ^ Madsen, McHugh & de Kloet 1988, p. 452.
|
||||
item-299 at level 5: list_item: ^ Donne-Goussé, Laudet & Hänni 2002, pp. 353–354.
|
||||
item-300 at level 5: list_item: ^ a b c d e f Carboneras 1992, p. 540.
|
||||
item-301 at level 5: list_item: ^ Elphick, Dunning & Sibley 2001, p. 191.
|
||||
item-302 at level 5: list_item: ^ Kear 2005, p. 448.
|
||||
item-303 at level 5: list_item: ^ Kear 2005, p. 622–623.
|
||||
item-304 at level 5: list_item: ^ Kear 2005, p. 686.
|
||||
item-305 at level 5: list_item: ^ Elphick, Dunning & Sibley 2001, p. 193.
|
||||
item-306 at level 5: list_item: ^ a b c d e f g Carboneras 1992, p. 537.
|
||||
item-307 at level 5: list_item: ^ American Ornithologists' Union 1998, p. xix.
|
||||
item-308 at level 5: list_item: ^ American Ornithologists' Union 1998.
|
||||
item-309 at level 5: list_item: ^ Carboneras 1992, p. 538.
|
||||
item-310 at level 5: list_item: ^ Christidis & Boles 2008, p. 62.
|
||||
item-311 at level 5: list_item: ^ Shirihai 2008, pp. 239, 245.
|
||||
item-312 at level 5: list_item: ^ a b Pratt, Bruner & Berrett 1987, pp. 98–107.
|
||||
item-313 at level 5: list_item: ^ Fitter, Fitter & Hosking 2000, pp. 52–3.
|
||||
item-314 at level 5: list_item: ^ "Pacific Black Duck". www.wiresnr.org. Retrieved 2018-04-27.
|
||||
item-315 at level 5: list_item: ^ Ogden, Evans. "Dabbling Ducks". CWE. Retrieved 2006-11-02.
|
||||
item-316 at level 5: list_item: ^ Karl Mathiesen (16 March 2015) ... Guardian. Retrieved 13 November 2016.
|
||||
item-317 at level 5: list_item: ^ Rohwer, Frank C.; Anderson, Mi ... 4615-6787-5_4. ISBN 978-1-4615-6789-9.
|
||||
item-318 at level 5: list_item: ^ Smith, Cyndi M.; Cooke, Fred; ... 093/condor/102.1.201. hdl:10315/13797.
|
||||
item-319 at level 5: list_item: ^ "If You Find An Orphaned Duckl ... l on 2018-09-23. Retrieved 2018-12-22.
|
||||
item-320 at level 5: list_item: ^ Carver, Heather (2011). The Du ... 9780557901562.[self-published source]
|
||||
item-321 at level 5: list_item: ^ Titlow, Budd (2013-09-03). Bir ... man & Littlefield. ISBN 9780762797707.
|
||||
item-322 at level 5: list_item: ^ Amos, Jonathan (2003-09-08). " ... kers". BBC News. Retrieved 2006-11-02.
|
||||
item-323 at level 5: list_item: ^ "Mythbusters Episode 8". 12 December 2003.
|
||||
item-324 at level 5: list_item: ^ Erlandson 1994, p. 171.
|
||||
item-325 at level 5: list_item: ^ Jeffries 2008, pp. 168, 243.
|
||||
item-326 at level 5: list_item: ^ a b Sued-Badillo 2003, p. 65.
|
||||
item-327 at level 5: list_item: ^ Thorpe 1996, p. 68.
|
||||
item-328 at level 5: list_item: ^ Maisels 1999, p. 42.
|
||||
item-329 at level 5: list_item: ^ Rau 1876, p. 133.
|
||||
item-330 at level 5: list_item: ^ Higman 2012, p. 23.
|
||||
item-331 at level 5: list_item: ^ Hume 2012, p. 53.
|
||||
item-332 at level 5: list_item: ^ Hume 2012, p. 52.
|
||||
item-333 at level 5: list_item: ^ Fieldhouse 2002, p. 167.
|
||||
item-334 at level 5: list_item: ^ Livingston, A. D. (1998-01-01) ... Editions, Limited. ISBN 9781853263774.
|
||||
item-335 at level 5: list_item: ^ "Study plan for waterfowl inju ... on 2022-10-09. Retrieved 2 July 2019.
|
||||
item-336 at level 5: list_item: ^ "FAOSTAT". www.fao.org. Retrieved 2019-10-25.
|
||||
item-337 at level 5: list_item: ^ "Anas platyrhynchos, Domestic ... . Digimorph.org. Retrieved 2012-12-23.
|
||||
item-338 at level 5: list_item: ^ Sy Montgomery. "Mallard; Encyc ... Britannica.com. Retrieved 2012-12-23.
|
||||
item-339 at level 5: list_item: ^ Glenday, Craig (2014). Guinnes ... ited. pp. 135. ISBN 978-1-908843-15-9.
|
||||
item-340 at level 5: list_item: ^ Suomen kunnallisvaakunat (in F ... tto. 1982. p. 147. ISBN 951-773-085-3.
|
||||
item-341 at level 5: list_item: ^ "Lubānas simbolika" (in Latvian). Retrieved September 9, 2021.
|
||||
item-342 at level 5: list_item: ^ "Föglö" (in Swedish). Retrieved September 9, 2021.
|
||||
item-343 at level 5: list_item: ^ Young, Emma. "World's funniest ... w Scientist. Retrieved 7 January 2019.
|
||||
item-344 at level 5: list_item: ^ "Howard the Duck (character)". Grand Comics Database.
|
||||
item-345 at level 5: list_item: ^ Sanderson, Peter; Gilbert, Lau ... luding this bad-tempered talking duck.
|
||||
item-346 at level 5: list_item: ^ "The Duck". University of Oregon Athletics. Retrieved 2022-01-20.
|
||||
item-347 at level 3: section_header: Sources
|
||||
item-348 at level 4: list: group list
|
||||
item-349 at level 5: list_item: American Ornithologists' Union ( ... (PDF) from the original on 2022-10-09.
|
||||
item-350 at level 5: list_item: Carboneras, Carlos (1992). del H ... Lynx Edicions. ISBN 978-84-87334-10-8.
|
||||
item-351 at level 5: list_item: Christidis, Les; Boles, Walter E ... ro Publishing. ISBN 978-0-643-06511-6.
|
||||
item-352 at level 5: list_item: Donne-Goussé, Carole; Laudet, Vi ... /S1055-7903(02)00019-2. PMID 12099792.
|
||||
item-353 at level 5: list_item: Elphick, Chris; Dunning, John B. ... istopher Helm. ISBN 978-0-7136-6250-4.
|
||||
item-354 at level 5: list_item: Erlandson, Jon M. (1994). Early ... usiness Media. ISBN 978-1-4419-3231-0.
|
||||
item-355 at level 5: list_item: Fieldhouse, Paul (2002). Food, F ... ara: ABC-CLIO. ISBN 978-1-61069-412-4.
|
||||
item-356 at level 5: list_item: Fitter, Julian; Fitter, Daniel; ... versity Press. ISBN 978-0-691-10295-5.
|
||||
item-357 at level 5: list_item: Higman, B. W. (2012). How Food M ... Wiley & Sons. ISBN 978-1-4051-8947-7.
|
||||
item-358 at level 5: list_item: Hume, Julian H. (2012). Extinct ... istopher Helm. ISBN 978-1-4729-3744-5.
|
||||
item-359 at level 5: list_item: Jeffries, Richard (2008). Holoce ... Alabama Press. ISBN 978-0-8173-1658-7.
|
||||
item-360 at level 5: list_item: Kear, Janet, ed. (2005). Ducks, ... versity Press. ISBN 978-0-19-861009-0.
|
||||
item-361 at level 5: list_item: Livezey, Bradley C. (October 198 ... (PDF) from the original on 2022-10-09.
|
||||
item-362 at level 5: list_item: Madsen, Cort S.; McHugh, Kevin P ... (PDF) from the original on 2022-10-09.
|
||||
item-363 at level 5: list_item: Maisels, Charles Keith (1999). E ... on: Routledge. ISBN 978-0-415-10975-8.
|
||||
item-364 at level 5: list_item: Pratt, H. Douglas; Bruner, Phill ... University Press. ISBN 0-691-02399-9.
|
||||
item-365 at level 5: list_item: Rau, Charles (1876). Early Man i ... ork: Harper & Brothers. LCCN 05040168.
|
||||
item-366 at level 5: list_item: Shirihai, Hadoram (2008). A Comp ... versity Press. ISBN 978-0-691-13666-0.
|
||||
item-367 at level 5: list_item: Sued-Badillo, Jalil (2003). Auto ... Paris: UNESCO. ISBN 978-92-3-103832-7.
|
||||
item-368 at level 5: list_item: Thorpe, I. J. (1996). The Origin ... rk: Routledge. ISBN 978-0-415-08009-5.
|
||||
item-369 at level 2: section_header: External links
|
||||
item-370 at level 3: list: group list
|
||||
item-371 at level 4: list_item: Definitions from Wiktionary
|
||||
item-372 at level 4: list_item: Media from Commons
|
||||
item-373 at level 4: list_item: Quotations from Wikiquote
|
||||
item-374 at level 4: list_item: Recipes from Wikibooks
|
||||
item-375 at level 4: list_item: Taxa from Wikispecies
|
||||
item-376 at level 4: list_item: Data from Wikidata
|
||||
item-377 at level 3: list: group list
|
||||
item-378 at level 4: list_item: list of books (useful looking abstracts)
|
||||
item-379 at level 4: list_item: Ducks on postage stamps Archived 2013-05-13 at the Wayback Machine
|
||||
item-380 at level 4: list_item: Ducks at a Distance, by Rob Hine ... uide to identification of US waterfowl
|
||||
item-381 at level 3: table with [3x2]
|
||||
item-382 at level 3: picture
|
||||
item-383 at level 3: text: Retrieved from ""
|
||||
item-384 at level 3: text: :
|
||||
item-385 at level 3: list: group list
|
||||
item-386 at level 4: list_item: Ducks
|
||||
item-387 at level 4: list_item: Game birds
|
||||
item-388 at level 4: list_item: Bird common names
|
||||
item-389 at level 3: text: Hidden categories:
|
||||
item-390 at level 3: list: group list
|
||||
item-391 at level 4: list_item: All accuracy disputes
|
||||
item-392 at level 4: list_item: Accuracy disputes from February 2020
|
||||
item-393 at level 4: list_item: CS1 Finnish-language sources (fi)
|
||||
item-394 at level 4: list_item: CS1 Latvian-language sources (lv)
|
||||
item-395 at level 4: list_item: CS1 Swedish-language sources (sv)
|
||||
item-396 at level 4: list_item: Articles with short description
|
||||
item-397 at level 4: list_item: Short description is different from Wikidata
|
||||
item-398 at level 4: list_item: Wikipedia indefinitely move-protected pages
|
||||
item-399 at level 4: list_item: Wikipedia indefinitely semi-protected pages
|
||||
item-400 at level 4: list_item: Articles with 'species' microformats
|
||||
item-401 at level 4: list_item: Articles containing Old English (ca. 450-1100)-language text
|
||||
item-402 at level 4: list_item: Articles containing Dutch-language text
|
||||
item-403 at level 4: list_item: Articles containing German-language text
|
||||
item-404 at level 4: list_item: Articles containing Norwegian-language text
|
||||
item-405 at level 4: list_item: Articles containing Lithuanian-language text
|
||||
item-406 at level 4: list_item: Articles containing Ancient Greek (to 1453)-language text
|
||||
item-407 at level 4: list_item: All articles with self-published sources
|
||||
item-408 at level 4: list_item: Articles with self-published sources from February 2020
|
||||
item-409 at level 4: list_item: All articles with unsourced statements
|
||||
item-410 at level 4: list_item: Articles with unsourced statements from January 2022
|
||||
item-411 at level 4: list_item: CS1: long volume value
|
||||
item-412 at level 4: list_item: Pages using Sister project links with wikidata mismatch
|
||||
item-413 at level 4: list_item: Pages using Sister project links with hidden wikidata
|
||||
item-414 at level 4: list_item: Webarchive template wayback links
|
||||
item-415 at level 4: list_item: Articles with Project Gutenberg links
|
||||
item-416 at level 4: list_item: Articles containing video clips
|
||||
item-417 at level 3: list: group list
|
||||
item-418 at level 4: list_item: This page was last edited on 21 September 2024, at 12:11 (UTC).
|
||||
item-419 at level 4: list_item: Text is available under the Crea ... tion, Inc., a non-profit organization.
|
||||
item-420 at level 3: list: group list
|
||||
item-421 at level 4: list_item: Privacy policy
|
||||
item-422 at level 4: list_item: About Wikipedia
|
||||
item-423 at level 4: list_item: Disclaimers
|
||||
item-424 at level 4: list_item: Contact Wikipedia
|
||||
item-425 at level 4: list_item: Code of Conduct
|
||||
item-426 at level 4: list_item: Developers
|
||||
item-427 at level 4: list_item: Statistics
|
||||
item-428 at level 4: list_item: Cookie statement
|
||||
item-429 at level 4: list_item: Mobile view
|
||||
item-430 at level 3: list: group list
|
||||
item-431 at level 3: list: group list
|
||||
item-432 at level 1: caption: Pacific black duck displaying the characteristic upending "duck"
|
||||
item-433 at level 1: caption: Male mallard.
|
||||
item-434 at level 1: caption: Wood ducks.
|
||||
item-435 at level 1: caption: Mallard landing in approach
|
||||
item-436 at level 1: caption: Male Mandarin duck
|
||||
item-437 at level 1: caption: Flying steamer ducks in Ushuaia, Argentina
|
||||
item-438 at level 1: caption: Female mallard in Cornwall, England
|
||||
item-439 at level 1: caption: Pecten along the bill
|
||||
item-440 at level 1: caption: Mallard duckling preening
|
||||
item-441 at level 1: caption: A Muscovy duckling
|
||||
item-442 at level 1: caption: Ringed teal
|
||||
item-443 at level 1: caption: Indian Runner ducks, a common breed of domestic ducks
|
||||
item-444 at level 1: caption: Three black-colored ducks in the coat of arms of Maaninka[49]
|
||||
item-244 at level 4: caption: Wood ducks.
|
||||
item-245 at level 2: section_header: Taxonomy
|
||||
item-246 at level 3: text: All ducks belong to the biologic ... ationships between various species.[9]
|
||||
item-247 at level 3: picture
|
||||
item-247 at level 4: caption: Mallard landing in approach
|
||||
item-248 at level 3: text: In most modern classifications, ... all size and stiff, upright tails.[14]
|
||||
item-249 at level 3: text: A number of other species called ... shelducks in the tribe Tadornini.[15]
|
||||
item-250 at level 2: section_header: Morphology
|
||||
item-251 at level 3: picture
|
||||
item-251 at level 4: caption: Male Mandarin duck
|
||||
item-252 at level 3: text: The overall body plan of ducks i ... is moult typically precedes migration.
|
||||
item-253 at level 3: text: The drakes of northern species o ... rkscrew shaped vagina to prevent rape.
|
||||
item-254 at level 2: section_header: Distribution and habitat
|
||||
item-255 at level 3: text: See also: List of Anseriformes by population
|
||||
item-256 at level 3: picture
|
||||
item-256 at level 4: caption: Flying steamer ducks in Ushuaia, Argentina
|
||||
item-257 at level 3: text: Ducks have a cosmopolitan distri ... endemic to such far-flung islands.[21]
|
||||
item-258 at level 3: picture
|
||||
item-258 at level 4: caption: Female mallard in Cornwall, England
|
||||
item-259 at level 3: text: Some duck species, mainly those ... t form after localised heavy rain.[23]
|
||||
item-260 at level 2: section_header: Behaviour
|
||||
item-261 at level 3: section_header: Feeding
|
||||
item-262 at level 4: picture
|
||||
item-262 at level 5: caption: Pecten along the bill
|
||||
item-263 at level 4: text: Ducks eat food sources such as g ... amphibians, worms, and small molluscs.
|
||||
item-264 at level 4: text: Dabbling ducks feed on the surfa ... thers and to hold slippery food items.
|
||||
item-265 at level 4: text: Diving ducks and sea ducks forag ... ave more difficulty taking off to fly.
|
||||
item-266 at level 4: text: A few specialized species such a ... apted to catch and swallow large fish.
|
||||
item-267 at level 4: text: The others have the characterist ... e nostrils come out through hard horn.
|
||||
item-268 at level 4: text: The Guardian published an articl ... the ducks and pollutes waterways.[25]
|
||||
item-269 at level 3: section_header: Breeding
|
||||
item-270 at level 4: picture
|
||||
item-270 at level 5: caption: A Muscovy duckling
|
||||
item-271 at level 4: text: Ducks generally only have one pa ... st and led her ducklings to water.[28]
|
||||
item-272 at level 3: section_header: Communication
|
||||
item-273 at level 4: text: Female mallard ducks (as well as ... laying calls or quieter contact calls.
|
||||
item-274 at level 4: text: A common urban legend claims tha ... annel television show MythBusters.[32]
|
||||
item-275 at level 3: section_header: Predators
|
||||
item-276 at level 4: picture
|
||||
item-276 at level 5: caption: Ringed teal
|
||||
item-277 at level 4: text: Ducks have many predators. Duckl ... or large birds, such as hawks or owls.
|
||||
item-278 at level 4: text: Adult ducks are fast fliers, but ... its speed and strength to catch ducks.
|
||||
item-279 at level 2: section_header: Relationship with humans
|
||||
item-280 at level 3: section_header: Hunting
|
||||
item-281 at level 4: text: Main article: Waterfowl hunting
|
||||
item-282 at level 4: text: Humans have hunted ducks since p ... evidence of this is uncommon.[35][42]
|
||||
item-283 at level 4: text: In many areas, wild ducks (inclu ... inated by pollutants such as PCBs.[44]
|
||||
item-284 at level 3: section_header: Domestication
|
||||
item-285 at level 4: text: Main article: Domestic duck
|
||||
item-286 at level 4: picture
|
||||
item-286 at level 5: caption: Indian Runner ducks, a common breed of domestic ducks
|
||||
item-287 at level 4: text: Ducks have many economic uses, b ... it weighs less than 1 kg (2.2 lb).[48]
|
||||
item-288 at level 3: section_header: Heraldry
|
||||
item-289 at level 4: picture
|
||||
item-289 at level 5: caption: Three black-colored ducks in the coat of arms of Maaninka[49]
|
||||
item-290 at level 4: text: Ducks appear on several coats of ... the coat of arms of Föglö (Åland).[51]
|
||||
item-291 at level 3: section_header: Cultural references
|
||||
item-292 at level 4: text: In 2002, psychologist Richard Wi ... 54] and was made into a movie in 1986.
|
||||
item-293 at level 4: text: The 1992 Disney film The Mighty ... Ducks minor league baseball team.[55]
|
||||
item-294 at level 2: section_header: See also
|
||||
item-295 at level 3: list: group list
|
||||
item-296 at level 4: list_item: Birds portal
|
||||
item-297 at level 4: picture
|
||||
item-298 at level 3: list: group list
|
||||
item-299 at level 4: list_item: Domestic duck
|
||||
item-300 at level 4: list_item: Duck as food
|
||||
item-301 at level 4: list_item: Duck test
|
||||
item-302 at level 4: list_item: Duck breeds
|
||||
item-303 at level 4: list_item: Fictional ducks
|
||||
item-304 at level 4: list_item: Rubber duck
|
||||
item-305 at level 2: section_header: Notes
|
||||
item-306 at level 3: section_header: Citations
|
||||
item-307 at level 4: list: group ordered list
|
||||
item-308 at level 5: list_item: ^ "Duckling". The American Herit ... n Company. 2006. Retrieved 2015-05-22.
|
||||
item-309 at level 5: list_item: ^ "Duckling". Kernerman English ... Ltd. 2000–2006. Retrieved 2015-05-22.
|
||||
item-310 at level 5: list_item: ^ Dohner, Janet Vorwald (2001). ... University Press. ISBN 978-0300138139.
|
||||
item-311 at level 5: list_item: ^ Visca, Curt; Visca, Kelley (20 ... Publishing Group. ISBN 9780823961566.
|
||||
item-312 at level 5: list_item: ^ a b c d Carboneras 1992, p. 536.
|
||||
item-313 at level 5: list_item: ^ Livezey 1986, pp. 737–738.
|
||||
item-314 at level 5: list_item: ^ Madsen, McHugh & de Kloet 1988, p. 452.
|
||||
item-315 at level 5: list_item: ^ Donne-Goussé, Laudet & Hänni 2002, pp. 353–354.
|
||||
item-316 at level 5: list_item: ^ a b c d e f Carboneras 1992, p. 540.
|
||||
item-317 at level 5: list_item: ^ Elphick, Dunning & Sibley 2001, p. 191.
|
||||
item-318 at level 5: list_item: ^ Kear 2005, p. 448.
|
||||
item-319 at level 5: list_item: ^ Kear 2005, p. 622–623.
|
||||
item-320 at level 5: list_item: ^ Kear 2005, p. 686.
|
||||
item-321 at level 5: list_item: ^ Elphick, Dunning & Sibley 2001, p. 193.
|
||||
item-322 at level 5: list_item: ^ a b c d e f g Carboneras 1992, p. 537.
|
||||
item-323 at level 5: list_item: ^ American Ornithologists' Union 1998, p. xix.
|
||||
item-324 at level 5: list_item: ^ American Ornithologists' Union 1998.
|
||||
item-325 at level 5: list_item: ^ Carboneras 1992, p. 538.
|
||||
item-326 at level 5: list_item: ^ Christidis & Boles 2008, p. 62.
|
||||
item-327 at level 5: list_item: ^ Shirihai 2008, pp. 239, 245.
|
||||
item-328 at level 5: list_item: ^ a b Pratt, Bruner & Berrett 1987, pp. 98–107.
|
||||
item-329 at level 5: list_item: ^ Fitter, Fitter & Hosking 2000, pp. 52–3.
|
||||
item-330 at level 5: list_item: ^ "Pacific Black Duck". www.wiresnr.org. Retrieved 2018-04-27.
|
||||
item-331 at level 5: list_item: ^ Ogden, Evans. "Dabbling Ducks". CWE. Retrieved 2006-11-02.
|
||||
item-332 at level 5: list_item: ^ Karl Mathiesen (16 March 2015) ... Guardian. Retrieved 13 November 2016.
|
||||
item-333 at level 5: list_item: ^ Rohwer, Frank C.; Anderson, Mi ... 4615-6787-5_4. ISBN 978-1-4615-6789-9.
|
||||
item-334 at level 5: list_item: ^ Smith, Cyndi M.; Cooke, Fred; ... 093/condor/102.1.201. hdl:10315/13797.
|
||||
item-335 at level 5: list_item: ^ "If You Find An Orphaned Duckl ... l on 2018-09-23. Retrieved 2018-12-22.
|
||||
item-336 at level 5: list_item: ^ Carver, Heather (2011). The Du ... 9780557901562.[self-published source]
|
||||
item-337 at level 5: list_item: ^ Titlow, Budd (2013-09-03). Bir ... man & Littlefield. ISBN 9780762797707.
|
||||
item-338 at level 5: list_item: ^ Amos, Jonathan (2003-09-08). " ... kers". BBC News. Retrieved 2006-11-02.
|
||||
item-339 at level 5: list_item: ^ "Mythbusters Episode 8". 12 December 2003.
|
||||
item-340 at level 5: list_item: ^ Erlandson 1994, p. 171.
|
||||
item-341 at level 5: list_item: ^ Jeffries 2008, pp. 168, 243.
|
||||
item-342 at level 5: list_item: ^ a b Sued-Badillo 2003, p. 65.
|
||||
item-343 at level 5: list_item: ^ Thorpe 1996, p. 68.
|
||||
item-344 at level 5: list_item: ^ Maisels 1999, p. 42.
|
||||
item-345 at level 5: list_item: ^ Rau 1876, p. 133.
|
||||
item-346 at level 5: list_item: ^ Higman 2012, p. 23.
|
||||
item-347 at level 5: list_item: ^ Hume 2012, p. 53.
|
||||
item-348 at level 5: list_item: ^ Hume 2012, p. 52.
|
||||
item-349 at level 5: list_item: ^ Fieldhouse 2002, p. 167.
|
||||
item-350 at level 5: list_item: ^ Livingston, A. D. (1998-01-01) ... Editions, Limited. ISBN 9781853263774.
|
||||
item-351 at level 5: list_item: ^ "Study plan for waterfowl inju ... on 2022-10-09. Retrieved 2 July 2019.
|
||||
item-352 at level 5: list_item: ^ "FAOSTAT". www.fao.org. Retrieved 2019-10-25.
|
||||
item-353 at level 5: list_item: ^ "Anas platyrhynchos, Domestic ... . Digimorph.org. Retrieved 2012-12-23.
|
||||
item-354 at level 5: list_item: ^ Sy Montgomery. "Mallard; Encyc ... Britannica.com. Retrieved 2012-12-23.
|
||||
item-355 at level 5: list_item: ^ Glenday, Craig (2014). Guinnes ... ited. pp. 135. ISBN 978-1-908843-15-9.
|
||||
item-356 at level 5: list_item: ^ Suomen kunnallisvaakunat (in F ... tto. 1982. p. 147. ISBN 951-773-085-3.
|
||||
item-357 at level 5: list_item: ^ "Lubānas simbolika" (in Latvian). Retrieved September 9, 2021.
|
||||
item-358 at level 5: list_item: ^ "Föglö" (in Swedish). Retrieved September 9, 2021.
|
||||
item-359 at level 5: list_item: ^ Young, Emma. "World's funniest ... w Scientist. Retrieved 7 January 2019.
|
||||
item-360 at level 5: list_item: ^ "Howard the Duck (character)". Grand Comics Database.
|
||||
item-361 at level 5: list_item: ^ Sanderson, Peter; Gilbert, Lau ... luding this bad-tempered talking duck.
|
||||
item-362 at level 5: list_item: ^ "The Duck". University of Oregon Athletics. Retrieved 2022-01-20.
|
||||
item-363 at level 3: section_header: Sources
|
||||
item-364 at level 4: list: group list
|
||||
item-365 at level 5: list_item: American Ornithologists' Union ( ... (PDF) from the original on 2022-10-09.
|
||||
item-366 at level 5: list_item: Carboneras, Carlos (1992). del H ... Lynx Edicions. ISBN 978-84-87334-10-8.
|
||||
item-367 at level 5: list_item: Christidis, Les; Boles, Walter E ... ro Publishing. ISBN 978-0-643-06511-6.
|
||||
item-368 at level 5: list_item: Donne-Goussé, Carole; Laudet, Vi ... /S1055-7903(02)00019-2. PMID 12099792.
|
||||
item-369 at level 5: list_item: Elphick, Chris; Dunning, John B. ... istopher Helm. ISBN 978-0-7136-6250-4.
|
||||
item-370 at level 5: list_item: Erlandson, Jon M. (1994). Early ... usiness Media. ISBN 978-1-4419-3231-0.
|
||||
item-371 at level 5: list_item: Fieldhouse, Paul (2002). Food, F ... ara: ABC-CLIO. ISBN 978-1-61069-412-4.
|
||||
item-372 at level 5: list_item: Fitter, Julian; Fitter, Daniel; ... versity Press. ISBN 978-0-691-10295-5.
|
||||
item-373 at level 5: list_item: Higman, B. W. (2012). How Food M ... Wiley & Sons. ISBN 978-1-4051-8947-7.
|
||||
item-374 at level 5: list_item: Hume, Julian H. (2012). Extinct ... istopher Helm. ISBN 978-1-4729-3744-5.
|
||||
item-375 at level 5: list_item: Jeffries, Richard (2008). Holoce ... Alabama Press. ISBN 978-0-8173-1658-7.
|
||||
item-376 at level 5: list_item: Kear, Janet, ed. (2005). Ducks, ... versity Press. ISBN 978-0-19-861009-0.
|
||||
item-377 at level 5: list_item: Livezey, Bradley C. (October 198 ... (PDF) from the original on 2022-10-09.
|
||||
item-378 at level 5: list_item: Madsen, Cort S.; McHugh, Kevin P ... (PDF) from the original on 2022-10-09.
|
||||
item-379 at level 5: list_item: Maisels, Charles Keith (1999). E ... on: Routledge. ISBN 978-0-415-10975-8.
|
||||
item-380 at level 5: list_item: Pratt, H. Douglas; Bruner, Phill ... University Press. ISBN 0-691-02399-9.
|
||||
item-381 at level 5: list_item: Rau, Charles (1876). Early Man i ... ork: Harper & Brothers. LCCN 05040168.
|
||||
item-382 at level 5: list_item: Shirihai, Hadoram (2008). A Comp ... versity Press. ISBN 978-0-691-13666-0.
|
||||
item-383 at level 5: list_item: Sued-Badillo, Jalil (2003). Auto ... Paris: UNESCO. ISBN 978-92-3-103832-7.
|
||||
item-384 at level 5: list_item: Thorpe, I. J. (1996). The Origin ... rk: Routledge. ISBN 978-0-415-08009-5.
|
||||
item-385 at level 2: section_header: External links
|
||||
item-386 at level 3: text: Duck at Wikipedia's sister projects
|
||||
item-387 at level 3: list: group list
|
||||
item-388 at level 4: list_item: Definitions from Wiktionary
|
||||
item-389 at level 4: picture
|
||||
item-390 at level 4: list_item: Media from Commons
|
||||
item-391 at level 4: picture
|
||||
item-392 at level 4: list_item: Quotations from Wikiquote
|
||||
item-393 at level 4: picture
|
||||
item-394 at level 4: list_item: Recipes from Wikibooks
|
||||
item-395 at level 4: picture
|
||||
item-396 at level 4: list_item: Taxa from Wikispecies
|
||||
item-397 at level 4: picture
|
||||
item-398 at level 4: list_item: Data from Wikidata
|
||||
item-399 at level 4: picture
|
||||
item-400 at level 3: list: group list
|
||||
item-401 at level 4: list_item: list of books (useful looking abstracts)
|
||||
item-402 at level 4: list_item: Ducks on postage stamps Archived 2013-05-13 at the Wayback Machine
|
||||
item-403 at level 4: list_item: Ducks at a Distance, by Rob Hine ... uide to identification of US waterfowl
|
||||
item-404 at level 3: picture
|
||||
item-405 at level 3: table with [3x2]
|
||||
item-406 at level 3: text: Retrieved from "https://en.wikip ... index.php?title=Duck&oldid=1246843351"
|
||||
item-407 at level 3: text: Categories:
|
||||
item-408 at level 3: list: group list
|
||||
item-409 at level 4: list_item: Ducks
|
||||
item-410 at level 4: list_item: Game birds
|
||||
item-411 at level 4: list_item: Bird common names
|
||||
item-412 at level 3: text: Hidden categories:
|
||||
item-413 at level 3: list: group list
|
||||
item-414 at level 4: list_item: All accuracy disputes
|
||||
item-415 at level 4: list_item: Accuracy disputes from February 2020
|
||||
item-416 at level 4: list_item: CS1 Finnish-language sources (fi)
|
||||
item-417 at level 4: list_item: CS1 Latvian-language sources (lv)
|
||||
item-418 at level 4: list_item: CS1 Swedish-language sources (sv)
|
||||
item-419 at level 4: list_item: Articles with short description
|
||||
item-420 at level 4: list_item: Short description is different from Wikidata
|
||||
item-421 at level 4: list_item: Wikipedia indefinitely move-protected pages
|
||||
item-422 at level 4: list_item: Wikipedia indefinitely semi-protected pages
|
||||
item-423 at level 4: list_item: Articles with 'species' microformats
|
||||
item-424 at level 4: list_item: Articles containing Old English (ca. 450-1100)-language text
|
||||
item-425 at level 4: list_item: Articles containing Dutch-language text
|
||||
item-426 at level 4: list_item: Articles containing German-language text
|
||||
item-427 at level 4: list_item: Articles containing Norwegian-language text
|
||||
item-428 at level 4: list_item: Articles containing Lithuanian-language text
|
||||
item-429 at level 4: list_item: Articles containing Ancient Greek (to 1453)-language text
|
||||
item-430 at level 4: list_item: All articles with self-published sources
|
||||
item-431 at level 4: list_item: Articles with self-published sources from February 2020
|
||||
item-432 at level 4: list_item: All articles with unsourced statements
|
||||
item-433 at level 4: list_item: Articles with unsourced statements from January 2022
|
||||
item-434 at level 4: list_item: CS1: long volume value
|
||||
item-435 at level 4: list_item: Pages using Sister project links with wikidata mismatch
|
||||
item-436 at level 4: list_item: Pages using Sister project links with hidden wikidata
|
||||
item-437 at level 4: list_item: Webarchive template wayback links
|
||||
item-438 at level 4: list_item: Articles with Project Gutenberg links
|
||||
item-439 at level 4: list_item: Articles containing video clips
|
||||
item-440 at level 3: list: group list
|
||||
item-441 at level 4: list_item: This page was last edited on 21 September 2024, at 12:11 (UTC).
|
||||
item-442 at level 4: list_item: Text is available under the Crea ... tion, Inc., a non-profit organization.
|
||||
item-443 at level 3: list: group list
|
||||
item-444 at level 4: list_item: Privacy policy
|
||||
item-445 at level 4: list_item: About Wikipedia
|
||||
item-446 at level 4: list_item: Disclaimers
|
||||
item-447 at level 4: list_item: Contact Wikipedia
|
||||
item-448 at level 4: list_item: Code of Conduct
|
||||
item-449 at level 4: list_item: Developers
|
||||
item-450 at level 4: list_item: Statistics
|
||||
item-451 at level 4: list_item: Cookie statement
|
||||
item-452 at level 4: list_item: Mobile view
|
||||
item-453 at level 3: list: group list
|
||||
item-454 at level 4: picture
|
||||
item-454 at level 5: caption: Wikimedia Foundation
|
||||
item-455 at level 4: picture
|
||||
item-455 at level 5: caption: Powered by MediaWiki
|
||||
item-456 at level 3: list: group list
|
||||
item-457 at level 1: caption: Pacific black duck displaying the characteristic upending "duck"
|
||||
item-458 at level 1: caption: Male mallard.
|
||||
item-459 at level 1: caption: Wood ducks.
|
||||
item-460 at level 1: caption: Mallard landing in approach
|
||||
item-461 at level 1: caption: Male Mandarin duck
|
||||
item-462 at level 1: caption: Flying steamer ducks in Ushuaia, Argentina
|
||||
item-463 at level 1: caption: Female mallard in Cornwall, England
|
||||
item-464 at level 1: caption: Pecten along the bill
|
||||
item-465 at level 1: caption: A Muscovy duckling
|
||||
item-466 at level 1: caption: Ringed teal
|
||||
item-467 at level 1: caption: Indian Runner ducks, a common breed of domestic ducks
|
||||
item-468 at level 1: caption: Three black-colored ducks in the coat of arms of Maaninka[49]
|
||||
item-469 at level 1: caption: Wikimedia Foundation
|
||||
item-470 at level 1: caption: Powered by MediaWiki
|
3151
tests/data/groundtruth/docling_v2/wiki_duck.html.json
vendored
3151
tests/data/groundtruth/docling_v2/wiki_duck.html.json
vendored
File diff suppressed because it is too large
Load Diff
181
tests/data/groundtruth/docling_v2/wiki_duck.html.md
vendored
181
tests/data/groundtruth/docling_v2/wiki_duck.html.md
vendored
@ -1,5 +1,9 @@
|
||||
## Contents
|
||||
|
||||
move to sidebar
|
||||
|
||||
hide
|
||||
|
||||
- (Top)
|
||||
- 1 Etymology
|
||||
- 2 Taxonomy
|
||||
@ -21,8 +25,12 @@
|
||||
- 8.2 Sources
|
||||
- 9 External links
|
||||
|
||||
Toggle the table of contents
|
||||
|
||||
# Duck
|
||||
|
||||
136 languages
|
||||
|
||||
- Acèh
|
||||
- Afrikaans
|
||||
- Alemannisch
|
||||
@ -160,15 +168,25 @@
|
||||
- Žemaitėška
|
||||
- 中文
|
||||
|
||||
Edit links
|
||||
|
||||
- Article
|
||||
- Talk
|
||||
|
||||
English
|
||||
|
||||
- Read
|
||||
- View source
|
||||
- View history
|
||||
|
||||
Tools
|
||||
|
||||
Tools
|
||||
|
||||
move to sidebar
|
||||
|
||||
hide
|
||||
|
||||
Actions
|
||||
|
||||
- Read
|
||||
@ -200,15 +218,23 @@ In other projects
|
||||
|
||||
Appearance
|
||||
|
||||
<!-- image -->
|
||||
move to sidebar
|
||||
|
||||
hide
|
||||
|
||||
From Wikipedia, the free encyclopedia
|
||||
|
||||
(Redirected from Duckling)
|
||||
|
||||
Common name for many species of bird
|
||||
|
||||
This article is about the bird. For duck as a food, see . For other uses, see .
|
||||
This article is about the bird. For duck as a food, see Duck as food. For other uses, see Duck (disambiguation).
|
||||
|
||||
"Duckling" redirects here. For other uses, see .
|
||||
"Duckling" redirects here. For other uses, see Duckling (disambiguation).
|
||||
|
||||
<!-- image -->
|
||||
|
||||
<!-- image -->
|
||||
|
||||
| Duck | Duck |
|
||||
|--------------------------------|--------------------------------|
|
||||
@ -275,6 +301,8 @@ The drakes of northern species often have extravagant plumage, but that is moult
|
||||
|
||||
## Distribution and habitat
|
||||
|
||||
See also: List of Anseriformes by population
|
||||
|
||||
Flying steamer ducks in Ushuaia, Argentina
|
||||
|
||||
<!-- image -->
|
||||
@ -295,10 +323,6 @@ Pecten along the bill
|
||||
|
||||
<!-- image -->
|
||||
|
||||
Mallard duckling preening
|
||||
|
||||
<!-- image -->
|
||||
|
||||
Ducks eat food sources such as grasses, aquatic plants, fish, insects, small amphibians, worms, and small molluscs.
|
||||
|
||||
Dabbling ducks feed on the surface of water or on land, or as deep as they can reach by up-ending without completely submerging.[24] Along the edge of the bill, there is a comb-like structure called a pecten. This strains the water squirting from the side of the bill and traps any food. The pecten is also used to preen feathers and to hold slippery food items.
|
||||
@ -339,12 +363,16 @@ Adult ducks are fast fliers, but may be caught on the water by large aquatic pre
|
||||
|
||||
### Hunting
|
||||
|
||||
Main article: Waterfowl hunting
|
||||
|
||||
Humans have hunted ducks since prehistoric times. Excavations of middens in California dating to 7800 – 6400 BP have turned up bones of ducks, including at least one now-extinct flightless species.[33] Ducks were captured in "significant numbers" by Holocene inhabitants of the lower Ohio River valley, suggesting they took advantage of the seasonal bounty provided by migrating waterfowl.[34] Neolithic hunters in locations as far apart as the Caribbean,[35] Scandinavia,[36] Egypt,[37] Switzerland,[38] and China relied on ducks as a source of protein for some or all of the year.[39] Archeological evidence shows that Māori people in New Zealand hunted the flightless Finsch's duck, possibly to extinction, though rat predation may also have contributed to its fate.[40] A similar end awaited the Chatham duck, a species with reduced flying capabilities which went extinct shortly after its island was colonised by Polynesian settlers.[41] It is probable that duck eggs were gathered by Neolithic hunter-gathers as well, though hard evidence of this is uncommon.[35][42]
|
||||
|
||||
In many areas, wild ducks (including ducks farmed and released into the wild) are hunted for food or sport,[43] by shooting, or by being trapped using duck decoys. Because an idle floating duck or a duck squatting on land cannot react to fly or move quickly, "a sitting duck" has come to mean "an easy target". These ducks may be contaminated by pollutants such as PCBs.[44]
|
||||
|
||||
### Domestication
|
||||
|
||||
Main article: Domestic duck
|
||||
|
||||
Indian Runner ducks, a common breed of domestic ducks
|
||||
|
||||
<!-- image -->
|
||||
@ -368,6 +396,7 @@ The 1992 Disney film The Mighty Ducks, starring Emilio Estevez, chose the duck a
|
||||
## See also
|
||||
|
||||
- Birds portal
|
||||
<!-- image -->
|
||||
|
||||
- Domestic duck
|
||||
- Duck as food
|
||||
@ -382,106 +411,114 @@ The 1992 Disney film The Mighty Ducks, starring Emilio Estevez, chose the duck a
|
||||
|
||||
1. ^ "Duckling". The American Heritage Dictionary of the English Language, Fourth Edition. Houghton Mifflin Company. 2006. Retrieved 2015-05-22.
|
||||
2. ^ "Duckling". Kernerman English Multilingual Dictionary (Beta Version). K. Dictionaries Ltd. 2000–2006. Retrieved 2015-05-22.
|
||||
3. ^ Dohner, Janet Vorwald (2001). The Encyclopedia of Historic and Endangered Livestock and Poultry Breeds. Yale University Press. ISBN 978-0300138139.
|
||||
4. ^ Visca, Curt; Visca, Kelley (2003). How to Draw Cartoon Birds. The Rosen Publishing Group. ISBN 9780823961566.
|
||||
5. ^ a b c d Carboneras 1992, p. 536.
|
||||
6. ^ Livezey 1986, pp. 737–738.
|
||||
7. ^ Madsen, McHugh & de Kloet 1988, p. 452.
|
||||
8. ^ Donne-Goussé, Laudet & Hänni 2002, pp. 353–354.
|
||||
9. ^ a b c d e f Carboneras 1992, p. 540.
|
||||
10. ^ Elphick, Dunning & Sibley 2001, p. 191.
|
||||
11. ^ Kear 2005, p. 448.
|
||||
12. ^ Kear 2005, p. 622–623.
|
||||
13. ^ Kear 2005, p. 686.
|
||||
14. ^ Elphick, Dunning & Sibley 2001, p. 193.
|
||||
15. ^ a b c d e f g Carboneras 1992, p. 537.
|
||||
16. ^ American Ornithologists' Union 1998, p. xix.
|
||||
3. ^ Dohner, Janet Vorwald (2001). The Encyclopedia of Historic and Endangered Livestock and Poultry Breeds. Yale University Press. ISBN 978-0300138139.
|
||||
4. ^ Visca, Curt; Visca, Kelley (2003). How to Draw Cartoon Birds. The Rosen Publishing Group. ISBN 9780823961566.
|
||||
5. ^ a b c d Carboneras 1992, p. 536.
|
||||
6. ^ Livezey 1986, pp. 737–738.
|
||||
7. ^ Madsen, McHugh & de Kloet 1988, p. 452.
|
||||
8. ^ Donne-Goussé, Laudet & Hänni 2002, pp. 353–354.
|
||||
9. ^ a b c d e f Carboneras 1992, p. 540.
|
||||
10. ^ Elphick, Dunning & Sibley 2001, p. 191.
|
||||
11. ^ Kear 2005, p. 448.
|
||||
12. ^ Kear 2005, p. 622–623.
|
||||
13. ^ Kear 2005, p. 686.
|
||||
14. ^ Elphick, Dunning & Sibley 2001, p. 193.
|
||||
15. ^ a b c d e f g Carboneras 1992, p. 537.
|
||||
16. ^ American Ornithologists' Union 1998, p. xix.
|
||||
17. ^ American Ornithologists' Union 1998.
|
||||
18. ^ Carboneras 1992, p. 538.
|
||||
19. ^ Christidis & Boles 2008, p. 62.
|
||||
20. ^ Shirihai 2008, pp. 239, 245.
|
||||
21. ^ a b Pratt, Bruner & Berrett 1987, pp. 98–107.
|
||||
22. ^ Fitter, Fitter & Hosking 2000, pp. 52–3.
|
||||
18. ^ Carboneras 1992, p. 538.
|
||||
19. ^ Christidis & Boles 2008, p. 62.
|
||||
20. ^ Shirihai 2008, pp. 239, 245.
|
||||
21. ^ a b Pratt, Bruner & Berrett 1987, pp. 98–107.
|
||||
22. ^ Fitter, Fitter & Hosking 2000, pp. 52–3.
|
||||
23. ^ "Pacific Black Duck". www.wiresnr.org. Retrieved 2018-04-27.
|
||||
24. ^ Ogden, Evans. "Dabbling Ducks". CWE. Retrieved 2006-11-02.
|
||||
25. ^ Karl Mathiesen (16 March 2015). "Don't feed the ducks bread, say conservationists". The Guardian. Retrieved 13 November 2016.
|
||||
26. ^ Rohwer, Frank C.; Anderson, Michael G. (1988). "Female-Biased Philopatry, Monogamy, and the Timing of Pair Formation in Migratory Waterfowl". Current Ornithology. pp. 187–221. doi:10.1007/978-1-4615-6787-5\_4. ISBN 978-1-4615-6789-9.
|
||||
26. ^ Rohwer, Frank C.; Anderson, Michael G. (1988). "Female-Biased Philopatry, Monogamy, and the Timing of Pair Formation in Migratory Waterfowl". Current Ornithology. pp. 187–221. doi:10.1007/978-1-4615-6787-5\_4. ISBN 978-1-4615-6789-9.
|
||||
27. ^ Smith, Cyndi M.; Cooke, Fred; Robertson, Gregory J.; Goudie, R. Ian; Boyd, W. Sean (2000). "Long-Term Pair Bonds in Harlequin Ducks". The Condor. 102 (1): 201–205. doi:10.1093/condor/102.1.201. hdl:10315/13797.
|
||||
28. ^ "If You Find An Orphaned Duckling - Wildlife Rehabber". wildliferehabber.com. Archived from the original on 2018-09-23. Retrieved 2018-12-22.
|
||||
29. ^ Carver, Heather (2011). The Duck Bible. Lulu.com. ISBN 9780557901562.[self-published source]
|
||||
30. ^ Titlow, Budd (2013-09-03). Bird Brains: Inside the Strange Minds of Our Fine Feathered Friends. Rowman & Littlefield. ISBN 9780762797707.
|
||||
29. ^ Carver, Heather (2011). The Duck Bible. Lulu.com. ISBN 9780557901562.[self-published source]
|
||||
30. ^ Titlow, Budd (2013-09-03). Bird Brains: Inside the Strange Minds of Our Fine Feathered Friends. Rowman & Littlefield. ISBN 9780762797707.
|
||||
31. ^ Amos, Jonathan (2003-09-08). "Sound science is quackers". BBC News. Retrieved 2006-11-02.
|
||||
32. ^ "Mythbusters Episode 8". 12 December 2003.
|
||||
33. ^ Erlandson 1994, p. 171.
|
||||
34. ^ Jeffries 2008, pp. 168, 243.
|
||||
35. ^ a b Sued-Badillo 2003, p. 65.
|
||||
36. ^ Thorpe 1996, p. 68.
|
||||
37. ^ Maisels 1999, p. 42.
|
||||
38. ^ Rau 1876, p. 133.
|
||||
39. ^ Higman 2012, p. 23.
|
||||
40. ^ Hume 2012, p. 53.
|
||||
41. ^ Hume 2012, p. 52.
|
||||
42. ^ Fieldhouse 2002, p. 167.
|
||||
43. ^ Livingston, A. D. (1998-01-01). Guide to Edible Plants and Animals. Wordsworth Editions, Limited. ISBN 9781853263774.
|
||||
44. ^ "Study plan for waterfowl injury assessment: Determining PCB concentrations in Hudson river resident waterfowl" (PDF). New York State Department of Environmental Conservation. US Department of Commerce. December 2008. p. 3. Archived (PDF) from the original on 2022-10-09. Retrieved 2 July 2019.
|
||||
33. ^ Erlandson 1994, p. 171.
|
||||
34. ^ Jeffries 2008, pp. 168, 243.
|
||||
35. ^ a b Sued-Badillo 2003, p. 65.
|
||||
36. ^ Thorpe 1996, p. 68.
|
||||
37. ^ Maisels 1999, p. 42.
|
||||
38. ^ Rau 1876, p. 133.
|
||||
39. ^ Higman 2012, p. 23.
|
||||
40. ^ Hume 2012, p. 53.
|
||||
41. ^ Hume 2012, p. 52.
|
||||
42. ^ Fieldhouse 2002, p. 167.
|
||||
43. ^ Livingston, A. D. (1998-01-01). Guide to Edible Plants and Animals. Wordsworth Editions, Limited. ISBN 9781853263774.
|
||||
44. ^ "Study plan for waterfowl injury assessment: Determining PCB concentrations in Hudson river resident waterfowl" (PDF). New York State Department of Environmental Conservation. US Department of Commerce. December 2008. p. 3. Archived (PDF) from the original on 2022-10-09. Retrieved 2 July 2019.
|
||||
45. ^ "FAOSTAT". www.fao.org. Retrieved 2019-10-25.
|
||||
46. ^ "Anas platyrhynchos, Domestic Duck; DigiMorph Staff - The University of Texas at Austin". Digimorph.org. Retrieved 2012-12-23.
|
||||
47. ^ Sy Montgomery. "Mallard; Encyclopædia Britannica". Britannica.com. Retrieved 2012-12-23.
|
||||
48. ^ Glenday, Craig (2014). Guinness World Records. Guinness World Records Limited. pp. 135. ISBN 978-1-908843-15-9.
|
||||
49. ^ Suomen kunnallisvaakunat (in Finnish). Suomen Kunnallisliitto. 1982. p. 147. ISBN 951-773-085-3.
|
||||
48. ^ Glenday, Craig (2014). Guinness World Records. Guinness World Records Limited. pp. 135. ISBN 978-1-908843-15-9.
|
||||
49. ^ Suomen kunnallisvaakunat (in Finnish). Suomen Kunnallisliitto. 1982. p. 147. ISBN 951-773-085-3.
|
||||
50. ^ "Lubānas simbolika" (in Latvian). Retrieved September 9, 2021.
|
||||
51. ^ "Föglö" (in Swedish). Retrieved September 9, 2021.
|
||||
52. ^ Young, Emma. "World's funniest joke revealed". New Scientist. Retrieved 7 January 2019.
|
||||
53. ^ "Howard the Duck (character)". Grand Comics Database.
|
||||
54. ^ Sanderson, Peter; Gilbert, Laura (2008). "1970s". Marvel Chronicle A Year by Year History. London, United Kingdom: Dorling Kindersley. p. 161. ISBN 978-0756641238. December saw the debut of the cigar-smoking Howard the Duck. In this story by writer Steve Gerber and artist Val Mayerik, various beings from different realities had begun turning up in the Man-Thing's Florida swamp, including this bad-tempered talking duck.
|
||||
54. ^ Sanderson, Peter; Gilbert, Laura (2008). "1970s". Marvel Chronicle A Year by Year History. London, United Kingdom: Dorling Kindersley. p. 161. ISBN 978-0756641238. December saw the debut of the cigar-smoking Howard the Duck. In this story by writer Steve Gerber and artist Val Mayerik, various beings from different realities had begun turning up in the Man-Thing's Florida swamp, including this bad-tempered talking duck.
|
||||
55. ^ "The Duck". University of Oregon Athletics. Retrieved 2022-01-20.
|
||||
|
||||
### Sources
|
||||
|
||||
- American Ornithologists' Union (1998). Checklist of North American Birds (PDF). Washington, DC: American Ornithologists' Union. ISBN 978-1-891276-00-2. Archived (PDF) from the original on 2022-10-09.
|
||||
- Carboneras, Carlos (1992). del Hoyo, Josep; Elliott, Andrew; Sargatal, Jordi (eds.). Handbook of the Birds of the World. Vol. 1: Ostrich to Ducks. Barcelona: Lynx Edicions. ISBN 978-84-87334-10-8.
|
||||
- Christidis, Les; Boles, Walter E., eds. (2008). Systematics and Taxonomy of Australian Birds. Collingwood, VIC: Csiro Publishing. ISBN 978-0-643-06511-6.
|
||||
- Donne-Goussé, Carole; Laudet, Vincent; Hänni, Catherine (July 2002). "A molecular phylogeny of Anseriformes based on mitochondrial DNA analysis". Molecular Phylogenetics and Evolution. 23 (3): 339–356. Bibcode:2002MolPE..23..339D. doi:10.1016/S1055-7903(02)00019-2. PMID 12099792.
|
||||
- Elphick, Chris; Dunning, John B. Jr.; Sibley, David, eds. (2001). The Sibley Guide to Bird Life and Behaviour. London: Christopher Helm. ISBN 978-0-7136-6250-4.
|
||||
- Erlandson, Jon M. (1994). Early Hunter-Gatherers of the California Coast. New York, NY: Springer Science & Business Media. ISBN 978-1-4419-3231-0.
|
||||
- Fieldhouse, Paul (2002). Food, Feasts, and Faith: An Encyclopedia of Food Culture in World Religions. Vol. I: A–K. Santa Barbara: ABC-CLIO. ISBN 978-1-61069-412-4.
|
||||
- Fitter, Julian; Fitter, Daniel; Hosking, David (2000). Wildlife of the Galápagos. Princeton, NJ: Princeton University Press. ISBN 978-0-691-10295-5.
|
||||
- Higman, B. W. (2012). How Food Made History. Chichester, UK: John Wiley & Sons. ISBN 978-1-4051-8947-7.
|
||||
- Hume, Julian H. (2012). Extinct Birds. London: Christopher Helm. ISBN 978-1-4729-3744-5.
|
||||
- Jeffries, Richard (2008). Holocene Hunter-Gatherers of the Lower Ohio River Valley. Tuscaloosa: University of Alabama Press. ISBN 978-0-8173-1658-7.
|
||||
- Kear, Janet, ed. (2005). Ducks, Geese and Swans: Species Accounts (Cairina to Mergus). Bird Families of the World. Oxford: Oxford University Press. ISBN 978-0-19-861009-0.
|
||||
- American Ornithologists' Union (1998). Checklist of North American Birds (PDF). Washington, DC: American Ornithologists' Union. ISBN 978-1-891276-00-2. Archived (PDF) from the original on 2022-10-09.
|
||||
- Carboneras, Carlos (1992). del Hoyo, Josep; Elliott, Andrew; Sargatal, Jordi (eds.). Handbook of the Birds of the World. Vol. 1: Ostrich to Ducks. Barcelona: Lynx Edicions. ISBN 978-84-87334-10-8.
|
||||
- Christidis, Les; Boles, Walter E., eds. (2008). Systematics and Taxonomy of Australian Birds. Collingwood, VIC: Csiro Publishing. ISBN 978-0-643-06511-6.
|
||||
- Donne-Goussé, Carole; Laudet, Vincent; Hänni, Catherine (July 2002). "A molecular phylogeny of Anseriformes based on mitochondrial DNA analysis". Molecular Phylogenetics and Evolution. 23 (3): 339–356. Bibcode:2002MolPE..23..339D. doi:10.1016/S1055-7903(02)00019-2. PMID 12099792.
|
||||
- Elphick, Chris; Dunning, John B. Jr.; Sibley, David, eds. (2001). The Sibley Guide to Bird Life and Behaviour. London: Christopher Helm. ISBN 978-0-7136-6250-4.
|
||||
- Erlandson, Jon M. (1994). Early Hunter-Gatherers of the California Coast. New York, NY: Springer Science & Business Media. ISBN 978-1-4419-3231-0.
|
||||
- Fieldhouse, Paul (2002). Food, Feasts, and Faith: An Encyclopedia of Food Culture in World Religions. Vol. I: A–K. Santa Barbara: ABC-CLIO. ISBN 978-1-61069-412-4.
|
||||
- Fitter, Julian; Fitter, Daniel; Hosking, David (2000). Wildlife of the Galápagos. Princeton, NJ: Princeton University Press. ISBN 978-0-691-10295-5.
|
||||
- Higman, B. W. (2012). How Food Made History. Chichester, UK: John Wiley & Sons. ISBN 978-1-4051-8947-7.
|
||||
- Hume, Julian H. (2012). Extinct Birds. London: Christopher Helm. ISBN 978-1-4729-3744-5.
|
||||
- Jeffries, Richard (2008). Holocene Hunter-Gatherers of the Lower Ohio River Valley. Tuscaloosa: University of Alabama Press. ISBN 978-0-8173-1658-7.
|
||||
- Kear, Janet, ed. (2005). Ducks, Geese and Swans: Species Accounts (Cairina to Mergus). Bird Families of the World. Oxford: Oxford University Press. ISBN 978-0-19-861009-0.
|
||||
- Livezey, Bradley C. (October 1986). "A phylogenetic analysis of recent Anseriform genera using morphological characters" (PDF). The Auk. 103 (4): 737–754. doi:10.1093/auk/103.4.737. Archived (PDF) from the original on 2022-10-09.
|
||||
- Madsen, Cort S.; McHugh, Kevin P.; de Kloet, Siwo R. (July 1988). "A partial classification of waterfowl (Anatidae) based on single-copy DNA" (PDF). The Auk. 105 (3): 452–459. doi:10.1093/auk/105.3.452. Archived (PDF) from the original on 2022-10-09.
|
||||
- Maisels, Charles Keith (1999). Early Civilizations of the Old World. London: Routledge. ISBN 978-0-415-10975-8.
|
||||
- Pratt, H. Douglas; Bruner, Phillip L.; Berrett, Delwyn G. (1987). A Field Guide to the Birds of Hawaii and the Tropical Pacific. Princeton, NJ: Princeton University Press. ISBN 0-691-02399-9.
|
||||
- Rau, Charles (1876). Early Man in Europe. New York: Harper & Brothers. LCCN 05040168.
|
||||
- Shirihai, Hadoram (2008). A Complete Guide to Antarctic Wildlife. Princeton, NJ, US: Princeton University Press. ISBN 978-0-691-13666-0.
|
||||
- Sued-Badillo, Jalil (2003). Autochthonous Societies. General History of the Caribbean. Paris: UNESCO. ISBN 978-92-3-103832-7.
|
||||
- Thorpe, I. J. (1996). The Origins of Agriculture in Europe. New York: Routledge. ISBN 978-0-415-08009-5.
|
||||
- Maisels, Charles Keith (1999). Early Civilizations of the Old World. London: Routledge. ISBN 978-0-415-10975-8.
|
||||
- Pratt, H. Douglas; Bruner, Phillip L.; Berrett, Delwyn G. (1987). A Field Guide to the Birds of Hawaii and the Tropical Pacific. Princeton, NJ: Princeton University Press. ISBN 0-691-02399-9.
|
||||
- Rau, Charles (1876). Early Man in Europe. New York: Harper & Brothers. LCCN 05040168.
|
||||
- Shirihai, Hadoram (2008). A Complete Guide to Antarctic Wildlife. Princeton, NJ, US: Princeton University Press. ISBN 978-0-691-13666-0.
|
||||
- Sued-Badillo, Jalil (2003). Autochthonous Societies. General History of the Caribbean. Paris: UNESCO. ISBN 978-92-3-103832-7.
|
||||
- Thorpe, I. J. (1996). The Origins of Agriculture in Europe. New York: Routledge. ISBN 978-0-415-08009-5.
|
||||
|
||||
## External links
|
||||
|
||||
Duck at Wikipedia's sister projects
|
||||
|
||||
- Definitions from Wiktionary
|
||||
<!-- image -->
|
||||
- Media from Commons
|
||||
<!-- image -->
|
||||
- Quotations from Wikiquote
|
||||
<!-- image -->
|
||||
- Recipes from Wikibooks
|
||||
<!-- image -->
|
||||
- Taxa from Wikispecies
|
||||
<!-- image -->
|
||||
- Data from Wikidata
|
||||
<!-- image -->
|
||||
|
||||
- list of books (useful looking abstracts)
|
||||
- Ducks on postage stamps Archived 2013-05-13 at the Wayback Machine
|
||||
- Ducks at a Distance, by Rob Hines at Project Gutenberg - A modern illustrated guide to identification of US waterfowl
|
||||
|
||||
<!-- image -->
|
||||
|
||||
| Authority control databases | Authority control databases |
|
||||
|--------------------------------|----------------------------------------------|
|
||||
| National | United StatesFranceBnF dataJapanLatviaIsrael |
|
||||
| Other | IdRef |
|
||||
|
||||
<!-- image -->
|
||||
Retrieved from "https://en.wikipedia.org/w/index.php?title=Duck&oldid=1246843351"
|
||||
|
||||
Retrieved from ""
|
||||
|
||||
:
|
||||
Categories:
|
||||
|
||||
- Ducks
|
||||
- Game birds
|
||||
@ -516,9 +553,8 @@ Hidden categories:
|
||||
- Articles with Project Gutenberg links
|
||||
- Articles containing video clips
|
||||
|
||||
- This page was last edited on 21 September 2024, at 12:11 (UTC).
|
||||
- Text is available under the Creative Commons Attribution-ShareAlike License 4.0;
|
||||
additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
|
||||
- This page was last edited on 21 September 2024, at 12:11 (UTC).
|
||||
- Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
|
||||
|
||||
- Privacy policy
|
||||
- About Wikipedia
|
||||
@ -529,3 +565,10 @@ additional terms may apply. By using this site, you agree to the Terms of Use an
|
||||
- Statistics
|
||||
- Cookie statement
|
||||
- Mobile view
|
||||
|
||||
Wikimedia Foundation
|
||||
|
||||
<!-- image -->
|
||||
Powered by MediaWiki
|
||||
|
||||
<!-- image -->
|
21
tests/data/html/example_09.html
vendored
Normal file
21
tests/data/html/example_09.html
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
<html>
|
||||
<body>
|
||||
<h1>Introduction to parsing HTML files with <img src="https://docling-project.github.io/docling/assets/logo.png" alt="Docling" height="64"> Docling</h1>
|
||||
<p>Docling simplifies document processing, parsing diverse formats — including HTML — and providing seamless integrations with the gen AI ecosystem.</p>
|
||||
<h2>Supported file formats</h2>
|
||||
<p>Docling supports multiple file formats..</p>
|
||||
<ul>
|
||||
<li><img src="https://github.com/docling-project/docling/tree/main/docs/assets/pdf.png" height="32" alt="PDF">Advanced PDF understanding</li>
|
||||
<li><img src="https://github.com/docling-project/docling/tree/main/docs/assets/docx.png" height="32" alt="DOCX">Microsoft Office DOCX</li>
|
||||
<li><img src="https://github.com/docling-project/docling/tree/main/docs/assets/html.png" height="32" alt="HTML">HTML files (with optional support for images)</li>
|
||||
</ul>
|
||||
<h3>Three backends for handling HTML files</h3>
|
||||
<p>Docling has three backends for parsing HTML files:</p>
|
||||
<ol>
|
||||
<li><b>HTMLDocumentBackend</b> Ignores images</li>
|
||||
<li><b>HTMLDocumentBackendImagesInline</b> Extracts images inline</li>
|
||||
<li><b>HTMLDocumentBackendImagesReferenced</b> Extracts images as references</li>
|
||||
</ol>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,8 +1,6 @@
|
||||
from io import BytesIO
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from docling.backend.html_backend import HTMLDocumentBackend
|
||||
from docling.datamodel.base_models import InputFormat
|
||||
from docling.datamodel.document import (
|
||||
@ -37,17 +35,15 @@ def test_heading_levels():
|
||||
if isinstance(item, SectionHeaderItem):
|
||||
if item.text == "Etymology":
|
||||
found_lvl_1 = True
|
||||
# h2 becomes level 1 because of h1 as title
|
||||
assert item.level == 1
|
||||
elif item.text == "Feeding":
|
||||
found_lvl_2 = True
|
||||
# h3 becomes level 2 because of h1 as title
|
||||
assert item.level == 2
|
||||
assert found_lvl_1 and found_lvl_2
|
||||
|
||||
|
||||
@pytest.mark.skip(
|
||||
"Temporarily disabled since docling-core>=2.21.0 does not support ordered lists "
|
||||
"with custom start value"
|
||||
)
|
||||
def test_ordered_lists():
|
||||
test_set: list[tuple[bytes, str]] = []
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user